Configuration reference
Technical reference for Ultimate Upsell Engine: plugin settings, placement slots, CMS elements, entities and permissions. For step-by-step instructions see the tutorial and the how-to guides.
Plugin settings
Found under Extensions > My extensions > Ultimate Upsell Engine > Configuration. This table is generated from the plugin's config.xml.
General
| Setting | Type | Default | Description |
|---|---|---|---|
trackingEnabled — Enable storefront tracking | bool | true | When off, no impression/click/accept events are written and the "View stats" admin actions are hidden. |
Placement slots
Every offer renders in exactly one slot. The slot names below appear in the offer editor's Where tab and in the offer list sidebar.
| Slot | Position in the admin | Renders |
|---|---|---|
pdp_content | Below product description | Below the product description on every product page |
pdp_sticky | Next to the buy button | Next to the buy button on every product page |
cart_above_summary | Above cart summary | Above the cart summary on the shopping cart page |
cart_drawer | Inside cart drawer | Bottom of the off-canvas cart drawer |
checkout_sidebar | Checkout sidebar | Below the cart summary in the checkout sidebar — never modifies the cart |
thank_you | After order details | Below the order details on the order confirmation page |
free_shipping_bar | Free-shipping progress bar | Top of the cart drawer and the shopping cart page |
CMS elements
The plugin registers one CMS block category, Ultimate Upsell, with these elements for use in offer layouts (and any other CMS page):
| Element | Purpose | Configuration |
|---|---|---|
| Upsell product slider | Full-size product cards in a slider; extends Shopware's native product slider and inherits its styling | Products, title, slider behaviour (as the native slider) |
| Upsell product row | Compact horizontal product rows for narrow contexts (drawer, checkout sidebar, buy box) | Products, title, per-row Add-to-cart button on/off |
| Upsell CTA | Accept/dismiss buttons for an offer | Accept label, dismiss button on/off + label, button style (Primary/Secondary/Success) |
| Countdown | Deadline timer | Ends at, running label, expired label |
| Free-shipping progress bar | Progress towards a free-shipping threshold | Threshold, progress message ({remaining} placeholder), complete message |
Offer fields
| Field | Tab | Meaning |
|---|---|---|
| Name | General | Internal identifier; customers never see it |
| Internal description | General | Notes for your team; not shown on the storefront |
| Priority | General | Higher numbers render first when several offers match the same slot; default 0 |
| Active | top bar | Publish/Unpublish; a Draft offer never renders |
| Matching rules | When | Rule Builder rules; all selected rules must match; empty = everyone |
| Page / Position | Where | The placement slot (see above); exactly one per offer |
| Sales channels | Where | Limit to specific channels; empty = every channel |
| Layout | Content | The CMS page rendered by the offer |
| What this offer shows | Content | Per-slot overrides of the layout (products, texts) without changing the shared layout |
| Promotion | Promotion | Optional bundle discount as a managed Shopware Promotion |
Bundle discount (Promotion tab)
| Field | Meaning |
|---|---|
| Discount template | Bundle (% or € off when every product is in cart) — the discount applies only when all layout products are in the cart |
| Applies to (from layout) | Read-only list of the offer's layout products; edit the layout to change it |
| Discount type | Percentage or Fixed amount |
| Discount value | Percent or amount off the bundle products |
| Offer ends at | Optional end date after which the discount stops applying |
The plugin creates one managed Shopware promotion (plus its rules) per bundle offer and keeps it in sync on every save. Managed promotions that were already used in orders are deactivated instead of deleted when the offer is removed, so order history stays intact.
Entities
The plugin adds these database entities (all prefixed ssd_upsell_):
| Entity | Purpose |
|---|---|
ssd_upsell_offer | The offer: slot, priority, active state, layout reference, per-slot config; translatable name/description |
ssd_upsell_offer_rule | Mapping offer ↔ Rule Builder rules |
ssd_upsell_offer_sales_channel | Mapping offer ↔ sales channels |
ssd_upsell_auto_promotion | The bundle discount attachment and its managed promotion reference |
ssd_upsell_offer_stat | Daily aggregated statistics per offer (impressions, clicks, accepts, attributed revenue) |
ssd_upsell_event_log | Raw tracking events, aggregated into stats once a day and purged after 30 days |
A full uninstall (without keeping user data) removes these tables.
Permissions (ACL)
Under Settings > System > Users & permissions, the plugin registers the Ultimate Upsell permission group:
| Role | Allows |
|---|---|
| Viewer | See offers and statistics |
| Editor | Edit existing offers (includes Viewer) |
| Creator | Create new offers (includes Viewer, Editor) |
| Deleter | Delete offers (includes Viewer) |
Tracking and privacy
- Impression/click/accept events require the shopper's consent to the Site engagement analytics cookie, which the plugin adds to the storefront consent banner's "Statistical" group.
- Revenue attribution stamps the offer id onto cart line items as first-party order data; it does not depend on the cookie.
- Raw events are aggregated into daily statistics once a day and deleted after 30 days. The daily aggregates carry no personal data.
- The
trackingEnabledsetting switches all event tracking off globally.
