Withdrawal Button – EU Compliant § 356a BGB
Description
Highlights
- Legally compliant: § 356a BGB & EU Directive 2023/2673
- Two-step withdrawal process – for customers and guests without login
- Full admin management with status tracking & refund amount
- Automated reminder emails for unprocessed withdrawals
- Placement in header, footer, account, order list & CMS elements
Features
- - Legally compliant two-step withdrawal process (§ 356a BGB, EU Directive 2023/2673)
- - Withdrawal for logged-in customers AND guests (name, email, zip code)
- - Automatic display of eligible orders with remaining withdrawal days
- - Configurable withdrawal period (default 14 days, starting from order date or shipping date)
- - 5 placement options: header, footer, customer account, order list, order detail
- - Spam protection: Honeypot (invisible) or math question (CAPTCHA)
- - Optional reason field in the withdrawal form
- - Automated reminder email after X days for unprocessed withdrawals
- - Internal notification email for new withdrawals
- - Full admin overview (withdrawal list with status, search, filter)
- - Admin detail view with notes, refund status and refund amount
- - Withdrawal status display directly in the Shopware order detail page
- - Dashboard widget with withdrawal statistics (open, in progress, completed)
- - Automatic order status "Withdrawn" after submission (configurable)
- - Flow Builder integration for custom automations
About the Extension
Withdrawal Obligation 2026 – Legally Compliant with One Click
EU Directive 2023/2673 and § 356a BGB require online retailers to provide consumers with an easy digital option to submit withdrawal declarations. With the Kommora Withdrawal Button, you comply with this requirement immediately – without any programming effort, directly within Shopware.
Two-Step Withdrawal Process
The law requires a clear two-step process: submit the request, then confirm. This plugin replicates this flow precisely – including a confirmation page and automatic withdrawal acknowledgment.
Feature Overview
- Logged-in customers: All eligible orders are displayed automatically, including remaining days
- Guest access: Withdrawal via order number, email and zip code – no customer account required
- Withdrawal period: Configurable (default 14 days), starting from order date or shipping date
- Placement: Header, footer, customer account menu, order list and order detail page
- CMS element: Freely placeable button in Experience Worlds
- Spam protection: Invisible honeypot or math CAPTCHA
- Model withdrawal form: Direct PDF link inside the form
Admin Management & Tracking
- Withdrawal list: All submitted withdrawals with status, date and order number
- Detail view: Notes, refund status (pending / initiated / completed), refund amount
- Order integration: Withdrawal status visible directly in the Shopware order detail page
- Dashboard widget: Quick overview of open, in-progress and completed withdrawals
- Reminder email: Automatic notification when withdrawals remain unprocessed for too long
- Automatic order status: Order status is automatically set to "Withdrawn" on submission
Flow Builder & Automation
Custom automations via Shopware Flow Builder: React to withdrawal events with emails, tags, webhooks or other Flow actions.
Legal Compliance
- § 356a BGB (withdrawal in e-commerce)
- EU Directive 2023/2673 (withdrawal facilitation)
- Two-step process with confirmation
- 14-day period (configurable)
Withdrawal Obligation 2026 – Legally Compliant with One Click
EU Directive 2023/2673 and § 356a BGB require online retailers to provide consumers with an easy digital option to submit withdrawal declarations. With the Kommora Withdrawal Button, you comply with this requirement immediately – without any programming effort, directly within Shopware.
Two-Step Withdrawal Process
The law requires a clear two-step process: submit the request, then confirm. This plugin replicates this flow precisely – including a confirmation page and automatic withdrawal acknowledgment.
Feature Overview
- Logged-in customers: All eligible orders are displayed automatically, including remaining days
- Guest access: Withdrawal via order number, email and zip code – no customer account required
- Withdrawal period: Configurable (default 14 days), starting from order date or shipping date
- Placement: Header, footer, customer account menu, order list and order detail page
- CMS element: Freely placeable button in Experience Worlds
- Spam protection: Invisible honeypot or math CAPTCHA
- Model withdrawal form: Direct PDF link inside the form
Admin Management & Tracking
- Withdrawal list: All submitted withdrawals with status, date and order number
- Detail view: Notes, refund status (pending / initiated / completed), refund amount
- Order integration: Withdrawal status visible directly in the Shopware order detail page
- Dashboard widget: Quick overview of open, in-progress and completed withdrawals
- Reminder email: Automatic notification when withdrawals remain unprocessed for too long
- Automatic order status: Order status is automatically set to "Withdrawn" on submission
Flow Builder & Automation
Custom automations via Shopware Flow Builder: React to withdrawal events with emails, tags, webhooks or other Flow actions.
Legal Compliance
- § 356a BGB (withdrawal in e-commerce)
- EU Directive 2023/2673 (withdrawal facilitation)
- Two-step process with confirmation
- 14-day period (configurable)
Details
- Available: English, German
- Latest update: 23 June 2026
- Publication date: 19 May 2026
- Version: 1.4.4
- Category: Other
Resources
Reviews (4)
Average rating of 5 out of 5 stars
Super Plugin! macht absolut was es soll!
Average rating of 5 out of 5 stars
Super
Average rating of 5 out of 5 stars
Ausgezeichnet
Average rating of 5 out of 5 stars
Plugin perfekt
Average rating of 5 out of 5 stars
About the Extension Partner
Kommora
Partner Status
-
Shopware
Technology Partner Silver -
Shopware
Extension Partner
Details
-
Ø-Rating:
5
Average rating of 5 out of 5 stars
- Partner since: 2026
- Extensions: 11
Support
- Based in: Germany
- Speaks: German, English
- Response time: Very quickly
Installation
- Purchase and install the plugin in Shopware Administration → Extensions → Store.
- Activate the plugin and clear the shop cache (Administration → Settings → Caches & Indexes → Clear cache).
- Open the configuration: Extensions → My Extensions → Kommora Withdrawal Button → Configure.
Configuration
⚙️ General
SettingDescriptionDefaultWithdrawal button enabledEnables or disables the withdrawal button throughout the entire shop.✅ YesWithdrawal period (days)Number of days during which a withdrawal is possible. The legal minimum is 14 days. Some shops voluntarily grant more.14Period starts fromDefines when the withdrawal period calculation starts: Order date or Shipping date (recommended for physical goods).Order dateURL pathThe path under which the withdrawal form is accessible, e.g. withdrawal → https://myshop.com/withdrawal. Always clear the shop cache after changing!widerrufShow optional reason fieldShows an optional free-text field in the withdrawal form where customers can state their reason.✅ YesSpam protection- Honeypot (invisible): An invisible field for bots — no effort required from real customers. Recommended.
- Simple captcha (math question): Customer must solve a simple math equation.
- No spam protection: Not recommended.
? Placement
Choose where the withdrawal button is displayed in your shop. All positions can be enabled independently:
SettingDescriptionDefaultShow in top navigation barDisplays a withdrawal link or button in the shop header (appearance configurable under "Appearance").✅ YesShow in footerDisplays a withdrawal link in the footer area — ideal for fulfilling the legal disclosure requirement.✅ YesShow in customer account menuAdds a "Withdrawal" menu item in the customer account sidebar.✅ YesShow in order listDisplays a withdrawal button for each order in the customer account order list.✅ YesShow in order detail pageDisplays the withdrawal button on the order detail page in the customer account.✅ YesNote: A dedicated CMS element "Withdrawal Button" is also available in Shopware Experience Worlds, allowing the button to be placed freely on any content page.
? Appearance
SettingDescriptionDefaultButton styleVisual style of the withdrawal button: Primary (filled), Secondary (filled), Primary (outline) or Secondary (outline).Primary (filled)Button colorBackground color of the button as a hex value, e.g. #dc3545 for red.#dc3545Button text colorFont color of the button label.#ffffffHeader displayDetermines whether the withdrawal link in the header appears as a text link or as a button.Text linkShow remaining daysDisplays the remaining withdrawal days in the form and order list, e.g. "12 days remaining".✅ YesModel withdrawal form URLURL to the PDF of the model withdrawal form. A download link will be shown in the form. Leave empty to hide the link. The link text is customizable per language via Shopware snippets.(empty)? Notifications
SettingDescriptionDefaultInternal notification emailEmail address that receives an immediate notification whenever a customer submits a withdrawal. Leave empty for no notification.(empty)Show withdrawal link in order confirmationAutomatically inserts a link to the withdrawal form into the order confirmation email.❌ NoHelp text in form (HTML allowed)Optional text (HTML allowed) displayed below the withdrawal form — e.g. contact information, processing time notes or legal notices.(empty)Enable reminder emailActivates automatic reminder emails for withdrawals that have remained unprocessed for too long.✅ YesReminder after X daysNumber of days after submission before a reminder is sent to the recipient address below.3Reminder email recipientEmail address to receive reminders about open withdrawals. Can be the same as the internal notification address.(empty)? Order Processing
SettingDescriptionDefaultAutomatically set order status to "Withdrawn"Automatically changes the Shopware order status to "Withdrawn" as soon as a withdrawal is submitted. Useful for a clear overview in order management.✅ YesShow refund trackingEnables refund tracking in the admin detail view of a withdrawal. Allows setting the refund status (pending / initiated / completed) and entering the refund amount.✅ YesAdmin Management
After installation, a full management interface is available under Extensions → Withdrawal Button:
- Withdrawal list: All submitted withdrawals with status, date, order number and customer name at a glance.
- Detail view: Full withdrawal details, internal notes, refund status and refund amount.
- Order integration: The Shopware order detail page directly shows whether a withdrawal exists for that order.
- Dashboard widget: Quick overview on the Shopware dashboard with counts of open, in-progress and completed withdrawals.
Flow Builder
The plugin registers the event "Withdrawal submitted" in the Shopware Flow Builder, enabling custom automations such as sending emails, setting tags or triggering webhooks.
Customizing Text
All texts in the plugin (button label, form texts, email content) are fully customizable via Settings → Snippets and can be maintained in multiple languages.
Notes
- Always clear the shop cache after changing the URL path.
- An SMTP server must be configured in Shopware for reminder emails to work.
- Compatible with Shopware 6.5, 6.6 and 6.7.
1.4.4
1.4.2
1.4.1
1.4.0
- Partial withdrawal: on the confirmation page the customer can now tick which order items to withdraw. Default: all items selected = full withdrawal. When a subset is picked, a snapshot of the withdrawn items (label + quantity at submission time) is stored on the withdrawal and displayed in the back office and customer account. Covers § 356a BGB for partial withdrawals.
- Customer account overview "My withdrawals": new page /account/withdrawals listing every withdrawal of the logged-in customer including status, reason, optional partial-item list and rejection notice. The sidebar link appears automatically when the withdrawal button is enabled in the account menu.
- Reject withdrawal with reason: the back office can now reject a withdrawal directly when a statutory exception under § 312g(2) BGB applies (custom-made goods, perishable items, opened hygiene seal, opened sealed data carrier, inseparably mixed, other). Modal with mandatory free-text reason; new mail template kommora_withdrawal_rejected notifies the customer with the verbatim reason; status rejected has its own badge in list, detail and customer account.
- Period-start option "Order completed": additional choice next to "Order date" and "Shipping date". Suitable for services, software and subscription contracts where the contract is treated as fulfilled when the order state transitions to completed. Fallback when the order is not yet completed: order date (so the withdrawal is never accidentally hidden).
- Bugfix "Show withdrawal link in order confirmation": the toggle in the plugin settings has had no effect since it was introduced (no wiring in code). A new mail subscriber now appends a legally compliant right-of-withdrawal block with link directly to the HTML and plain body of the order confirmation email as soon as the toggle is enabled — works out of the box on any shop without editing the mail template. Language is detected from the mail body content (DE/EN).
- Footer button visible even with a collapsed hotline accordion: in some themes the hotline column is collapsed by default as a Bootstrap collapse or collapses on mobile. Previously the button was injected into the collapse content and therefore hidden until the customer manually expanded the accordion. The anchor lookup now actively checks the collapse state and appends the button to the column itself when the accordion is closed — below the hotline section and always visible. When the accordion is open (default on MAN/Opel/BPW etc.) the existing behaviour is kept.
- Footer button fix for themes with an empty
placeholder:
the previous Tier-2 selector matched an empty inlineleft over by the theme CMS in some shops. Our block-level button ended up inside an inline
and was silently dropped from the layout by the browser. The selector is gone, the column tier kicks in cleanly.
1.3.1
1.3.0
1.2.9
1.2.7
1.2.6
NEUE FEATURES
─────────────
• Drei automatische Status-Benachrichtigungen an den Kunden: bei
Statuswechsel auf „In Bearbeitung" oder „Abgeschlossen" sowie bei
Speicherung des Rückerstattungs-Status erhält der Kunde automatisch
eine passende Info-Mail. Jeder Trigger einzeln ab-/zuschaltbar in der
neuen Plugin-Konfig-Card „Kunden-Status-Benachrichtigungen". Drei
neue editierbare Mail-Templates mit Twig-Variablen (Bestellnummer,
Erstattungsbetrag, Kundenname).
• Eigene CSS-Klasse(n) und freies CSS für den Footer-Button: ohne
Core-Edit kann der Widerruf-Button 1:1 an einen bestehenden Theme-
Button (z. B. Newsletter-Button) angepasst werden. Wenn eine Custom-
Klasse oder Custom-CSS gesetzt ist, übernimmt das Plugin gar keine
eigenen Inline-Farben mehr — User-Styles greifen ohne Override.
• Vor- und Nachname als zwei separate Pflichtfelder im Widerrufs-
formular (§ 356a Abs. 2 Nr. 1 BGB n.F. / Art. 11a RL 2011/83/EU,
anwendbar ab 19.06.2026). Bei eingeloggten Kunden aus dem Account
vorausgefüllt. Bei Abweichung zur Bestellung wird ein interner
Hinweis ins Notiz-Feld geschrieben (keine Frontend-Hürde — der
Widerruf wird trotzdem akzeptiert).
• Alle vom Plugin verwalteten Mail-Templates mit „Kommora:"-Prefix in
der Beschreibung. Klar erkennbar in der Mail-Template-Liste,
insbesondere ab Shopware 6.7 (das einen eigenen Standard-
Widerrufsbutton mitbringt).
BEHOBEN
─────────────
• Die Auswahl „Button-Stil" (Primär / Sekundär / Umriss) hatte bisher
keinen optischen Effekt — Inline-Hintergrundfarbe überdeckte die
Bootstrap-Variante. Bei Umriss-Varianten wird jetzt kein Inline-
Background mehr gesetzt; der Unterschied ist visuell sichtbar.
• Custom-Field-Selector für ERP-/externe Bestellnummern war im Plugin-
Konfig-Backend auf Shopware 6.6 unsichtbar. Ursache: die für 6.7
benötigte Datei .vite/entrypoints.json war versehentlich aus dem
ZIP-Paket excluded, das Webpack-Bundle für 6.6 war veraltet. Beide
Bundles + Manifest jetzt korrekt im Paket.
• Hilfetext am Feld „Link zum Muster-Widerrufsformular": Verweis auf
das in 1.1.1 entfernte Feld „Ziel des Widerrufsbuttons" entfernt.
Stattdessen klargestellt, dass sowohl relativer Pfad als auch
absolute URL akzeptiert werden.
• Hilfetext am Feld „Rückerstattungs-Tracking anzeigen": erklärt jetzt
was die Option tatsächlich macht (zusätzlicher Card-Block in der
Widerrufs-Detailansicht mit Refund-Status + Erstattungsbetrag).
• ERP-Bestellnummer-Lookup im Gast-Widerrufsformular brach mit „500
Internal Server Error" ab, wenn der Custom-Field-Name Leerzeichen
enthielt. Custom-Field-Lookup nutzt jetzt eine robuste PHP-Side-
Filterung statt JSON-Pfad-Filter.
1.2.5
Changes in First & Lastname matching.
1.2.4
1.2.3
Fixed bug at Customfield of Ordernumber
1.2.2
Set First & Lastname as required fields
1.2.1
1.2.0
* New: Selectable order identification for ERP setups. Under "Order identification" in the plugin configuration you can now choose whether the customer enters the Shopware order number on the guest withdrawal form (default) or an external number stored in an order custom field (e.g. the ERP order number). When the ERP option is active, a dropdown lists all custom fields belonging to a custom-field set linked to the order entity – no need to type technical field names. An optional fallback to the Shopware order number (default on) keeps legacy orders without a populated ERP value accessible.
* New: For logged-in customers, the order picker dropdown now shows the external order number as the primary value in ERP mode, with the Shopware order number in parentheses – consistent with what the customer sees on their invoice / delivery note and what your back office uses.
* New: The external order identifier the customer entered is stored on the withdrawal (new column `external_order_identifier`) and shown in the admin list and detail view. The Twig variable `externalOrderIdentifier` is available in mail templates and on the Flow Builder event `kommora_withdrawal.submitted`.
1.1.9
Optional Field is now default false
1.1.8
New: Configuration option "Disable date filtering (show all orders)". The order selection dropdown then shows all of the customer's orders without pre-calculating a withdrawal period and without a remaining-days display – relevant in view of Article 11a of Directive 2011/83/EU (applicable from 19 June 2026), which requires the withdrawal function to be available throughout the legal withdrawal period (which starts upon receipt of the goods, § 356(2)(1) BGB)
1.1.7
1.1.6
1.1.5
1.1.4
Changes in Mailintegration
1.1.3
1.1.2
* Improvement: The footer withdrawal button now also appears with themes that replace the default footer with their own building blocks (e.g. ThemeWare). A theme-independent mechanism inserts the button into the footer service hotline area if the theme does not provide the default block – without a duplicate button on the default theme.
1.1.1
* Improvement: The withdrawal button now always leads directly to the plugin's integrated withdrawal form (at /kommora/withdrawal). The field for changing the button path was removed, as it caused confusion and the plugin form (including e-mail confirmation and audit functionality) is the core of the solution anyway.
* Note: The optional link to the statutory model withdrawal form (PDF) remains configurable as before.
1.1.0
* Fixed: On Shopware 6.7 the withdrawal page could fail with "Unfortunately, something went wrong" because an internal method removed in 6.7 was called. The page now renders reliably on Shopware 6.5, 6.6 and 6.7.
* Fixed: With an empty URL field the withdrawal button pointed to a non-existent address (redirect loop in maintenance mode). Now reliably falls back to /kommora/withdrawal.
* Improvement: Clearer naming of the two URL fields (button target vs. model PDF link).
1.0.9
* Fixed: With an empty URL field the withdrawal button pointed to a non-existent address, which could cause a redirect loop in maintenance mode. The button now reliably falls back to the always-reachable internal address /kommora/withdrawal.
* Improvement: The two URL fields are now clearly named – "Withdrawal button target (path or external URL)" for the button target and "Model withdrawal form link (PDF, optional)" for the plain PDF download link. The help texts clarify which field does what.
1.0.8
Bugfix in URL Matching
1.0.7
1.0.6
* Fixed: Withdrawal confirmation and shop notification are now reliably dispatched on the first submission — independent of the Flow-Builder.
* Note: The default flow installed by the plugin is automatically deactivated during the update. Mail templates remain editable in the admin.
1.0.5
* Fixed: The "Resend e-mails" button now reliably dispatches the withdrawal confirmation and the shop notification — including in shop environments where the previous flow-builder based dispatch silently dropped the mails.
1.0.4
* Fixed: The confirmation dialog for "Resend e-mails" is now displayed reliably.
* Improvement: Internal console command aligned with current Shopware recommendations.
1.0.3
* New: "Resend e-mails" button in the withdrawal detail. Lets you resend the withdrawal confirmation to the customer and the notification to the shop operator at any time — for example when a mail was caught by a spam filter or did not arrive on the first try.
* New: Console command for administrators to also re-trigger withdrawal e-mails via SSH.
* A 60-second cooldown between resends prevents accidental duplicate sends.
1.0.2
* Fixed: 500 error "STOREFRONT__CLASS_DONT_HAVE_TWIG_INJECTED" when calling the withdrawal page. The storefront controller now receives Twig correctly via setter injection.
* Fixed: Mail template variable resolution now goes through a dedicated flow storer (WithdrawalEventStorer). This makes it work consistently on Shopware 6.5 and 6.6.
* Fixed: Duplicate "Withdraw contract" entry in the footer. The notice now appears only once as a button in the service hotline column, no longer additionally as a list link in the "Information" column.
1.0.1
* Second, separate email to the shop operator on every withdrawal submission (dedicated mail template type `kommora_withdrawal_submitted_shop`, fully editable via Flow Builder).
* The new flow sequence is added idempotently during the update — existing customizations to the default flow remain untouched.
* `WithdrawalSubmittedEvent` and `WithdrawalStatusChangedEvent` now implement `ScalarValuesAware`, so all event variables (order number, customer name, reason, …) reliably resolve in the mail templates.
1.0.0
Initial release: Two-step withdrawal process, guest access, 5 placement options, admin list and detail view, refund tracking, dashboard widget, reminder email, automatic order status, CMS element, Flow Builder integration.