DrSmart Withdrawal & Cancellation Requests for WooCommerce

Description

Since 19 June 2026, Article 11a of the Consumer Rights Directive requires an online
withdrawal function that is prominently displayed, easy to find and continuously
available throughout the withdrawal period. Withdrawing must not be harder than
buying was.

This plugin adds that function to your store, records every declaration as dated
evidence with its own reference number, and gives you a back office to work
through the requests.

A declaration is accepted even when no order can be matched. That is deliberate:
the consumer’s right does not depend on your shop finding their record.

Six languages, and two separate language settings

The plugin ships with complete Dutch, German, French, Spanish and Italian
translations alongside English as the source language, using the legal
terminology each country actually uses rather than a literal rendering of the
English.

There are two language settings, not one: what your customers see and what your
own back office shows. A Dutch shop run from an English admin sends Dutch
customers Dutch notices, which is impossible when a plugin simply follows the
site language.

Every string is translation-ready and the .pot file is included, so any further
locale can be added through translate.wordpress.org.

What your customers get

  • A clear two-step form: identify the purchase, then declare the withdrawal
  • Works for guests and for logged-in customers alike
  • Partial withdrawal: select which order lines and which quantities
  • No reason required, because the directive does not oblige consumers to give one
  • A confirmation e-mail with their reference number
  • A printable confirmation document behind a signed link, valid for two years, which they can save as PDF as proof they declared in time

What you get

  • Requests list with search, status filters, sorting and a deadline column that flags what is expiring
  • Detail screen with four independent statuses: declaration, return, exchange and refund, each with its own permitted transitions
  • Full history of every status change, with internal notes
  • Sequential reference numbers, generated atomically so two customers submitting in the same second can never share one
  • Deadlines calculated from the delivery date, not the order date, as the directive requires
  • A panel on the WooCommerce order screen showing any linked request, so nobody processes a refund without seeing it
  • Every e-mail logged, sent or failed, so you can answer a customer who says they never received their confirmation

Privacy and retention

  • Nothing is sent to any external service. All data stays in your own database.
  • IP addresses and user agents are not stored unless you switch that on, and are hashed where they are used at all.
  • Optional automatic anonymisation once your retention period ends: personal data is overwritten, the dated record of the declaration is kept.
  • Native integration with Tools then Export and Erase Personal Data, plus suggested privacy policy wording.
  • Data is preserved on uninstall by default, because declarations are evidence you may be required to produce.

WooCommerce

WooCommerce is not required, but without it a declaration cannot be matched to an
order. With it you get order matching on number plus e-mail address, order lines
with already-refunded quantities deducted, delivery-date deadlines and the order
screen panel.

Compatible with High-Performance Order Storage and with legacy order storage: all
order access goes through the WooCommerce CRUD layer, so no query touches the
posts tables directly.

For developers

Filters and actions throughout: drs_wd_registered_features, drs_wd_settings_schema,
drs_wd_status_transitions, drs_wd_resolve_order_number, drs_wd_delivery_date,
drs_wd_client_ip, drs_wd_reason_options, drs_wd_evidence_number, drs_wd_mail,
drs_wd_declaration_created, drs_wd_status_changed, drs_wd_request_anonymised.

Templates can be overridden from your theme by copying them to
yourtheme/eu-withdrawal/.

No Composer dependencies, no bundled libraries, PHP 7.4 baseline.

Installation

  1. Install and activate the plugin. A page called “Withdrawal and cancellation” is created automatically with the form on it.
  2. Go to Withdrawals then Settings and set your notification address, sender address and return address.
  3. Set the customer language if it should differ from your site language.
  4. Link the page from your footer or main menu so it is findable from every page, as the directive requires.

FAQ

Does this plugin guarantee legal compliance?

No. The plugin provides technical building blocks such as a discoverable withdrawal
function, a two-step flow, deadline calculations, customer acknowledgements and an
audit trail. Legal compliance also depends on your products, notices, terms, store
configuration and jurisdiction. No plugin can guarantee legal compliance. This
plugin is not legal advice; have a qualified consumer-law specialist review your
implementation.

Why does the form still accept a request after the 14 days have passed?

Because the period can be extended by up to twelve months if the consumer was not
properly informed of their withdrawal right. That judgement belongs to you, not to
a form. The request is recorded and flagged as expired, and you decide.

Can customers withdraw from part of an order?

Yes. They select the lines and the quantities. Quantities already claimed in other
requests, and quantities already refunded in WooCommerce, are deducted.

Where is the confirmation document?

A link is included in the customer’s confirmation e-mail and at the top of the
request in your back office. It opens a printable page they can save as PDF. The
link is signed and cannot be altered to reach another customer’s document.

What happens to my data if I delete the plugin?

Nothing, by default. Declarations are evidence you may be required to keep, so
they are preserved unless you explicitly opt out in the settings.

Does it work without WooCommerce?

Yes, as a standalone declaration form. Order matching, order lines and refunds
require WooCommerce.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“DrSmart Withdrawal & Cancellation Requests for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Initial release.