EU Withdrawal Button in WooCommerce: Set It Up and Test It
The EU withdrawal button is mandatory since 19 June 2026. How to add it to WooCommerce with Germanized, German Market or a free plugin, and how to test it.
Contents
Since 19 June 2026, every online shop in the EU that sells to consumers needs a withdrawal button: a function labelled “withdraw from contract here” or an equally clear wording (in Germany „Vertrag widerrufen“), through which customers withdraw online and immediately receive a confirmation of receipt. In WooCommerce, the quickest routes are Germanized from version 4.0 (free), German Market from version 3.58, or the free plugin “EU Order Withdrawal Button for WooCommerce”. Installing it takes little time. Whether the button works in everyday use only shows in a test with a guest order, and the checklist for that is further down.
For context: I am a WooCommerce developer, not a lawyer. In German shops I usually cover the legal requirements with Germanized. This article explains the technical side and quotes the law. Whether your legal texts fit is a question for your legal text provider or a law firm.
What the law requires
The obligation comes from EU Directive 2023/2673, which adds Article 11a to the Consumer Rights Directive. Member states had to apply it from 19 June 2026, and each one wrote it into national law. In Germany it is Section 356a of the Civil Code (BGB), so the German labels are „Vertrag widerrufen“ and „Widerruf bestätigen“. The directive describes the process quite precisely. Translated into what you need to see in your shop:
| What Article 11a requires | What it means in the shop |
|---|---|
| labelled “withdraw from contract here” or an unambiguous corresponding wording, easily legible | a button or link with exactly this text in the shop's language. A general “Contact” or “Service” is not unambiguous. |
| continuously available throughout the withdrawal period, prominently displayed and easily accessible | always visible, also for guests without an account and on mobile, not hidden behind the cookie banner |
| the consumer provides or confirms their name, details identifying the contract and the channel for the confirmation of receipt | a form with name, order number and email address |
| submission via a confirmation function labelled “confirm withdrawal” | a second step with its own button carrying exactly this label |
| confirmation of receipt without delay on a durable medium, including the content of the withdrawal and the date and time of receipt | an automatic email to the customer that reliably arrives |
A withdrawal that the customer sends through the button before the period ends counts as made in time. Letter and email remain possible, the button comes on top. No shop system takes this off your hands, as the comparison Shopify or WooCommerce also shows: it applies on both.
For German shops it also affects the legal texts. Under Article 246a § 1 EGBGB, the withdrawal policy has to say that the withdrawal function exists and where it is. The German model withdrawal policy has a new sentence for this since June, which tells customers that they can also exercise the right of withdrawal online at the address of your withdrawal page.
The obligation only covers contracts with consumers. A pure B2B shop that sells exclusively to businesses does not need a withdrawal button. A shop for businesses and consumers does.
Germanized, German Market or a separate plugin
Which route fits depends on what already runs in your shop. The two common legal compliance plugins for German WooCommerce shops now include the button (as of 22 October 2026):
| Route | When it fits |
|---|---|
| Germanized from version 4.0 | You already use Germanized. The button is part of the free plugin, currently version 4.1.6 with more than 70,000 active installations. |
| German Market from version 3.58 | You use German Market, the paid plugin by MarketPress. It collects withdrawal requests in one WooCommerce menu. |
| EU Order Withdrawal Button for WooCommerce | You use neither of the two, for example outside Germany. Free, by the Germanized maker vendidero, version 2.4.5 of 20 October 2026, more than 6,000 active installations, compatible with WPML. |
| form plugin without a shop connection | Rarely the right choice: it does not know your orders, and the order number is just a text field. |
| custom development | The shop has its own checkout, subscriptions or a headless front end. As a WooCommerce developer I build this individually, the effort depends on the shop. |
If you use Germanized, you do not need the extra plugin. vendidero itself states that the function is included from Germanized 4.0. I would avoid two withdrawal buttons in the same shop, because customers then do not know which one counts. What Germanized Pro and other extensions cost per year is covered in What does a WooCommerce store cost?
How to set up the withdrawal button
The steps apply to Germanized and to vendidero's standalone plugin, which share the same technology and shortcodes. German Market uses other menu names and shortcodes, but the checklist further down applies in the same way.
- Test copy and backup. Set up the button on a staging copy of the shop first, if you have one. A backup beforehand is a must.
- Install or update the plugin. Bring Germanized to version 4.0 or newer, otherwise install “EU Order Withdrawal Button for WooCommerce”. With Germanized the settings are under WooCommerce, Settings, Germanized, General, withdrawal button. With the standalone plugin you find them under WooCommerce, Settings, Advanced.
- Publish the withdrawal page. The plugin creates it as a draft, with the form as the shortcode [eu_owb_order_withdrawal_request_form]. As long as the page is a draft, the shop does not show the button at all, according to vendidero. If the button is missing although the plugin is active, check this first.
- Place the button. The plugin adds it to the footer automatically, by default only on pages that WooCommerce counts as part of the shop. I would also add the link to the footer menu of all pages, so it can be reached from the home page, the blog and the contact page as well. If the automatic output does not suit your theme, switch it off and add the link via Appearance, Menus, the site editor or the shortcode [eu_owb_order_withdrawal_button].
- Enable the link in the customer account. One setting also shows the withdrawal option next to the orders under “My account”. Logged-in customers then find it where they look for their order anyway.
- Validate guest withdrawals. Since version 2.4.2 you decide whether the plugin checks, for withdrawals without an account, that the order exists and the email address matches it. After an update this check is set to “none”, and the form then also accepts withdrawals for orders that do not exist. I would switch the check on.
- Set up the emails. The templates for receipt, confirmation and rejection are under WooCommerce, Settings, Emails. For the confirmation of receipt to arrive, the shop should send through a proper mail server (SMTP) rather than the web server's mail function.
- Update the withdrawal policy. The sentence with the address of your withdrawal page belongs in the policy. If you use a legal text service, check that its current version with this sentence actually appears in your shop.
Checklist: does your withdrawal button really work?
You cannot see in the back end whether the button works. Only a run-through from the point of view of a customer who is not logged in shows it:
- Place a test order as a guest, without an account, using a payment method you can cancel afterwards.
- Open the shop on a phone. Can you find the withdrawal button without searching, and is the footer free of the cookie banner or a chat window?
- Tap the button and fill in the form with name, order number and email address. Is the second button labelled “confirm withdrawal” or its equivalent in your shop's language?
- Check the inbox, including the spam folder. Has the confirmation of receipt arrived, and does it contain the content of the withdrawal, the date and the time?
- Look in the back end. Did the shop notify you, and is the order in the right status, with vendidero's plugin its own status for pending withdrawals?
- Test a partial withdrawal with an order of several items, if you offer it.
- In a multilingual shop, go through button, form and emails in every language.
- Open the withdrawal policy. Does it mention the online function with its address?
I would repeat this run-through after every major update of WooCommerce, the theme or the legal plugin. A theme update that rebuilds the footer can remove the button without anyone noticing. If your shop is covered by WordPress support, this test belongs in the update routine as a fixed item.
Frequently asked questions
Since when is the withdrawal button mandatory?
Since 19 June 2026, in all EU member states. It applies to contracts with consumers concluded through a website or app, so to every WooCommerce shop with private customers. The basis is Article 11a of the Consumer Rights Directive, in Germany Section 356a BGB.
Does a B2B shop need the withdrawal button?
Only for orders from consumers. A shop that sells exclusively to businesses does not need it. If you sell to businesses and consumers, the shop needs the button.
Is the withdrawal button in Germanized free?
Yes. It has been part of the free Germanized since version 4.0 and is not marked as a Pro feature. For shops without Germanized, the same maker offers the free plugin “EU Order Withdrawal Button for WooCommerce”.
Is an email address or a contact form enough?
No. The law requires a function with two steps, “withdraw from contract here” and “confirm withdrawal” or equivalent wordings, plus an automatic confirmation of receipt. Letter and email remain available to customers in addition, but they do not replace the button.
Do I need to update my withdrawal policy?
In Germany, yes. It has to state that the online withdrawal function exists and where to find it. The German model withdrawal policy has contained a sentence for this since June 2026, completed with the address of your withdrawal page. In other EU countries, check the national rules with your legal text provider.
What is the difference from the cancellation button?
Germany's cancellation button ends ongoing contracts such as subscriptions, while the withdrawal button reverses a contract within the withdrawal period. Germany's consumer advice centres (in German) point out that businesses have to keep the two functions clearly separate. If you sell subscriptions through WooCommerce in Germany, the shop needs both, separate from each other.
Setup and testing by a developer
You would rather not work through theme, footer and mail delivery yourself? I set up the withdrawal button in your WooCommerce shop, adapt it to your theme and test the whole process with a guest order. Your legal text service or law firm still provides the legal texts. Write to me via the contact form or call +49 89 3288 6771.