Contao · MIT-Lizenz

Widerrufsbutton für Contao.

Elektronische Widerrufsfunktion nach § 356a BGB, zweistufig, ohne Login und JavaScript. Läuft auch ohne unsere Pakete.

Version 1.1.0 vom 02.10.2026 · Contao 5.7.12 · PHP 8.3+

Installation

Aktualisiere Contao vor der Installation auf mindestens 5.7.12. Im Contao Manager zuerst alle Pakete aktualisieren und erst danach ZIPs hochladen; ältere 5.7-Versionen können beim aktualisierten Flysystem-Bundle mit AdapterDefinitionFactory not found abbrechen.

Im Contao Manager nach nordwerk/contao-withdrawal-bundle suchen und das Paket installieren. Alternativ das Manager-ZIP aus den GitHub-Releases herunterladen und im Manager hochladen; anschließend die Datenbank aktualisieren.

Über Composer:

composer require nordwerk/contao-withdrawal-bundle
vendor/bin/contao-console contao:migrate

Installationshinweise und Voraussetzungen stehen auch im README.

Was es kann

Eine öffentliche Widerrufsfunktion führt in zwei Schritten von den Angaben zur Bestätigung. Name, freie Vertragsangaben und Bestätigungs-E-Mail genügen; Login, Anschrift und Begründung werden nicht verlangt. Erst die Bestätigung speichert die Erklärung, danach gehen Nachrichten an Verbraucher und Händler.

Unter „Inhalte → Widerruf einrichten“ werden Händleradresse und öffentlicher Pfad gesetzt. Eine ungeschützte Seite enthält das Inhaltselement „Widerrufsfunktion“, der Footer verlinkt sie mit {{withdrawal_link}}. Ein funktionierender Symfony-Mailtransport und ein regelmäßig ausgeführtes withdrawal:resend-pending gehören zum Betrieb. Die rechtliche Eignung für die konkrete Website wird gesondert geprüft; das Bundle entscheidet nicht automatisch über Fristen.

Erste Schritte im Backend

  1. Speichere unter Inhalte → Widerruf einrichten Absender- und Händleradresse. Richte einen zustellfähigen Symfony-Mailtransport ein: Das Bundle nutzt synchron mailer.default_transport, unabhängig von Messenger-Routing und dem Transport des Seitenstamms. Verwende im Betrieb keinen null://-Transport.
  2. Lege eine öffentliche, ungeschützte Seite mit dem Inhaltselement Widerrufsfunktion an. Speichere ihren öffentlichen Pfad unter „Widerruf einrichten“, etwa /service/widerruf. Ein Pfad und eine Händleradresse gelten für die gesamte Installation; WITHDRAWAL_PATH und WITHDRAWAL_MERCHANT_EMAIL sind optionale Overrides.
  3. Binde {{withdrawal_link}} im Footer aller relevanten Seiten ein, in Contao 5.7 beispielsweise über ein Theme-Inhaltselement. Prüfe Lesbarkeit, Kontrast und dauerhafte Erreichbarkeit; keine Anmeldung, Consent-Sperre oder Cache-Regel vor das Formular setzen.
  4. Erlaube Backend-Benutzern oder Gruppen ausdrücklich das Modul Widerrufe. Erklärungsdaten bleiben schreibgeschützt; nur der Prüfstatus ist bearbeitbar. Lege einen Prozess für Aufbewahrung, Löschung und Backups fest.
  5. Führe php bin/console withdrawal:resend-pending zeitnah und regelmäßig aus, beispielsweise minütlich per Cron. Exitcode 1 bedeutet mindestens einen Fehler. Überwache offene Zustellungen und Bounces und setze endliche Timeouts für den Mailtransport in PHP-FPM und CLI.

Prüfe den vollständigen Ablauf inklusive beider Mails im tatsächlichen Theme. Eine Transportannahme beweist keine Zustellung im Postfach. Die rechtliche Eignung für die konkrete Website muss gesondert geprüft werden.

Twig-Integration

Die Vorlage withdrawal.html.twig kann im Template Studio an das Theme angepasst werden. Die Text- und HTML-Mailvorlagen unter @NordwerkWithdrawal/mail/ sind überschreibbar; Erklärung, Angaben sowie Eingangsdatum und -zeit müssen erhalten bleiben.

  • Verfügbar

    Zahlung

    Überweisung mit Bankdaten und GiroCode, dazu Stripe Checkout. Die gemeinsame Zahlungsschicht für Shop und Seminare.

    Zum Paket

Häufige Fragen

Welche Contao-Version benötige ich?

Contao ab 5.7.12 innerhalb der 5.7-Reihe, PHP ab 8.3, MySQL oder MariaDB und ein zustellfähiger Symfony-Mailtransport. Contao 5.3 ist nicht freigegeben; Contao 6 ist in den Voraussetzungen dieses Pakets nicht aufgeführt.

Brauche ich einen Shop, Login oder JavaScript?

Nein. Die Funktion ist shopunabhängig und öffentlich erreichbar. Angaben, Prüfung, Korrektur und Bestätigung funktionieren ohne JavaScript. Name, freie Vertragsangaben und Bestätigungs-E-Mail genügen; Anmeldung, Anschrift und Begründung werden nicht verlangt.

Wann wird eine Widerrufserklärung gespeichert?

Erst bei Widerruf bestätigen im zweiten Schritt. Die erste Prüfansicht speichert noch keine Erklärung. Die Speicherung erfolgt vor dem Mailversuch; eine wiederholte Bestätigung derselben Ansicht erzeugt keinen weiteren Datensatz.

Was passiert, wenn eine Bestätigungsmail nicht ankommt?

Die Erklärung bleibt gespeichert. Kunden- und Händlernachricht werden getrennt zugestellt. Führe withdrawal:resend-pending regelmäßig aus und überwache offene Zustellungen sowie Bounces. Vom Transport angenommen bedeutet noch nicht im Postfach zugestellt.

Kann ich das Formular und die Mails gestalten?

Ja. Die Grundgestaltung lässt sich unter Widerruf einrichten abschalten; withdrawal.html.twig und die Text- und HTML-Mailvorlagen sind überschreibbar. Erklärung, Angaben sowie Eingangsdatum und -zeit müssen erhalten bleiben. Prüfe Kontraste, Beschriftungen und die dauerhafte Erreichbarkeit des Footer-Links.

Welche Lizenz gilt und ist damit meine Website rechtlich geprüft?

Das Bundle steht unter der MIT-Lizenz und darf kommerziell eingesetzt werden. Es stellt den technischen Ablauf bereit; die Eignung für den konkreten Vertrag und die Händlerwebsite muss gesondert geprüft werden. Es entscheidet nicht automatisch über Widerrufsfristen.