Notice Popup with Confirmation | Customer accepts before checkout
Description
Highlights
About the Extension
A customer drops a chainsaw into the basket. It only goes to adults, it comes with safety instructions, and it can only be returned unopened. All of that sits on the product page. Nobody read it, and when the complaint arrives three weeks later, it is one word against another.
The problem
Important warnings end up in the last paragraph of a product description, and hardly anyone scrolls that far before buying. Put the text into the checkout instead and every customer sees it, including the one ordering a box of screws. Neither route answers the question that matters in a dispute: did this customer see this notice before placing this order? A tick box in the storefront is not proof. It is a tick box.
The solution
You flag the products that matter with a switch on the product itself. When one of them sits in the basket, a window opens on the Complete order page and shows your notice. Submit order stays locked until the customer clicks Accept. The moment of that confirmation is written onto the order and stays there.
What's in it for you
You get proof instead of a hunch. Every affected order carries a read-only timestamp: Confirmation popup read on. Your service team sees it inside the order while handling a complaint, with no log file to dig through and no question for the developers.
Only the products that actually need it. The notice belongs to the individual product, not to the shop. The uncritical part of your range keeps flowing through checkout exactly as before, and only the flagged items stop. Variants inherit the flag from the parent product, so you never touch every colour and every size by hand.
The notice looks like your shop. The content comes from a Shopping Experiences page: headings, bullet lists, images, logos, whatever the page builder offers. No rigid text block, no line of code. Edit the page and the new wording applies from the next call.
Every sales channel gets its own rule. Layout, button variant, country exceptions and the on/off switch are stored per channel. Your trade shop can ask for confirmation while your consumer shop never shows a thing, and each one can show different wording.
Your customer never hits a dead end. In the third button variant, Reject and delete removes exactly the affected items from the basket and sends the customer back to checkout. They buy the rest instead of abandoning the order.
How the plugin works
On the product you switch on Confirmation popup. In the settings you pick the Shopping Experiences page that appears in the window, the button variant and, if you want, delivery countries that never see it. Without an assigned layout the popup stays off, which is the built-in brake against an empty window.
At checkout the plugin walks through the basket line by line. If it finds a flagged item, it locks the order button and loads the layout into the window. After Accept the button works again and the confirmation counts for this checkout. When the order goes through, the timestamp lands in a custom field on the order. The next order asks again.
Typical use cases
- Restricted and dangerous goods. Lithium batteries or aerosols that Royal Mail and DPD only carry under conditions. The customer confirms the restriction before ordering.
- Made-to-order items with no right of return. Cut to size, engraved, mixed to a recipe: the note about the lost cancellation right sits in the window, not in the small print.
- Age-restricted items. Knives, fireworks, alcohol. The customer confirms the age rule and that ID will be checked on handover.
- Delivery and installation terms. Bulky goods a carrier only brings to the kerb, or appliances that need a qualified fitter.
Technical facts for your IT team
Shopware 6.7.11 or newer (the storefront part is a Twig component built on Symfony UX, and that system only exists from this patch level), PHP 8.2 or newer. The plugin creates no tables of its own and changes no Shopware table. It adds two custom field sets: a switch on the product and a read-only date field on the order. Both are reachable through the Admin API and through imports, so you can flag a whole product group in one go.
The plugin sends no data to external servers. The confirmation lives in the customer's session until the order is placed and belongs to one checkout, never to the customer account. What remains on the order is a timestamp, not an extra piece of personal data.
Work happens at checkout only, so cached category and product pages are untouched. Errors never break the order: they go into the plugin's own log channel swp_confirmation_popup_six and the customer can carry on. For composable frontends, GET /store-api/confirmation-popup returns the full state of the current basket. Uninstall with keep user data and the fields and settings survive; without it the plugin removes its custom fields and configuration again.
To be honest
The plugin checks neither age nor identity. It asks for a confirmation and records when it happened, nothing more. The order stores the moment, not the wording: change the Shopping Experiences page later and the old text cannot be reconstructed from the order. And there is exactly one layout per sales channel, not one window per product. If you need twenty different texts for twenty product groups, this is the wrong tool. Try it on a real basket during the trial period and you will know within five minutes whether it fits your range.
Legal notice
We accept no liability for legal requirements. Please check the use of this plugin with a qualified legal advisor.
Details
- Available: English, German
- Latest update: 16 September 2026
- Publication date: 18 November 2025
- Version: 6.7.1
- Category: Checkout / Cart process
Resources
Reviews (1)
sehr schneller Support - praktische Funktion
About the Extension Partner
BuI Hinsche GmbH
Partner Status
-
Shopware
Bronze Partner -
Shopware
Premium Extension Partner
Details
- Ø-Rating: 4.3
- Partner since: 2014
- Extensions: 93
- Certifications: 2
Support
- Based in: Germany
- Speaks: German, English
- Response time: Very quickly