Description
BKM EU Withdrawal Button adds a compliant online withdrawal function – the “withdrawal button” – and a clear two-step right-of-withdrawal form to any WordPress site, plus a complete back-office to manage every request. It is built around the EU Consumer Rights Directive 2011/83/EU and the new withdrawal-function rules introduced by Directive (EU) 2023/2673 (Article 11a), which apply from 19 June 2026.
Whether you run a service, a digital product, or a physical goods store – with or without WooCommerce – this plugin handles the entire withdrawal process from submission to resolution.
Form Features
- Two-step form – the customer fills in their details on step 1, reviews everything on step 2, then confirms.
- Optional floating withdrawal button that can be shown on every page and linked to your withdrawal page (Article 11a).
- Show or hide each field, and set it required or optional, from the admin settings. Full Name, Order Number and Email are always shown and required, as the EU withdrawal function requires.
- Collects Full Name, Email, Phone, Address, Postal Code, Order Number, Contract Type, Withdrawal Scope, Order/Contract Date, Description of Goods/Service and Additional Comments.
- Supports partial withdrawal – the customer can withdraw a full order or specific items.
- File attachment support – customers can upload supporting documents.
- Fully customisable appearance – colours, button styles, border radius, and label size.
Admin Panel Features
- All Requests – view and manage all withdrawal submissions in one place
- Status management – update request status with full history log
- Internal notes – add private notes to any request (not visible to customer)
- Auto-generated reference number for every request (format: WD-2026-00001)
- Filter requests by status, search by name, email, order number, or reference
- “EU Law Info” reference page summarising the Directive, the 31 covered countries, common exceptions and penalties
Email Notifications
- Customer receives a confirmation email on submission – a dated acknowledgement of the withdrawal declaration on a durable medium
- Admin receives a notification email for every new request
- Customer receives a status update email whenever their request status changes
Export Tools
- Export requests to CSV
- Export requests to Excel
- Export respects current filters – export only what you see
- Bulk export by selecting specific records
Shortcode
Place the withdrawal form anywhere using:
[bkmeuwi_withdrawal_form]
Screenshots








Installation
- Upload the plugin zip via Plugins > Add New > Upload Plugin
- Activate the plugin through the Plugins menu
- Go to EU Withdrawals > Plugin Settings to configure the form
- Add the shortcode
[bkmeuwi_withdrawal_form]to any page where you want the form to appear - Check EU Withdrawals > Setup Guide for step-by-step instructions
FAQ
-
Does this plugin require WooCommerce?
-
No. This plugin works on any WordPress site regardless of which eCommerce solution you use.
-
Which EU directive does this comply with?
-
EU Directive 2011/83/EU on consumer rights (the 14-day right of withdrawal), together with the online withdrawal-function requirements added by Directive (EU) 2023/2673 (Article 11a), which apply from 19 June 2026.
-
Can I customise the form appearance?
-
Yes. From Plugin Settings you can change colours, button styles, border radius, and label font size.
-
Can I choose which fields appear and which are required?
-
Yes. Under Plugin Settings you can show or hide each form field and set it as required or optional. Full Name, Order Number and Email are always shown and required because the EU withdrawal function (Article 11a) requires them; every other field is under your control.
-
My confirmation emails are not arriving. What should I do?
-
The plugin sends email through WordPress (wp_mail). On many hosts the built-in PHP mail function is unreliable or gets filtered as spam. For dependable delivery — including the durable-medium acknowledgement the Directive expects — install a dedicated SMTP plugin (for example WP Mail SMTP or FluentSMTP) and connect it to your mailbox or a transactional email service. Also set a real From name and a valid admin email under Plugin Settings.
-
Where are withdrawal requests stored?
-
All requests are stored securely in your WordPress database. You can view, manage, and export them from the EU Withdrawals admin menu.
-
Is the plugin translation-ready?
-
Yes. The plugin is fully internationalised and ready for translation using the text domain bkmeuwi-withdraw-from-contract.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“BKM EU Withdrawal Button – Right of Withdrawal Form” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “BKM EU Withdrawal Button – Right of Withdrawal Form” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.0
- Full compliance overhaul for EU Directive 2011/83/EU and the new online withdrawal-function rules of Directive (EU) 2023/2673 (Article 11a), applicable from 19 June 2026.
- Added an optional floating withdrawal button (Article 11a) that can be displayed on every page and linked to your withdrawal page, configurable under Plugin Settings.
- Restored and expanded admin control over form fields: each field can now be shown or hidden, and set required or optional, from Plugin Settings. Full Name, Order Number and Email remain always shown and required, as mandated by Article 11a for the withdrawal function.
- Added Contract Type field (Purchase of Goods / Provision of Services / Digital Content) and a dynamic Date field whose label adapts to the selected contract type.
- Added Withdrawal Scope field (Full Order / Specific Items) to support partial withdrawal as recognised by EU law.
- Renamed Product Details to Description of Goods/Service; it becomes required automatically when “Specific Items” is selected.
- Replaced the Withdrawal Reason field with an optional Additional Comments field — consumers may withdraw without giving any reason (Article 9).
- Two-step submission with a durable-medium acknowledgement email that records the content and the date and time of the withdrawal declaration.
- Confirmation and admin notification emails now include the contract type, withdrawal scope, relevant date, description and any additional comments.
- Admin request detail view now displays the contract type, withdrawal scope and the relevant order/contract date.
- CSV and Excel exports now include the new contract type, withdrawal scope and date columns, with human-readable labels.
- Added an “EU Law Info” admin page summarising the Directive, the 31 covered countries, common Article 16 exceptions and penalties, with a link to the official text on EUR-Lex.
- Database schema updated with new columns (contract_type, withdrawal_scope, contract_date, date_received) and relaxed nullability so optional or hidden fields can be stored empty; withdrawal_reason renamed to additional_comments. Includes an automatic, data-preserving migration for existing installations.
1.0.2
- Validated the Form Width design setting against a strict allow-list of CSS dimension values to prevent CSS injection.
- Moved remaining admin-area inline style and script blocks into properly enqueued CSS/JS files.
- Rewrote the listing and export database queries to use fully literal, fixed-placeholder $wpdb->prepare() calls (including a fixed 50-slot IN() list for bulk export), so every query is statically verifiable by Plugin Check.
- Shortened the readme short description to meet the 150-character limit.
1.0.1
- Fixed WordPress.org review issues: removed arbitrary CSS insertion, implemented wp_enqueue for assets, updated naming prefixes, removed direct core file includes.
- Rebranded plugin to better reflect EU Directive compliance.
1.0.0
- Initial release.
