Post-Purchase Upsell & Cross-Sell

Changelog

2.9.2 · 3.9.2 · 4.9.213 September 2026Current
Changed
  • The preview's trigger product can now be chosen for category and manufacturer campaigns and for campaigns that apply to every eligible order, regardless of the offer source.
  • Cross-selling previews require a selected trigger product.
Fixed
  • Only trigger products that match the campaign's trigger can be selected in the preview.
  • The cross-selling preview shows a notice when the search is incomplete, and stays usable.
2.9.1 · 3.9.1 · 4.9.110 September 2026
New
  • Existing and new cross-sellings as an offer source, with flexible configuration.
  • Three preview views of the offer page: Current, Maximal and Minimal.
  • The activity overview shows the trigger product and, where applicable, the cross-selling used.
  • Configurable time limit for the offer search after purchase.
Changed
  • Improved random product selection from Dynamic Product Groups.
  • The trigger product can now be shown on the offer page for all campaign types.
2.8.0 · 3.8.0 · 4.8.03 September 2026

You can now choose a fixed product or a Dynamic Product Group as the offer source for a campaign. The release also adds analytics by offer product and a preview on the selected storefront domain.

New
  • Dynamic Product Groups as an offer source: a campaign offers either one fixed product or a product from a Shopware Dynamic Product Group; one available product from the group is selected for each order.
  • A shown offer keeps its product until it expires, even if the campaign is edited in the meantime.
  • The offer page preview opens on the selected storefront domain, optionally with a specific preview product; domains whose sales channel cannot show the offer appear greyed out, with the reason shown on hover.
  • Analytics by offer product: a table shows which offer products from a campaign were shown and accepted during the period.
Changed
  • The offer-source check on the Health tab now covers fixed products and Dynamic Product Groups.
2.7.0 · 3.7.0 · 4.7.01 September 2026

The new Revenue potential tab shows what share of your orders is eligible for an add-on offer and estimates the additional revenue. It also introduces a simpler permission model.

New
  • Revenue potential: a new tab showing what share of orders is eligible for an add-on offer, and an estimate of the additional revenue.
  • Support per payment method, including those that work only for some orders, so any gap is visible.
  • The estimate for the selected period uses an adjustable add-on amount and acceptance rate.
Changed
  • Simpler permissions: the View permission, which now includes reading orders, is sufficient for every tab of the extension; Release ERP exports has a separate switch under Additional permissions. Roles last saved before this update must be opened and saved once – the ERP Export and Revenue potential tabs then appear.
2.6.1 · 3.6.1 · 4.6.126 August 2026

The offer page now follows the shop theme, plus a gallery fix.

Fixed
  • The offer page now takes colours, corner radii and borders from the shop theme.
  • Double-clicking the arrows in the zoom view or the thumbnails no longer selects text.
2.6.0 · 3.6.0 · 4.6.025 August 2026

The offer page shows all product images as a gallery with a zoom view; the offer card is leaner, and the header shows only the shop logo.

New
  • Image gallery on the offer page: all product images with thumbnails, swipe gestures and a zoom view.
Changed
  • Leaner offer card: the subline and the short benefit are hidden by default and can be re-enabled per Shopping Experiences layout.
  • The header now shows only the shop logo.
  • Preview: a small chip in the header replaces the previous bar at the top of the page.
  • Larger product photos on phones; the offer card stays the same height while customers browse the gallery.
2.5.0 · 3.5.0 · 4.5.019 August 2026

The discount line item of an accepted offer can carry its own product number, which an ERP can use to map the line item.

New
  • New "Product number for the discount line item" setting: the discount line item of an accepted offer can now carry its own product number, which an ERP can use to map the line item.
2.4.0 · 3.4.0 · 4.4.018 August 2026

An ERP can also wait via a separate Administration user account, the short benefit can be hidden per layout, and the offer content keeps the header and page edges clean.

New
  • An ERP that signs in with a username and password instead of an integration can now wait for orders via a separate Shopware Administration user account.
  • New "Show short benefit" switch: the short benefit below the offered product's name ("Selected to match this order.") can now be hidden per Shopping Experiences layout. Existing layouts keep showing it.
Changed
  • One page edge for the offer content: the offer content now aligns with the same page edges as every other shop page – at all screen widths, and also in Shopping Experiences layouts. Of the offer block's margins in the layout editor, only the bottom one still applies.
  • Preview links from the campaign editor are now valid for 30 minutes; an expired link shows a clear notice instead of an error page.
  • Details of an order in the ERP Export tab now open via "View details".
