Widerrufsbutton in Shopware 6: So geht’s auch ohne Update

shopware_vertrag_widerrufen.png

Ab dem 19. Juni 2026 ist der elektronische Widerrufsbutton für B2C-Online-Shops in Deutschland gesetzlich verpflichtend (§ 356a BGB). Kunden müssen Verträge direkt im Shop mit einem klar beschrifteten Button widerrufen können – und der Shop muss den Eingang automatisch per E-Mail bestätigen.

Shopware hat die Lösung nativ ab Version 6.7.9.0 eingebaut (Backport für 6.6 ab 6.6.10.14). Wer eine dieser Versionen oder neuer nutzt, aktiviert den Button einfach unter Einstellungen > Stammdaten. Wer noch eine ältere Version betreibt, muss selbst ran – dieser Artikel zeigt, wie.

Screenshot 2026-06-12 at 14-39-09 — Alle iCloud.png


Voraussetzungen

  • Shopware 6 ab Version 6.5.0.0, älter als 6.6.10.14

  • Zugriff auf das Shopware-Admin-Backend

  • FTP- oder SSH-Zugang zum Server (für den letzten Schritt)

Schritt 1: Formular-Plugin installieren

Als erstes wird das kostenlose Formular-Plugin der Telekom benötigt. Es ermöglicht, Kontaktformulare direkt in Erlebniswelten einzubinden.

Plugin im Shopware Store herunterladen:
store.shopware.com →
Formular für Anfragen für die Erlebniswelten

Nach der Installation das Plugin unter Einstellungen > Erweiterungen > Meine Erweiterungen aktivieren.

telekom_formular.png

Schritt 2: Erlebniswelt anlegen

Im Admin-Backend unter Inhalte > Erlebniswelten eine neue Erlebniswelt anlegen:

  • Typ: Shopseite

  • Name: z. B. „Widerrufsformular“

Im Layout-Editor links in der Blockkategorie Formular den Block Formular Component per Drag-and-Drop auf die Seite ziehen.

block_formular.png

Schritt 3: Formular konfigurieren

Auf das Zahnrad-Symbol des Formular-Blocks klicken, um die Einstellungen zu öffnen. Drei Tabs werden konfiguriert:

Tab „Formularaufbau“

  • Vorname: Pflichtfeld

  • Nachname: Pflichtfeld

  • E-Mail-Adresse: Pflichtfeld

  • Kommentarfeld: kein Pflichtfeld

  • Datenschutzbestimmungen: Pflichtfeld

  • Pflichtfeldinformationen: Aktiviert

  • Herkunft manuell festlegen: Aktiviert

  • Herkunft: Vertrag widerrufen

  • Herkunftswert: Widerrufsformular

  • Alle anderen Optionen deaktivieren

Tab „Freie Eingaben für das Formular"

  • Freie Eingabe 1: Pflichtfeld

  • Beschriftung: Bestellnummer

  • Typ: Eingabefeld

Tab „Versand der Daten per E-Mail"

  • Versand an einen oder mehrere Empfänger aktivieren – Name und E-Mail-Adresse des Shopbetreibers eintragen

  • Versand an den Anfragenden aktivieren

vertrag_widerrufen_formular.png

Schritt 4: Kategorie und Seite anlegen

Unter Kataloge > Kategorien eine neue Kategorie anlegen:

  • Name: Vertrag widerrufen

  • Aktiv: Ja

  • In der Navigation ausblenden: Ja (falls kein Menüeintrag gewünscht)

  • Unter Layout das erstellte Erlebniswelten-Layout verknüpfen

  • SEO-Daten hinterlegen (URL-Slug, Meta-Titel, Meta-Beschreibung)

kategorie.png

Anschließend die Kategorie-ID aus der URL des Browsers kopieren:

https://www.mein-shop.de/admin#/sw/category/index/019ebaf1b9e67c229e2d0eb9b26d8783/seo

Die ID in diesem Beispiel lautet: 019ebaf1b9e67c229e2d0eb9b26d8783 – diese wird im letzten Schritt benötigt.

Schritt 5: E-Mail-Template anpassen

Im Admin unter Einstellungen > E-Mail-Templates nach „Anfrageformular“ suchen und das Template öffnen. Im HTML-Tab den bestehenden Inhalt durch folgenden Code ersetzen. Im HTML-Tab den bestehenden Inhalt durch folgenden Code ersetzen:

