Anwendungsfälle¶
Drei typische Setups und wie das Plugin in jedem davon eingestellt wird.
B2C-Standardsetup¶
Profil
- Endkunden-Shop mit gemischtem Sortiment.
- Bestellungen kommen direkt in Shopware rein, kein vorgelagertes ERP.
- Kunden bestellen meist als Gast oder mit einfachem Konto.
- Versand erfolgt innerhalb 2–5 Werktagen.
Empfohlene Konfiguration
| Feld | Wert |
|---|---|
| Widerrufsbutton aktiviert | ein |
| Widerrufsfrist | 14 Tage |
| Fristbeginn | Bestelldatum |
| Keine zeitliche Vorfilterung | ein (Compliance 19.06.2026) |
| Bestell-Identifikation | Shopware-Bestellnummer |
| Optionale Begründung anzeigen | aus |
| Spam-Schutz | Honeypot oder Rechenaufgabe |
| Platzierung – Footer | ein |
| Platzierung – Kundenkonto-Menü | ein |
| Automatischer Bestellstatus „Widerrufen" | ein |
| Mail-Empfänger intern | widerruf@dein-shop.de |
| Hilfetext im Formular | Telefon-Hotline, alternative Mail |
Verbraucher-Erlebnis
- Kunde scrollt im Footer und klickt auf „Vertrag widerrufen".
- Eingeloggt: Bestellliste mit Klick-Auswahl. Gast: E-Mail + Bestellnummer + (optional) PLZ.
- Weiter zur Bestätigung → Confirm-Page mit Kundenname, E-Mail, Bestellnummer.
- Widerruf bestätigen → Erfolgsseite. Bestätigungsmail kommt sofort.
Backoffice-Erlebnis
- Widerruf erscheint im Modul Widerrufsbutton unter „Eingegangen".
- Bestellstatus wechselt automatisch auf „Widerrufen".
- Bearbeiter setzt nach Bearbeitung Status auf „In Bearbeitung" / „Abgeschlossen" und pflegt optional Rückerstattung.
B2B-ERP-Setup¶
Profil
- Geschäftskunden, Versand erfolgt mit Lieferzeiten 1–4 Wochen, teils Sonderbestellungen.
- ERP (z.B. Sage 100, Microsoft Dynamics, JTL-Wawi, Pickware-ERP) ist das führende System.
- Custom Field
migration_erp_orderNumberan der Bestellung enthält die ERP-Bestellnummer. - Reklamations- und Widerrufsabwicklung läuft im Backoffice mit ERP-Nummer.
Empfohlene Konfiguration
| Feld | Wert |
|---|---|
| Widerrufsbutton aktiviert | ein |
| Widerrufsfrist | 14 Tage (gesetzlich, in den AGB ggf. anders) |
| Fristbeginn | Versanddatum |
| Keine zeitliche Vorfilterung | ein (Compliance + lange Lieferzeiten) |
| Bestell-Identifikation | Bestell-Custom-Field |
| Custom Field | migration_erp_orderNumber (im Dropdown auswählen) |
| Fallback auf Shopware-Bestellnummer | ein |
| Optionale Begründung anzeigen | aus |
| Mail-Empfänger intern | widerruf@erp-backoffice.de |
Flow-Builder: kommora_withdrawal.submitted |
Webhook an ERP-Ticket-System |
Verbraucher-Erlebnis
- Geschäftskunde öffnet seine Rechnung, sieht
Auftragsnummer: AB2026-12345. - Klickt im Shop-Footer auf „Vertrag widerrufen".
- Gibt E-Mail +
AB2026-12345ein – das ist die für ihn bekannte Nummer. - Plugin findet die Bestellung über das ERP-Custom-Field, zeigt im Confirm:
- Widerruf bestätigen → fertig.
Backoffice-Erlebnis
- Im Admin-Modul erscheint der Widerruf mit primärer ERP-Nummer.
- Über den Flow-Builder-Webhook wird automatisch ein Ticket im ERP-System geöffnet.
- Buchhaltung kann mit der ERP-Nummer arbeiten, ohne Shopware-Tab zu wechseln.
→ Detail: ERP-Bestellnummer einrichten
Multi-Sales-Channel-Setup¶
Profil
- Ein Shopware-Backend, mehrere Storefronts:
b2c.dein-shop.de(Endverbraucher)b2b.dein-shop.de(Geschäftskunden)outlet.dein-shop.de(Restposten, anderer Rechtsrahmen)
- Unterschiedliche Frist, Texte, Mail-Empfänger pro Channel.
Konfiguration
Im Plugin-Config oben den Sales-Channel wechseln und pro Channel eigene Werte setzen.
| Channel | Frist | Identifikation | Mail-Empfänger | Anmerkung |
|---|---|---|---|---|
| b2c.dein-shop.de | 14 Tage | Shopware-Nr. | widerruf-b2c@... | Standard-B2C |
| b2b.dein-shop.de | 14 Tage | ERP-Nr. (erp_orderNumber) | widerruf-b2b@... | ERP-Setup wie oben |
| outlet.dein-shop.de | 14 Tage | Shopware-Nr. | widerruf-outlet@... | Eigene Hilfetexte |
Auch die Storefront-Texte (Snippets) lassen sich pro Sales-Channel + Sprache anders einstellen – das ist Standard-Shopware-Snippet-Verwaltung.
Hinweis: Snippets-Bearbeitung
Unter Einstellungen → Shop → Textbausteine den jeweiligen Sales-Channel-Snippet-Set öffnen, nach kommoraWithdrawal.form. suchen, gewünschte Werte überschreiben.
Ergänzendes Anwendungsbeispiel – Widerrufslink in jeder Bestätigungsmail¶
Wenn Du nicht willst, dass der Kunde erst zur Storefront muss, um den Button zu finden, aktiviere unter Benachrichtigungen:
- Widerrufslink in Bestellbestätigung anzeigen → ein.
Damit fügt das Plugin der Standard-Bestellbestätigungs-E-Mail einen rechtssicheren Widerrufs-Block mit Button-Link an HTML- und Plain-Body an. Erfüllt zusätzlich die „leicht zugänglich"-Anforderung von Art. 11a für den Kunden ohne Account.
Achtung: vor 1.4.0 war der Toggle wirkungslos
In Versionen vor 1.4.0 existierte das Config-Feld, ohne dass es im Code verdrahtet war — die Aktivierung änderte nichts an der Bestellbestätigungs-Mail. Mit 1.4.0 hängt ein Mail-Subscriber den Block jetzt out of the box an HTML- und Plain-Body an, ohne dass am Mail-Template geschraubt werden muss. Sprache wird heuristisch erkannt (DE/EN).
Teil-Widerruf einzelner Positionen (seit 1.4.0)¶
Wofür?
Der Kunde hat eine Bestellung mit mehreren Artikeln aufgegeben und will nur einen Teil widerrufen — z. B. 3 von 5 Hemden behalten. § 356a BGB deckt den Teil-Widerruf explizit.
Storefront-Flow
- Kunde wählt seine Bestellung im Widerrufsformular aus → klickt „Prüfen".
- Auf der Bestätigungsseite erscheint ein neuer Block „Welche Positionen widerrufen Sie?" mit Checkbox pro Bestell-Position.
- Standard: alle Häkchen aktiv = vollständiger Widerruf (wie bisher).
- Wenn der Kunde Häkchen entfernt, wird der Widerruf als Teil-Widerruf für die markierten Positionen erfasst.
- Klick auf „Widerruf bestätigen" → Snapshot der gewählten Positionen (Label + Menge zum Einreichungs-Zeitpunkt) wird am Widerruf gespeichert.
Backoffice-Sicht
Im Detail-View des Widerrufs erscheint eine neue Karte „Widerrufene Positionen (Teil-Widerruf)" mit der genauen Liste. Bei vollständigem Widerruf (alle Häkchen aktiv) bleibt die Karte ausgeblendet.
Persistenz
Der Snapshot wird im Feld line_items der Tabelle kommora_withdrawal als JSON gespeichert (Array von {lineItemId, label, quantity}). Spätere Änderungen an der Order beeinflussen den Snapshot nicht — das Backoffice sieht jederzeit den genauen Stand zum Zeitpunkt der Einreichung.
Widerruf ablehnen mit Begründung (seit 1.4.0)¶
Wofür?
§ 312g Abs. 2 BGB listet 13 Ausnahmen vom Widerrufsrecht — Sonderanfertigungen, verderbliche Waren, entsiegelte Hygiene- oder Datenträger-Artikel usw. Wenn so eine Ausnahme greift, kann das Backoffice den Widerruf legitim ablehnen.
Backoffice-Flow
- Admin öffnet im Modul Widerrufsbutton den eingegangenen Widerruf.
- In der Smart-Bar oben rechts erscheint ein roter Button „Widerruf ablehnen" (nur sichtbar, wenn Status nicht bereits
completedoderrejected). - Klick → Modal mit Pflicht-Feldern:
- Rechtliche Grundlage (Dropdown): Sonderanfertigung (§ 312g II Nr. 1), schnell verderbliche Ware (Nr. 4), Hygiene-Versiegelung entfernt (Nr. 3), entsiegelter Datenträger (Nr. 6), untrennbar vermischt (Nr. 5), Sonstiges.
- Begründung für Kunden (Pflicht-Textarea): wird 1:1 in die Ablehnungs-Mail übernommen.
- Kunden per E-Mail informieren (Checkbox, default an).
- Klick auf „Widerruf ablehnen" → Status wechselt auf
rejected(eigene rote Badge in Liste + Detail), neue Karte „Ablehnung" im Detail-View zeigt Rechtsgrundlage + Begründung. - Wenn Mail-Versand aktiv: Mail-Template
kommora_withdrawal_rejectedgeht raus mit der wörtlichen Begründung des Backoffice.
Verbraucher-Sicht
- Mail im Postfach: „Ihr Widerruf zur Bestellung … wurde abgelehnt" mit roter Box und der genauen Begründung.
- Im Kundenkonto (s. u.): Eintrag mit roter „Abgelehnt"-Badge und Begründungstext.
Rechtlich sauber bleiben
Die Ablehnung muss begründet sein und greift nur, wenn tatsächlich eine § 312g Abs. 2 BGB-Ausnahme vorliegt. Pauschal-Ablehnungen ohne Rechtsgrundlage sind rechtlich angreifbar. Im Zweifel den Kunden kontaktieren statt direkt ablehnen.
„Meine Widerrufe" im Kundenkonto (seit 1.4.0)¶
Wofür?
Eingeloggte Kunden bekommen eine Übersichtsseite aller eigenen Widerrufe — entlastet den Support, weil Kunden nicht mehr fragen „ist mein Widerruf angekommen?".
Voraussetzung
In der Plugin-Konfig muss Platzierung → Im Kundenkonto-Menü aktiv sein.
Storefront
- Sidebar im Kundenkonto bekommt einen neuen Link „Meine Widerrufe" (zusätzlich zu „Vertrag widerrufen").
- Klick →
/account/withdrawalsmit Liste aller Widerrufe des eingeloggten Kunden:- Bestellnummer + Einreichungsdatum
- Status-Badge (Eingegangen / In Bearbeitung / Abgeschlossen / Abgelehnt)
- Bei Teil-Widerruf: Liste der widerrufenen Positionen
- Bei eigener Begründung: Klartext-Anzeige
- Bei Ablehnung: roter Block mit Rechtsgrundlage + Begründung
- Anonyme Besucher landen auf der Standard-Login-Seite.
Fristbeginn-Variante „Bestellung abgeschlossen" (seit 1.4.0)¶
Wofür?
Bei Verträgen ohne physische Ware (Dienstleistungen, Software-Abos, digitale Konten) ist „Versanddatum" wertlos — es gibt keinen Versand. § 356 Abs. 2 BGB lässt für solche Verträge den Fristbeginn an den Vertragsabschluss knüpfen. In Shopware ist der Order-State-Wechsel auf completed der saubere technische Marker dafür.
Konfiguration
In der Plugin-Konfig unter Fristbeginn die dritte Option „Bestellung abgeschlossen" wählen.
Verhalten
- Solange die Bestellung den Order-State
completedhat: Fristberechnung ab dem Datum dieses Wechsels. - Solange noch nicht completed: Fallback auf Bestelldatum (damit der Widerruf nicht versehentlich ausgebremst wird, wenn der Vertrag noch in Bearbeitung ist).
Achtung
- Funktioniert nur sinnvoll mit einer aktiv genutzten Order-State-Machine (z. B. manueller Abschluss durch Backoffice oder via Workflow-Plugin).
- Bei klassischem Warenversand bitte weiterhin „Versanddatum" verwenden.
Weiter¶
- Konfiguration – alle Optionen im Detail
- Troubleshooting – wenn etwas nicht klappt