Fixed
  • Elements that themes or extensions add to the checkout header no longer appear in the offer page header.
  • Hiding optional elements of the offer in the Shopping Experiences layout, such as the tax note or the short benefit, no longer moves the offer title down and leaves empty space above it.
2.3.0 · 3.3.0 · 4.3.018 August 2026

The acceptance confirmation email can reach additional CC and BCC recipients.

New
  • CC and BCC recipients for the acceptance confirmation email: via two new fields under "Emails, retention & advanced", a copy of the confirmation email is sent to additional addresses, for example an internal inbox, when a customer accepts an offer. CC recipients are visible to the customer; BCC recipients are not. Both fields are empty by default, so nothing changes until you use them.
2.2.0 · 3.2.0 · 4.2.013 August 2026

Optional ERP export: orders with a running offer wait until the offer is finished, and a new tab shows waiting orders and orders ready for the ERP.

New
  • Optional ERP export: if an ERP or fulfilment system imports your orders, an order with an offer now waits until its offer is finished, so your ERP imports the final order and never a version that changes a moment later. Orders without an offer are ready right away. Switch it on per sales channel and choose the integration your ERP uses to import orders. Use it only with an ERP that re-checks all open orders on each run; ask your ERP partner first if you are unsure.
  • A new "ERP Export" tab under Marketing > Cross-Selling & Upselling shows every order that qualified for an offer and whether it is "Waiting" or "Ready for the ERP", next to its order status. Filter the list by order number or ERP readiness. Almost every order becomes ready on its own. If the processing of an accepted offer does not finish, the order shows "Review needed" and you can "Allow this import" once you have checked it; the "Health" tab reports how many orders need review and directs you to "ERP Export", where you can inspect the individual orders. Designated recipients get an email if one of these orders keeps waiting past the threshold – 15 minutes by default.
Changed
  • Changing the ERP export setting finishes open offers first: when you switch it on or off, or pick a different integration, open offers in the affected sales channels are finished before the new setting applies, so no offer is left unresolved. Shopware refuses the change while an accepted offer is still being processed.
Fixed
  • Date filters on the Activity tab now use the time zone configured in the Administration profile, including daylight-saving changes – displayed events no longer shift with the browser's time zone.
2.1.0 · 3.1.0 · 4.1.09 August 2026

The offer page was redesigned around the product image, placeholders in campaign copy resolve to live values, and every offer page opens by confirming the order.

New
  • Live value placeholders in campaign copy: All campaign text fields (context pill, headline, sublines, benefit text and items, both buttons) now support %price%, %savings% and %percent% alongside %product%. Values resolve at display time from the offer's actual totals, so edited prices or discounts can never leave stale numbers in your copy. %savings% and %percent% stay empty when the campaign has no discount.
  • Order-confirmation strip: Every offer page now opens with a compact strip confirming that the order has been placed – green tick, "Order complete", and a link to the order confirmation page – so the customer knows their order has been placed before any offer is made. The link only opens the order confirmation page; it never accepts or declines the offer.
Changed
  • The offer page was redesigned around the product image. When the order contains the campaign's trigger product, a compact "Your order includes" card, a plus connector and the image-first offer panel form one visual bundle; without a trigger product the offer card stands alone with the same width and height as in the paired layout – at every desktop width, and also inside Shopping Experiences layouts. Decorative shadows and hardcoded corner radii are gone: corners now follow your theme's radius settings, so the page renders flat on a flat theme and rounded on a rounded one.
  • The "Fits your order" recommendation badge is now off by default. On the built-in page there is no switch for it; in a Shopping Experiences layout the element's "Show recommendation badge" option brings it back. Existing layouts keep their saved setting.
  • Offers appear only for orders that can still change. A cancelled or completed order, or one whose payment was refunded or voided, no longer shows an offer page – the customer lands on the normal order confirmation page instead. The same applies when the storefront context no longer matches the order, for example after a currency switch.
  • The offer-page address changed to /cwk-post-purchase-offer/. Links using the previous address keep working.
  • Customer-facing default copy was revised in both languages, including the strip title, the reassurance line and the fallback for the context pill. The German mail-template naming is updated by a migration that only touches the stock wording – customised template names and descriptions are never overwritten.
  • Theme note: If your theme overrides offer.html.twig or _bundle-offer-experience.html.twig, re-sync the override to render the full redesign. Stale overrides degrade gracefully in the meantime.
