On this page
To meet the EU withdrawal button rule in Shopify or WooCommerce, you add four things: a link labelled "withdraw from contract here" that customers can reach without logging in, a short form for their name, order and email, a separate "confirm withdrawal" step, and an automatic email that acknowledges the withdrawal with the date and time. Shopify has no built-in feature for it; WooCommerce has none in its core. Both need an app, a plugin or a little custom work.
The rule comes from Directive (EU) 2023/2673, which added article 11a to the Consumer Rights Directive, and every EU country applies it since 19 June 2026. It covers distance contracts concluded through an online interface with consumers in the EU, wherever the shop is based. It does not change the 14-day right of withdrawal itself; it changes how easily a customer can use it. What the article says, line by line, and which orders are exempt, is in our news piece on the EU withdrawal button. This guide is about building it.
What the button has to do
| Step | What the law asks | What usually goes wrong |
|---|---|---|
| The link | the words "withdraw from contract here" or an unambiguous equivalent, prominent, available for the whole withdrawal period | hidden behind a login, or labelled "Returns" or "Contact" |
| The statement | name, the contract it concerns, and where to send the acknowledgement | a long form asking for reasons, which the law does not require |
| The confirmation | a separate function labelled "confirm withdrawal" or an unambiguous equivalent | the form submits in one click, with no confirming step |
| The acknowledgement | without undue delay, on a durable medium such as email, with the content and the date and time | a generic "we received your message" without the time |
In the languages of your shop, use the official wording of each language version of the directive, for example "Vertrag hier widerrufen" and "Widerruf bestätigen" in German. Asking why the customer withdraws is allowed as an optional field; making it required is not.
Four steps from button to acknowledgement
- Withdraw from contract hereA clearly labelled link in the footer, in the order email and next to each order, reachable without logging in.
- Shopify
- footer menu link to a page; link in the order confirmation template
- WooCommerce
- footer widget or menu link; link added to the order email template
- The statementName, order number and email, prefilled when the customer comes from the order email.
- Shopify
- a page with a form from a withdrawal app, or a custom app block
- WooCommerce
- a form plugin or a small plugin with an order lookup
- Confirm withdrawalA separate second button, labelled only to confirm, so nobody withdraws by accident.
- Shopify
- the app's confirmation step
- WooCommerce
- a second form step or a confirmation screen
- AcknowledgementAn email at once, with what was submitted and the date and time.
- Shopify
- the app's email, or a Shopify Flow notification
- WooCommerce
- an automatic email from the form or plugin, logged on the order
A contact form alone is not enough: the law asks for the labelled button, the confirmation step and the acknowledgement with date and time.
In Shopify
Shopify has not added a native withdrawal button. Its self-serve returns in customer accounts handle returns, not the withdrawal statement, and they require the customer to sign in. You have three routes:
- An app from the Shopify App Store. Several apps now offer a withdrawal page, a footer button, the confirmation step and the acknowledgement email. Check before installing that the app works without login, writes the date and time in the email, supports every language of your shop, and is accessible with a keyboard.
- A page with a form and Shopify Flow. Create a page called "Withdraw from contract", add a form app that has a confirmation step and sends an email with a timestamp, and link the page from the footer and from the order confirmation email template. Shopify Flow can tag the order and alert your team.
- A small custom app or theme extension. For larger shops, an app block that looks up the order by number and email, prefills the statement and logs the withdrawal on the order. This is the cleanest, and takes a developer a few days.
Whichever route you choose, add the link to the order confirmation and shipping notification emails in Shopify's notification templates, with the order number in the link so the form can prefill it. What Shopify itself costs per plan is in how much does Shopify cost.
In WooCommerce
WooCommerce gives you more control and the same three routes:
- A legal plugin. Plugins built for the German and EU market add legal pages and checkout wording; check whether yours now includes the withdrawal function with the two steps and the acknowledgement.
- A form plugin. A multi-step form with a confirmation page and an automatic email with the submission time covers the rule. Add an order lookup so the customer only types the order number and email, and store each submission so you can prove it later.
- A small custom plugin. It adds an endpoint for guests, finds the order, records the withdrawal as an order note with the time, and sends the email through WooCommerce's own mailer. It is the most robust option for a shop with many orders.
Link the page from the footer, the order emails (WooCommerce email templates) and the customer account's order view.
Where to place the link
- the footer of every page, next to the terms and the returns policy;
- the order confirmation and the shipping email, with the order number in the link;
- the order detail page in the customer account, for customers who do log in;
- the pre-contract information and the terms, which must now mention the function and where to find it.
On orders that carry no right of withdrawal, such as made-to-measure goods or a booking for a fixed date, leave the link out of that order's email and say why.
Testing before you rely on it
| Check | How |
|---|---|
| Reachable without login | open the link in a private window from the footer and from an order email |
| Prefill works | follow the link from a real order email and see the order number filled in |
| Two steps | the first button does not submit; only "confirm withdrawal" does |
| Acknowledgement | the email arrives within a minute, with the statement and the date and time |
| Every language | the wording is the official one in each language of the shop |
| Keyboard and screen reader | the form works with Tab and Enter, labels are read out, errors are clear |
| Your team sees it | the order is tagged or noted, and someone is alerted |
The last two matter more than they seem. The form is part of your service under the European Accessibility Act, and a withdrawal nobody on your team notices still counts from the moment the customer clicked.
What it costs
For most shops this is a day or two of work, or an app subscription. Apps charge a monthly fee; a form-based solution costs the setup time; a custom extension costs a few developer days. Weigh that against the risk: consumer authorities enforce the rule, and in Germany competitors can send warning letters over missing withdrawal information, as they do for the Impressum. What else a shop meets in Germany is in selling online in Germany; for UK shops selling into the EU, see selling to the EU from the UK.
Cases that need a decision
- SubscriptionsA subscription concluded online has a withdrawal period after the contract is concluded; the button covers that period. Cancelling a running subscription afterwards is a separate topic, often with its own rules per country.
- Digital content and servicesIf the customer agreed that delivery starts during the withdrawal period and acknowledged losing the right, there may be nothing left to withdraw from; show the button only where the right still applies.
- Part of an orderLet the customer name which items the withdrawal covers, so the statement is clear.
- Orders placed by phone or emailThe function is required for contracts concluded through an online interface; for orders taken another way, your usual withdrawal route applies.
- Business customersThe right of withdrawal belongs to consumers; a B2B shop does not need the button, but a shop selling to both does.
After the click
The button starts your process, not the end of it. Within 14 days of the withdrawal you refund the customer, including the standard delivery cost, with the same payment method unless agreed otherwise; you may wait until the goods are back or the customer shows they were sent. Make sure your team sees each withdrawal on the order, so the refund and the return label follow without a customer having to ask twice.
Withdrawal button questions
Does Shopify have a built-in EU withdrawal button?
Not as of October 2026. Shopify merchants use an app, a page with a form and Shopify Flow, or a small custom extension.
Can customers be required to log in to withdraw?
The safe reading is no: the function must be easy to reach for the whole withdrawal period. Offer it to guests, with an order number and email, and in the account for those who are signed in.
Is a contact form enough?
Not on its own. The law asks for the labelled link, a separate confirmation step and an acknowledgement on a durable medium with the date and time.
Does the withdrawal button apply to shops outside the EU?
Yes, for sales to consumers in the EU through an online interface, wherever the shop is based.
