Improved: On Polylang and WPML sites, the links to the withdrawal page now resolve to the page translation in the visitor’s language: the printable Annex I.B form, the button in WooCommerce emails, the excluded-product “See the full withdrawal policy” link and the [ayudawp_withdrawal_link] shortcode. Single-language sites are unaffected.
Fix: The mandatory digital-content consent checkbox (Art. 16(m)) is now validated before WooCommerce PayPal Payments (and other express-checkout smart buttons) open their payment window, so the “you must accept the consent” message appears up front instead of only after returning from PayPal. The payment was never completed without the checkbox; this only corrects the confusing timing.
2.0.0
New: Configurable email sender. Two new fields in Settings (“From name” and “From address”) set the sender for the plugin’s own emails (acknowledgement, admin notification and status updates), which until now went out with the WordPress default (wordpress@yourdomain). The override is applied around each message only, the same way WooCommerce sets the sender of its own emails, so it never changes the site’s global sender. Left empty, the behaviour is unchanged.
New: Editable status-change email texts. The body of the accepted, rejected and completed emails can now be edited from Settings, so the wording matches how your shop really works (for example an instant Bizum refund instead of “a few business days”). Left empty, each falls back to the bundled default; the per-request comment field still works for one-off notes.
New: Editable (and hideable) intro text on the public form. The introductory paragraph above the form can be edited from Settings, or hidden entirely when the page already explains the withdrawal above the shortcode. The fixed legal note below it stays unchanged, since it must read identically across the form, the confirmation screen and the acknowledgement email.
New: Optional strict deadline mode. A setting under Withdrawals → Settings → Withdrawal deadline switches from the default “advisory” behaviour (never blocks, only flags late requests for review) to “strict”, which hides the My Account button and rejects new requests once the deadline plus grace days has passed. Advisory stays the default and the safe choice for goods with unpredictable delivery; strict is exact for services, digital content and shop pickup, where the period runs from a date the shop knows. A customer contesting a rejected request is never blocked by it: strict mode stops opening new requests, not handling one already open.
New: Optional “bought as a consumer” self-declaration on the form, for shops that also sell to businesses (B2B), where the right of withdrawal does not apply. Off by default; when enabled, the form shows a required checkbox declaring the purchase was made as a consumer (a natural person acting outside their trade or profession), stored with the request as durable proof. A shortcode attribute (consumer_check=”yes”) and the ayudawp_euw_show_consumer_check filter allow per-page or per-order control.
New: Permissions section to choose which user roles, besides the administrator, can view and manage withdrawal requests. Until now any Editor (and, on WooCommerce sites, the Shop manager) could see requests, which hold personal data; the request log now uses its own capability, granted only to the administrator and to the roles you tick. On update, the roles that could already see requests keep their access so nothing breaks, and you tighten it from there; new installs start administrator-only.
New: Dedicated trader contact email for the Annex I.B model form, set in Settings (Model withdrawal form section), separate from the notification address, so the public model form can show a clean contact mailbox while internal notices go elsewhere. Left empty it falls back to the notification address and then the site admin email.
New: [ayudawp_withdrawal_excluded_notice] shortcode to place the excluded-product notice with page builders (Divi, Elementor, Bricks, ShopLentor, etc.) that render their own product template and skip the standard WooCommerce hook where the notice normally appears. Drop it into the product layout and it prints the notice for the current product when that product is excluded.
New: Developer hooks. ayudawp_euw_form_before_submit (action) to render a captcha/anti-spam widget or an extra field inside the form, rejected through the ayudawp_euw_validation_result filter; ayudawp_euw_admin_email_lines to customise the admin notification; and ayudawp_euw_order_number_meta_keys to add custom order-number meta keys. The form shortcode also accepts more pre-fill attributes (name, date, scope, details).
Improved: The notification email field now accepts several recipients separated by commas, so the notice of each new request can reach more than one mailbox (shop manager and accounting, for example). Invalid addresses are dropped; if none are valid it falls back to the site admin email.
Improved: When the public form is submitted with something missing, each missing or invalid field is now highlighted in red with a short note next to it, instead of a single generic message with no visual cue, so the customer sees exactly what to fix. Accessible (aria-invalid, role=”alert”) and still without JavaScript.
Improved: After each step (confirmation, success message, validation errors) the form now scrolls into view instead of jumping to the top of the page, so the relevant content is where the customer is looking.
Fix: Order-number compatibility with Tyche “Custom Order Numbers for WooCommerce”. The resolver matched the order only against the _order_number meta, which Tyche does not use, so its customers got “we could not match this email with the order number provided” even with the right details. It now also checks Tyche’s _alg_wc_full_custom_order_number and _alg_wc_custom_order_number, with the new ayudawp_euw_order_number_meta_keys filter to add other numbering plugins.
Fix: The category “Withdrawal status” dropdown no longer offers a redundant “Standard” option that appeared not to save (in a category it meant the same as the empty option, and the save handler cleared it the same way). The per-product dropdown keeps it, where it is a real override of the category inheritance.
Fix: The Annex I.B model form no longer prints “Phone: [Phone number, if any]” when no trader phone is configured. The phone line is optional and is now omitted when empty, and the example shows as a placeholder in the settings field instead.
For older changelog entries, please check the changelog.txt file