<div style="font-size:12px;">
    Guten Tag {{ periodRequestFormData.firstname }} {{ periodRequestFormData.lastname }},
    <br/><br/>
    wir haben Ihren Widerrufsantrag für den Vertrag mit der Nummer {{ periodRequestFormData.freeInput }} erhalten und bestätigen den Eingang hiermit.
    <br/><br/>
    Ihre übermittelten Angaben:<br/>
    Vorname: {{ periodRequestFormData.firstname }}<br/>
    Nachname: {{ periodRequestFormData.lastname }}<br/>
    E-Mail-Adresse: {{ periodRequestFormData.email }}<br/>
    Vertragsnummer: {{ periodRequestFormData.freeInput }}<br/>
    {% if periodRequestFormData.comment != "" %}Kommentar: {{ periodRequestFormData.comment }}<br/>{% endif %}
    <br/>
    Das Formular wurde am {{ "now"|date('d.m.Y') }} um {{ "now"|date('H:i') }} Uhr eingereicht.
    <br/><br/>
    Mit freundlichen Grüßen<br/>
    {{ salesChannel.name }}
</div>

mail_html.png

Schritt 6: Textbaustein anlegen

Unter Einstellungen > Textbausteine das gewünschte Set auswählen und einen neuen Textbaustein anlegen:

  • Schlüssel: revocationRequestSnippetKey

  • Wert: Vertrag widerrufen

textbausteine

Schritt 7: Kostenloses Plugin

Wer den Button ohne eigenes Plugin einrichten möchte, kann das kostenlose eazyCode Widerrufsbutton-Plugin nutzen. Es fügt den Button automatisch in den Footer ein – die Kategorie lässt sich direkt in den Plugin-Einstellungen hinterlegen, ohne dass Code-Kenntnisse nötig sind: Kostenloses Plugin herunterladen.

Wer den Button lieber manuell per eigenem Plugin einbauen möchte, folgt den Schritten unten.

Alternative 7: Button in den Footer einbauen

Für den letzten Schritt wird ein minimales Shopware-Plugin benötigt, das den Footer-Template-Block erweitert. Per FTP oder SSH im Shopware-Verzeichnis folgende Struktur anlegen:

custom/plugins/SwWiderrufsButton/
├── composer.json
└── src/
    ├── SwWiderrufsButton.php
    └── Resources/
        └── views/
            └── storefront/
                └── layout/
                    └── footer/
                        └── footer.html.twig

composer.json

{
    "name": "sw/widerrufs-button",
    "description": "Widerrufsbutton Footer",
    "version": "1.0.0",
    "type": "shopware-platform-plugin",
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "Sw\\WiderrufsButton\\": "src/"
        }
    },
    "extra": {
        "shopware-plugin-class": "Sw\\WiderrufsButton\\SwWiderrufsButton",
        "label": {
            "de-DE": "Widerrufsbutton",
            "en-GB": "Revocation Button"
        }
    }
}

src/SwWiderrufsButton.php

<?php declare(strict_types=1);

namespace Sw\WiderrufsButton;

use Shopware\Core\Framework\Plugin;

class SwWiderrufsButton extends Plugin {}

src/Resources/views/storefront/layout/footer/footer.html.twig

Die Kategorie-ID aus Schritt 4 anstelle von DEINE-KATEGORIE-ID einsetzen:

{% sw_extends '@Storefront/storefront/layout/footer/footer.html.twig' %}

{% block layout_footer_navigation_hotline_content %}
    {{ parent() }}
    <a href="{{ seoUrl('frontend.navigation.page', { navigationId: 'DEINE-KATEGORIE-ID' }) }}"
       class="btn btn-primary mt-2">
        {{ 'revocationRequestSnippetKey'|trans }}
    </a>
{% endblock %}

Anschließend das Plugin über die Konsole aktivieren und den Cache leeren:

bin/console plugin:refresh
bin/console plugin:install --activate SwWiderrufsButton
bin/console theme:compile
bin/console cache:clear

button


Fazit

Mit diesen sieben Schritten ist der gesetzlich vorgeschriebene Widerrufsbutton auch ohne Shopware-Update vollständig eingerichtet: Das Formular nimmt die Daten entgegen, der Kunde erhält eine rechtskonforme Bestätigungsmail, und der Button ist im Footer sichtbar verankert. Wer langfristig plant, sollte dennoch ein Update auf Shopware 6.6.10.14 oder 6.7.9.0 einplanen – dort entfällt dieser manuelle Aufwand komplett.

eazyCode Logo Haben Sie Fragen zur Umsetzung des Widerrufsbuttons in Ihrem Shopware-Shop? Wir helfen Ihnen gerne – unverbindlich und schnell. Kontaktieren Sie uns, wir melden uns innerhalb von 24 Stunden.

Kostenloses Erstgespräch – unverbindlich

Ihr Projekt verdient einen ehrlichen Partner.

Schildern Sie uns Ihre Anforderungen – wir melden uns innerhalb von 24 Stunden mit einer ersten Einschätzung. Kein Verkaufsgespräch, kein Kleingedrucktes.

Telefon

Mo–Fr, 9–17 Uhr. Wir sind direkt erreichbar.

+49 (0) 9072 922022 - 0
Termin vereinbaren

30 Minuten. Online. Kostenlos und unverbindlich.

Termin vereinbaren

Schreiben Sie uns – wir antworten innerhalb von 24 Stunden.