Totally Zenned
- Join Date:
- Jan 2004
- Location:
- N of San Antonio TX
- Posts:
- 9,829
- Plugin Contributions:
- 17
EU Withdrawal Button [Support Thread]
EU Withdrawal Button v1.0.0: the withdrawal function EU law requires from 19 June 2026, for Zen Cart 1.5.8 through 3.0.0, as an encapsulated plugin
GitHub: https://github.com/dbltoe/EU_Withdrawal_Button
Download: https://github.com/dbltoe/EU_Withdrawal_Button/releases/tag/v1.0.0 (also free at https://myzencartzone.com/index.php?main_page=product_info&products_id=40)
Zen Cart: 1.5.8a, 2.0.x, 2.1.0, 2.2.x, 2.3.x and 3.0.0, one package
PHP: 7.4 through 8.5
License: GPL-2.0
Why it's needed
From 19 June 2026, Article 11a of the Consumer Rights Directive (added by Directive (EU) 2023/2673) requires a store selling online to consumers in the EU to offer a withdrawal function: a clearly labeled "withdraw from contract here" button, a short form, a "confirm withdrawal" step, and an acknowledgment of receipt on a durable medium with the date and time. As discussed in the EU Withdrawal Button thread earlier this year, Zen Cart had nothing for it.
What it does
- Adds a Withdraw From Contract Here button to the footer of every page, with no template edits.
- The withdrawal page needs no account: name, order and email, then a review screen with the Confirm Withdrawal button. A logged-in customer's details are filled in and they pick from their recent orders; the button on an order's page opens the form for that order.
- The moment the customer confirms, they're emailed an acknowledgment of receipt with their statement and the date and time it was sent, and the store gets a notice with reply-to set to the customer. Both go out after the statement is saved, so a mail failure loses nothing, and a failed acknowledgment can be sent again from the admin.
- A statement is never refused. One that doesn't match an order is saved and flagged for you to look at.
- A matched order gets a note in its history that the customer doesn't see, and can move to an order status you choose.
- Customers > Withdrawals in the admin lists every statement with its status, a staff note and a Send Acknowledgment button.
- A spam trap holds suspicious statements, emailing nobody, until you release them.
- The two labels the law fixes come word for word in English, Dutch, Finnish, French, German, Italian and Spanish.
- Show Withdrawal Button To can be All Visitors (the default) or Selected Countries (the EU plus Iceland, Liechtenstein and Norway), so a store outside the EU can show it only to customers there.
- Both emails are previewable in the free Preview Email plugin, built by the same code that sends them.
Encapsulated. One folder under zc_plugins/, installed from Plugin Manager. No core or template file is changed.
Installing
- Upload
zc_plugins/EuWithdrawalButton/so it lands at<store root>/zc_plugins/EuWithdrawalButton/v1.0.0/. - Admin > Modules > Plugin Manager > EU Withdrawal Button > Install.
- In Configuration > EU Withdrawal Button, set Store Time Zone (for example Europe/Berlin). Left blank, the acknowledgment uses PHP's own time zone, which on most hosting servers is UTC.
- Look over the other settings. Everything else works as installed.
What it doesn't decide
The acknowledgment confirms receipt, not acceptance. Whether a withdrawal is valid, and whether customers outside the EU have the right at all, is a question for your own legal advisor; the plugin records and acknowledges, it doesn't decide.
The full documentation (readme.html) is inside the plugin and linked from the Plugin Manager panel.
Reporting a problem
Please include your Zen Cart and PHP versions, your template, and what you saw. If an email didn't arrive, open the statement in Customers > Withdrawals: it shows whether the acknowledgment was sent, and why not if it wasn't. For anything else, look in logs/ for a myDEBUG- file from that moment and attach it.
Need a hand with Zen Cart? Hire the team at myZenCartZone.com for upgrades, repairs, and custom plugins.
Zen Cart Certified hosting at myZenCartHost.com