> For the complete documentation index, see [llms.txt](https://docs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.akinon.com/tutorials/instore/group-product-set-product-experience.md).

# Group Product (Set Product) Experience

How set products made up of multiple pieces are listed, selected, and added to the basket in Instore — together with the pricing logic, stock scenarios, and brand-level display settings behind them.

### <mark style="color:red;">Overview</mark>

Some products ("sets" or "bundles") are sold as a single main product but contain several sub-items — for example, a "Sardes Dining Room Set" is made up of a table and chairs, each a separate product. These sub-items are listed at the bottom of the product detail page as individual cards, each with its own image, feature/dimension information, variant (color/size) selection, and its own "Add to Basket" button.

{% hint style="info" %}
**THERE ARE TWO DIFFERENT WAYS TO ADD ITEMS IN THIS EXPERIENCE**

**(A) Add the full set:** The main "Add to Basket" button at the top of the page automatically

turns into "Add to Basket (N Products)" when the product is a set, adding every sub-item

to the basket at its predefined fixed quantity.

**(B) Add individually:** Each sub-item card further down the page has its own "Add to

Basket" button — here the customer can pick a color/size and choose the quantity to add

just that one sub-item.

The three question groups in this document focus on how these two paths interact with

each other, how prices are calculated, and how stock status changes what's shown on

screen.
{% endhint %}

### <mark style="color:red;">End-to-End Flow</mark>

Below, the listing, selection, and add-to-basket steps are shown with real screenshots.

#### 2.1 Listing & Card Layout

This view can be turned on or oﬀ through brand settings. When enabled, a section titled "Setini Seç" ("Choose Your Set") appears at the bottom of the product detail page. Each sub-item gets its own card, split into four areas: image, feature/dimension information, product options (color/size), and price + add-to-basket.

The screenshots below were captured in a Turkish-language store for this walkthrough; the same page and layout are available in every supported interface language, English included.

<figure><img src="/files/K2herw5i12cPnNI5yaLE" alt=""><figcaption></figcaption></figure>

#### 2.2 Variant selection

When a card has options such as color or size, they're listed under the "Product Options" heading. Selecting an option makes the card fetch that option's current image, price, and stock status automatically. This update is specific to that card only — see Section 3 for details.

<figure><img src="/files/0xLdIMjqmiywq4kf8G7s" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WUKRVreeneX9aTsjIIB0" alt=""><figcaption></figcaption></figure>

Only the option changed: the struck-through price dropped to 11,429.00 TRY , while the active price stayed the same.Only the "door count" option was changed on this one card — as shown, that alone can genuinely change the price the card displays.

#### 2.3 Adding to basket

**Adding individually from a card:** The customer picks a quantity with the +/− buttons and clicks "Add to Basket. " If a variant selection is required and hasn't been made, a warning appears above the button instead: "Please select a variant for this product before adding it to the basket."

**Adding the full set from the top:** The main button at the top of the page adds every sub item in the set at its own fixed quantity.

### <mark style="color:red;">Pricing Logic</mark>

Based on the app's current behavior, here are definitive answers to the two questions on this topic:

#### 3.1 Does selecting a variant (color/size) change the price?

ANSWER: YES, BUT ONLY ON THAT CARD

As soon as a variant is selected, each sub-item card automatically pulls the current price and any promotion tied to that variant. So if the selected color/size is priced diﬀerently (say, a larger size costs more, or a color is on promotion), the price shown on that card updates.

{% hint style="warning" %}
**IMPORTANT LIMITATION**

The total set price shown at the top of the page is not aﬀected by this. That total is calculated from the sub-item prices as they were when the page first loaded, and does not reflect variant changes made on the cards afterward. Even if the customer switches to a pricier variant on one sub-item, the "Add to Basket (N Products)" price at the top of the page stays the same.
{% endhint %}

#### 3.2 If you add up the sub-item prices, does it match the set price?

ANSWER: THE SET PRICE ISN'T A SEPARATE FIELD — IT'S ALWAYS THE SUM OF THE SUB-ITEMS

Any price that may be set on the main (set) product itself is never shown or used on screen. The total shown at the top of the page is always calculated by multiplying each sub-item's price by its defined quantity within the set, then summing those.

<figure><img src="/files/6KPrnH3YjYwahUbARxhj" alt=""><figcaption></figcaption></figure>

If a sub-item has a basket promotion defined specifically for it, that promotional price is used in the total instead of the regular price for that item. In that case, the normal total is shown struck through at the top of the page, and the promotional total is shown as the active price.

<figure><img src="/files/4JchEurMrp2U9UG2e1XO" alt=""><figcaption></figcaption></figure>

*Values are illustrative; actual prices depend on the store catalog.*

### <mark style="color:red;">"Add Full Set" and Adding Individually</mark>

#### 4.1 Both paths lead to the same basket

Both paths ultimately use the same add-to-basket action — they're just triggered diﬀerently:

<figure><img src="/files/Wki7lphJQmQWLFmQ64AW" alt=""><figcaption></figcaption></figure>

#### 4.2 What happens if a customer adds an item individually, then clicks "Add Full Set"?

ANSWER: THERE IS CURRENTLY NO CONTROL THAT PREVENTS THIS

The app does not detect this scenario, warn the customer, or automatically merge anything. If a customer adds a sub-item to the basket individually from its card and then clicks the "Add to Basket (N Products)" button at the top, the add action for that same sub-item runs a second time.

{% hint style="warning" %}
**OUTCOME NEEDS CONFIRMATION**

Whether this ends up combining the quantities into one basket line or creating two separate lines depends on the general behavior of the basket system itself. It's confirmed that Instore has no logic on its side to prevent or merge this — so it's recommended to test and confirm the final basket outcome in a store environment.
{% endhint %}

#### 4.3 If a sub-item fails while "Add Full Set" is running

{% hint style="warning" %}
**PARTIAL ADDITIONS ARE POSSIBLE, AND NOT SEPARATELY REPORTED TO THE CUSTOMER**

The set is built by adding its sub-items one at a time, in sequence. If something goes wrong with one item along the way, the process stops and the remaining items are never attempted — but any items successfully added up to that point stay in the basket (nothing is rolled back). The customer only sees a generic error message; how many pieces of the set actually made it into the basket is not stated separately.
{% endhint %}

### <mark style="color:red;">Stock Status Scenarios</mark>

Stock is checked at two separate levels, independently of each other: the card level, and the "Add Full Set" level.

#### 5.1 Card level — when the selected variant is out of stock

* Only that card's "Add to Basket" button becomes disabled, and its label changes to "Out of Stock."
* The card's image, info area, and price are unaﬀected and do not fade — only the button and the product options change.
* An out-of-stock option (color/size) is marked with a faded look and becomes genuinely unclickable — not just styled diﬀerently. One exception: if the product team has specifically flagged that option as "selectable even when out of stock," it stays clickable; once selected, its out-of-stock status is still reflected on the button as described above.
* The upper limit on the quantity buttons is automatically set based on the selected variant's current stock count.

#### 5.2 "Add Full Set" level — when any sub-item is out of stock

ANSWER: IF A SINGLE SUB-ITEM IS OUT OF STOCK, THE FULL-SET BUTTON IS COMPLETELY BLOCKED

This check looks at the stock status of every sub-item as it was when the page first loaded. If any one of them is out of stock, the "Add to Basket (N Products)" button at the top becomes completely disabled and shows "Out of Stock."

{% hint style="warning" %}
**A CUSTOMER'S CURRENT SELECTION ON A CARD DOESN'T AFFECT THE TOP BUTTON**

The top button's stock check does not include the customer's live selections on the cards — it only reflects the state at page load. So even if the customer picks a diﬀerent, in-stock variant on that card, the "Add Full Set" button at the top stays blocked and unchanged. In this case, the customer can only add the set by adding sub-items one at a time, from their individual cards.
{% endhint %}

<figure><img src="/files/38GD7ZAqDUMYXG6j2vly" alt=""><figcaption></figcaption></figure>

### <mark style="color:red;">Brand-Level Display Settings</mark>

What information shows up in the "Product Features" and "Dimensions" areas of the sub-item cards — with what label, and in what order — is controlled by a configuration managed per brand/product type from the Omnitron panel.

**Turning this view on or oﬀ**

The card view can be toggled with a separate brand setting. When it's oﬀ, sub-items appear only as a plain list; when it's on, the card experience described in this document (image, feature/dimension info, variant selection, individual add) is enabled.

**Configuration fields**

Separate rows can be defined per product type/category from the panel. Each row has the following fields:

* **Attribute Set:** Determines which product type/category this row applies to. Rows matching a product's own type are used first; if there's no match, the system falls back to rows marked "default" (general). This lets a brand define, say, a diﬀerent layout for "Furniture" products while every other product type uses the general layout.
* **Attribute Code:** Determines which piece of product information (e.g., color, width) is shown on the card.
* **Group / Tab:** Determines which area this piece of information appears in. Only two values are valid: Product Features or Dimensions. Any other value means the row won't appear in either area — it's skipped silently, with no error.
* **Order**: The display order within the same area (ascending). Left blank, it's moved to the very front.
* **Label Override:** The heading text shown on the card. Left blank, the system automatically uses that piece of information's standard/generic name.

<figure><img src="/files/pcUReuQMpiytnd0qYTKy" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/zgj1F1hUwDJMCHWlZjlJ" alt=""><figcaption></figcaption></figure>

**PANEL ↔ CARD CORRESPONDENCE (REAL EXAMPLE)**

The "Sub-content 1" row above is exactly where the "Material: Particle Board" line comes from — the first line you see in the "Product Features" tab of the wardrobe card in Section 2.2. It appears first because its order is 1, in the "Product Features" area because Group/Tab is set to that, and with that exact label because Label Override was set to "Malzeme" ("Material").


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.akinon.com/tutorials/instore/group-product-set-product-experience.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
