Is the plugin really free, with nothing held back?
Yes. It is published on WordPress.org under the GPL, and there is no premium edition with extra features. FDesign earns from setup, wording review and monthly care, which are the parts a plugin cannot do for a shop. Nothing in the plugin is limited in order to sell an upgrade.
Does installing it make my shop compliant?
Not on its own. The plugin provides the withdrawal function and the timestamped acknowledgement. The shop still has to state in the information shown before purchase, in its terms and on its returns page that the function exists and where to find it, as Article 6(1)(h) requires, and decide how returns are handled when they arrive. Check both against the law as it applies in your country.
Where does the withdrawal link appear?
On activation the plugin creates a page called Withdraw from contract with the form on it. A link to that page appears in the footer of every page and next to each eligible order in My Account, and both can be switched off in the settings. The [fdwb_button] shortcode places the same link anywhere else, for example on a returns page.
Can I label the link Cancel or Returns instead?
Not safely. Article 11a asks for the words withdraw from contract here or an equally clear phrase. A label that customers do not recognise as the withdrawal function is unlikely to meet the requirement, and Cancel reads as cancelling an order that has not shipped yet. The default label is Withdraw from contract, and the wording can be changed in the settings.
What happens when the withdrawal window has closed?
The link in My Account disappears, and the guest form no longer sends an access link for that order. A customer can still file a free text declaration: it is recorded, the customer receives an acknowledgement, and the shop decides after matching it to the order. When a declaration is recorded outside the window, the note on the order says so. Under Article 11a, a withdrawal counts as made in time if it was submitted before the period ended, so the time of receipt in the record is what matters.
Does it issue refunds?
No, deliberately. Refunds stay in the normal WooCommerce flow, through the shop’s usual payment gateway, and the shop decides on them after inspecting the returned goods. The plugin also stores no monetary amount, because what a shop owes depends on delivery costs, discounts spread across several items and the condition of the goods. A figure fixed at the time of the declaration would look official and be wrong.
What about sealed hygiene or cosmetic products?
Sealed health, hygiene and cosmetic products lose the right of withdrawal only once the customer has opened them, so an unopened item can still be withdrawn. For that reason the plugin does not exclude such products automatically: no software can tell whether a package has been opened, and that check belongs to the team receiving the return. Products that never carry the right, such as goods made to order, can be excluded by category.
Does it work behind Cloudflare and with a caching plugin?
Yes. The withdrawal page excludes itself from caching with the standard signal that WP Rocket, LiteSpeed Cache, W3 Total Cache, WP Super Cache and WP Fastest Cache all respect, on every translation of the page. Behind a CDN such as Cloudflare, switch on Behind a CDN or reverse proxy under WooCommerce, Settings, Withdrawal, Advanced. Without it, every visitor appears to come from the same address and shares one rate limit. If the CDN uses a cache everything rule, add a bypass for the withdrawal page.
A customer asked to be deleted. What happens to their withdrawal?
By default it is kept, and the erasure report says so and why. The declaration records a legal act and is the shop’s evidence that it was honoured. A shop that prefers otherwise can switch on Erasure requests under WooCommerce, Settings, Withdrawal, Advanced. The name, address and free text are then replaced with anonymised values, while the declaration, its reference and its date remain.