> For the complete documentation index, see [llms.txt](https://docs.premsoft.de/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.premsoft.de/en/plugins/cross-selling-for-cart-and-checkout/dynamic-product-groups.md).

# Dynamic product groups

Dynamic product groups are a **standard Shopware feature** under **Catalogues → Dynamic product groups**. They define via filter rules (e. g. "manufacturer = Acme" or "category contains 'coffee'") which products belong to a group. As soon as you create a new product that matches the rule it automatically belongs to the group — no manual assignment.

The plugin uses these groups both for **trigger products** and for **cross-selling products** of a rule. That saves you ongoing maintenance.

## Where can dynamic product groups be used?

* **Trigger products:** the group decides **when** a rule fires. Example: as soon as any product from the group "Coffee machines" lies in the basket the rule kicks in.
* **Cross-selling products:** the group decides **which products** are offered. Example: every product from "Coffee beans" appears in the slider.

## Creating a new dynamic product group

1. Open **Catalogues → Dynamic product groups**.
2. Click **Add dynamic product group**.
3. Give it a clear name such as `Coffee beans — campaign`.
4. Configure the **filters**, e. g. "category equals `Coffee beans`".
5. Save the group — Shopware shows an instant preview of the matched products.

{% hint style="info" %}
Tip: filters can be combined freely. For example "manufacturer = Acme **and** price ≤ 50 €" — perfect for targeted campaigns.
{% endhint %}

## Using a group in a rule

1. Open a rule in **Cross-selling Checkout** and go to the tab **Trigger products** or **Cross-selling products**.
2. Pick the previously created group in the **Dynamic product group** field.
3. Save the rule — the group takes effect immediately.

You can also **combine** trigger lists with manual products and groups.

## Variants and dynamic groups

To detect variant products correctly the plugin checks **both the variant and its parent** against the group. A rule such as "When a T-shirt is in the basket" therefore applies to all sizes and colors of that T-shirt as long as the group matches the T-shirt itself or its variant.

## Example scenarios

| Scenario                                     | Trigger group                | Cross-selling group |
| -------------------------------------------- | ---------------------------- | ------------------- |
| "Hardware buyers get accessories"            | `Hardware`                   | `Accessories`       |
| "Beans on offer when buying coffee machines" | `Coffee machines`            | `Coffee beans`      |
| "Discount for premium customers"             | Manually picked top products | `Loyalty deal`      |
| "Seasonal campaign"                          | `Summer products`            | `Summer deal`       |

## Advantages over manual lists

* **No follow-up maintenance** when the assortment changes — new products flow in automatically.
* **Scalable** — even thousands of products are covered easily.
* **Reusable** — the same group can be used in multiple rules and even in Shopware's standard cross-selling or campaigns.

## When is a manual list better?

* When the cross-selling selection should be **curated** on purpose.
* When you want a **fixed order** in the slider — with manual lists you can pin a position per product.
* For very small campaigns with only a handful of products — there manual picking is faster than building a group.

{% hint style="info" %}
Manual lists and dynamic groups can be **combined**. For example: pin 3 top picks manually with a position, then fill the remaining slots from a group.
{% endhint %}


---

# 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.premsoft.de/en/plugins/cross-selling-for-cart-and-checkout/dynamic-product-groups.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.