Fixed
  • Graduated (tier) prices: The whole offer – discount, struck-through price and savings percentage – is now calculated from the price tier that actually applies to the customer, not from the quantity-1 price. A safety net verifies the price basis before any payment is taken and before the order is changed; on a mismatch the acceptance is refused, and a shift detected only after a capture triggers an automatic refund.
  • The campaign list's product and campaign pickers now rank results by search relevance instead of alphabetically, so the product or campaign you search for is found even in a large catalogue.
  • Variants in the campaign list filters now show their option values, so two variants of the same parent product are distinguishable.
  • "Reset filters" now works from the filtered empty state after a page reload.
  • An offer whose payment was already attempted can no longer be reopened by returning from a cancelled PayPal checkout.
  • Product images without a file no longer render as an empty image, and alt text stored for the media now takes precedence over the product name on the offer and context images.
2.0.3 · 3.0.3 · 4.0.310 July 2026

New campaigns save reliably after a preview; the campaign list now labels the acceptance column consistently.

Fixed
  • Opening the offer-page preview (or the page builder) on a campaign that had never been saved created the campaign, but the admin stayed on the create screen – every further save attempt failed with an error notification. After such a first save the admin now switches to the saved campaign, and later saves work as expected.
  • The acceptance-count column in the campaign list is now labelled "Accepted" – matching the analytics and activity wording. It previously said "Accepts".
2.0.2 · 3.0.2 · 4.0.29 July 2026

Variants are now unambiguous on the offer page.

Fixed
  • When the offer product or the trigger product is a variant, the corresponding card on the offer page now shows its option values (e.g. Colour: Red | Size: XL) under the product name – in the sales-channel language and in the same wording as order line items. Simple products are unchanged.
2.0.1 · 3.0.1 · 4.0.19 July 2026

Variants can now be found and selected directly in every campaign product picker, plus mobile polish on the offer page.

Fixed
  • The trigger product and excluded products fields now find individual variants by search and show them with their option values (e.g. Colour: Red, Size: M) – the same way the offer product field already did. A parent product still applies to all of its variants; an individual variant can also be selected as the trigger product or under excluded products.
  • The plus between the context card and the offer card keeps the desktop design on phones and narrow tablets (green, with connector lines into both cards).
  • The product name in the context card is one step smaller on phones, so the card keeps its hierarchy.
New
  • Product numbers in every product picker, so products that share a name can be told apart.
  • The help text on the trigger product field explains how parent products and individual variants interact.
2.0.0 · 3.0.0 · 4.0.08 July 2026

The first Shopware Store release. The extension now ships in platform-bound version lines – 2.x for Shopware 6.5 (6.5.8+), 3.x for 6.6, 4.x for 6.7 – with the same feature set; the Shopware Store delivers the matching line automatically.

New
  • Shopware 6.5 is supported (6.5.8+) – see the Version notes for the few 6.5 specifics.
  • The Activity tab: a per-order feed with an outcome (Shown / Accepted / Declined / Not applied / Failed / Suppressed), plain-language suppression reasons and "Copy technical details" for support.
  • Live preview of the offer page straight from the campaign – per sales channel and language, with both text variants (One-click / Quick confirmation), no test order needed.
  • All fields under Storefront text are editable per campaign and language: context pill, headline, two sublines, short benefit, benefit list and both button texts, with the %product% and %price% placeholders.
  • Offers on saved PayPal cards (ACDC): the same silent recharge as the wallet; without a saved card no offer is shown, deliberately.
  • Richer analytics: campaign and sales-channel filters, a revenue-per-day chart, and the Average upsell value and Revenue per 100 orders KPIs.
  • A per-campaign Cart promotions policy: suppress safely (default) or stack and calculate the actual add-on amount.
Changed
  • The extension is now named Post-Purchase Cross-Selling & Upselling for merchants.
  • The campaign detail is organised into three tabs (Campaign / Offer / Handling), with the Ready to go live? strip; new campaigns start inactive.
  • The offer page was redesigned: a context card next to the offer card, a reassurance strip, pinned actions on mobile. The separate bundle layout was folded into the unified layout – the context card now shows the purchased product.
  • Campaigns with a more specific trigger now win first (product before category/manufacturer before "Always (any order)"); priority decides within the same tier.
  • The internal campaign name is translatable per language.
1.1.611 June 2026

Stability and safety update. No change to the normal flow. It hardens edge cases around payment, concurrent orders and refunds.

Fixed
  • PayPal add-on amounts now reliably appear as their own transaction on the order, so they can be refunded.
  • Errors loading Analytics and Health show a notice instead of a blank page.
  • Under concurrent requests an offer is no longer wrongly reported as "already added".
1.1.228 May 2026
Changed
  • The offer page can now be designed freely via Shopping Experiences.
1.1.012 May 2026
New
  • Bundle offers: source product and add-on side by side, with a savings note.
  • Per-campaign analytics: Shown, Accepted, Acceptance rate and Added revenue.