Description
Cancello gives your WooCommerce store the clear, easy-to-find order cancellation function that EU consumer law expects — and pairs it with a complete returns (RMA) workflow for orders that have already shipped. It works for logged-in customers and guests, and every word your customers see can be edited from the admin.
From 19 June 2026, Directive (EU) 2023/2673 requires online stores selling to EU consumers to provide an easy-to-use way to withdraw from (cancel) a distance contract. This plugin gives you that button, the durable-medium acknowledgement, and the audit trail to back it up. (This plugin is a tool to help you comply; it is not legal advice.)
Place it anywhere
- Shortcode:
[cancello_withdrawal_button](short alias:[cancello_button]) - Elementor: the Cancel Order Button widget, in the WooCommerce widget category.
- It also appears automatically on the native My Account Orders table.
A clear customer journey
- Logged-in customers see their recent orders, each with a Cancel or Return action.
- Unshipped orders a confirmation step (a popup or an inline “please confirm” link — your choice) the order is cancelled immediately. The confirmation also works completely without JavaScript, as the regulation expects.
- Shipped orders a customisable returns page: full or partial return, an item picker, a reason dropdown you control, and a details field.
- Guests are first asked whether they have an account. If they do, they’re sent to log in; if not, they look up their order with their email + order number and get exactly the same cancel/return flow.
Built for compliance
- Durable-medium receipt — the customer is emailed an acknowledgement of their withdrawal, secured with a SHA-256 verification hash.
- Audit trail — every request is stored with timestamp, IP and user agent, so you can prove what happened and when.
- Article 16 exclusions — flag individual products or whole categories as exempt from the right of withdrawal (e.g. custom-made or sealed goods); excluded orders are held for your review instead of auto-cancelled.
- Checkout consent — optional confirmations for digital content and services, so the customer acknowledges they may lose the right of withdrawal.
Make it yours — no code
- Every customer-facing text is editable from the settings screen.
- Built-in language switch with a ready-made Danish text set, plus standard
.po/.motranslation support. - Button styling controls with a live preview: colours and hover colours, font size, corner radius, full width, alignment, and independent padding for all four sides.
- One click to reset all texts back to the defaults.
Admin tools
- A dedicated Requests screen lists every cancellation and return with its status.
- Email notifications to you and the customer — with a separate recipient address for cancellations and for returns if you want them handled by different people.
- Import / export your settings and texts, and export / import the requests log (imports are appended, never overwritten) — handy for backups or moving between sites.
- Choose exactly which order statuses count as cancellable and which count as shipped.
Reliable by design
- HPOS (High-Performance Order Storage) compatible.
- Cache-friendly — the flow issues a fresh security token on each use, so it keeps working behind full-page caching.
- No accidental duplicates — double-clicks and double submissions are prevented on both the browser and the server, so a slow connection never creates two records.
- No automatic refunds: cancelling sets the order to Cancelled and notifies you, leaving you in full control of any refund.
Installation
- Install via Plugins Add New Upload, or upload the plugin folder to
/wp-content/plugins/. - Activate the plugin (WooCommerce must be active).
- Go to Cancel Orders Settings to set your statuses, texts, styling and email recipients.
- Add
[cancello_withdrawal_button]to any page, or drop the Cancel Order Button Elementor widget where you want it. The action also appears on the My Account orders table automatically.
FAQ
-
Do I need this for the new EU rules?
-
If you sell to EU consumers, from 19 June 2026 you must offer an easy way for customers to withdraw from (cancel) their order. This plugin provides that button, the acknowledgement email and the record-keeping. It is a tool to help you comply and does not constitute legal advice.
-
How does the plugin know an order has shipped?
-
You choose which order statuses count as “shipped” (default: Completed). Orders in those statuses show the return flow; all other eligible orders show the cancellation flow.
-
Does cancelling refund the customer automatically?
-
No. Cancelling sets the order to Cancelled and notifies you; you issue any refund manually in WooCommerce.
-
Can guests cancel or return without an account?
-
Yes. Guests verify ownership with their email address and order number, then get the same cancel/return flow as logged-in customers.
-
Can I change the wording?
-
Yes — every customer-facing text is editable in the settings, and you can reset everything to the defaults with one click. A Danish text set is included.
-
Does it work without JavaScript?
-
Yes. The two-step withdrawal confirmation has a full no-JavaScript fallback.
-
Is HPOS supported?
-
Yes, the plugin declares HPOS compatibility.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Cancello – Withdrawal & Returns for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Cancello – Withdrawal & Returns for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- First public release.
- Easy-to-find cancellation / withdrawal button via shortcode, Elementor widget and the My Account orders table.
- Works for logged-in customers and guests (email + order-number lookup).
- Unshipped orders: two-step confirmation with a no-JavaScript fallback. Shipped orders: full/partial returns (RMA) flow with item selector and a customisable reason dropdown.
- Durable-medium receipt email with SHA-256 verification and a full audit trail (timestamp, IP, user agent).
- Article 16 product/category exclusions and checkout consent for digital content and services.
- Every customer-facing text editable, built-in language switch with a Danish text set, and one-click reset to defaults.
- Button styling controls with live preview (colours, hover, font size, radius, four-sided padding, width, alignment).
- Separate cancellation/return email recipients; settings and requests-log import/export.
- Duplicate-submission protection on the browser and server. HPOS compatible and cache-friendly.