MageMe EU Withdrawal | Configuration Reference
Complete reference for every admin setting in Stores → Configuration → MageMe Extensions → EU Withdrawal.
The page is structured to mirror the admin form — the eight sections are laid out in lifecycle order: General module setup → what the customer sees pre-contract → what's eligible at all → when the clock runs → special digital waiver path → storefront UI → customer emails → after-the-fact retention.
For conceptual deep dives see Eligibility Rules, Digital Content Waiver, Email Templates, and Annex I Translations.
On this page
- General — master enable, request number prefix, contract type, URL prefix
- Pre-Contract Information — Art. 6(1)(h) disclosure
- Eligibility Rules — Article 16 exclusion presets + Detection subgroup
- Withdrawal Window — when the clock starts and how long it runs
- Digital Waiver — checkout step, confirmation email, per-locale texts
- Frontend — button labels, placements, return reasons, review step
- Customer Notifications — 6 emails + shared branding
- Privacy and Retention — PII and hash retention windows
- reCAPTCHA — pointer
1. General
Master switches that take effect across the entire module.

| Field | Type | Default | Description |
|---|---|---|---|
| Enable Module | Yes/No | No | Activates the frontend flow and cron jobs. Complete the manual setup checklist (see Setup Checklist) before enabling. |
| Request Number Prefix | Text | (blank) | Optional prefix prepended to the withdrawal request ID in customer-facing UI. For example, RR- renders the request ID as RR-000000022. Leave blank to show the plain padded number. |
| Default Contract Type | Select | Physical goods | Default contract classification used when the module needs to pick a fallback. Options: Physical goods, Digital content (non-tangible), Digital service (SaaS / subscription), Financial services (Enterprise-tier only). |
| Frontend Route | Text | withdraw-contract | URL prefix for the customer-facing withdrawal flow. withdraw-contract renders the landing page at /withdraw-contract/. Lowercase letters, digits, dashes, and underscores only. Changing the value after the module is live invalidates any URLs printed in already-sent emails. |
2. Pre-Contract Information (Art. 6(1)(h))
Mandatory pre-contractual disclosure of the right of withdrawal, displayed on the checkout payment step. Every display is logged forensically (Art. 10 defence).
| Field | Type | Default | Description |
|---|---|---|---|
| Enable Pre-Contract Disclosure | Yes/No | Yes | Master kill-switch. When disabled, the block does not render and no display events are recorded. Disabling exposes the merchant to Art. 10 — the right of withdrawal extends by up to 12 months plus the standard 14-day period if pre-contract information was not disclosed. |
| Return Address | Textarea | (blank, falls back to Stores → Configuration → General → General → Store Information → Store Contact Address) | Where consumers send goods back. If blank, the Magento store contact address is used. |
| Display In Checkout | Yes/No | Yes | Off renders no on-page block but still records display events server-side via a predispatch fallback. Use only for sandbox testing — production must display the block. |
The actual period length (14, 30, 100 days) is set in Withdrawal Window, not here.
The Annex I text rendered on this page (covering all 22 EU locales) is based on the EUR-Lex Directive text. Counsel review is recommended before overriding the text per locale — see Annex I Translations.
3. Eligibility Rules (Art. 16 Presets)
Per-category exclusions from the right of withdrawal. All four presets are off by default; the merchant opts items out by enabling the relevant preset and tagging the products. Detailed mechanics, seal-break semantics, and product-attribute setup in Eligibility Rules.

| Field | Type | Default | Required attribute | Description |
|---|---|---|---|---|
| Art. 16(c) Custom-Made Goods | Yes/No | No | is_custom_made = 1 | Excludes products made to consumer specifications. |
| Art. 16(d) Perishable Goods | Yes/No | No | is_perishable = 1 | Excludes goods that deteriorate or expire rapidly. |
| Art. 16(e) Sealed Hygiene / Health | Yes/No | No | is_sealed_hygiene = 1 | Excludes sealed hygiene or health items only if the seal has been broken after delivery. |
| Art. 16(i) Sealed Audio / Video / Software | Yes/No | No | is_sealed_av = 1 | Excludes sealed audio/video/software only if the seal has been broken after delivery. |
Detection (Art. 16(m)) — nested subgroup
Decides what counts as digital content for eligibility purposes. The actual checkout-step waiver UI and email lives in the next section, Digital Waiver.
| Field | Type | Default | Description |
|---|---|---|---|
| Enable Digital Content Detection | Yes/No | No | Master switch. When off, no product is recognised as digital, no waiver step is required, and the Art. 16(m) preset always allows withdrawal. |
| Detection Strategies | Multi-select | Downloadable, Virtual | Heuristics: Downloadable products, Virtual products, Bundles containing digital children, Custom attribute flag. |
| Custom Attribute Code | Text | is_digital_content | EAV attribute code, read only when Custom attribute flag is in the strategies list. |
4. Withdrawal Window
Defines when the 14-day withdrawal right starts running (Art. 9(2)(b)) and how long it lasts (Art. 9(2)). Together these control the period each order's withdrawal is open.
| Field | Type | Default | Range | Description |
|---|---|---|---|---|
| Withdrawal Period (Days) | Number | 14 | 14–3650 | Period length per Art. 9(2). Extension allowed (30, 100 days, etc.) and common as a customer-trust feature. Reduction below 14 is illegal and the field rejects values outside this range. |
| Delivery Confirmation Statuses | Multi-select | (none) | — | One or more Magento order statuses whose transition marks the moment the customer received the goods. The clock starts at the earliest transition into any of the selected statuses. Multi-select supports merchants with several delivered-type statuses (complete, delivered, delivered_partial). |
Delivery Confirmation Statuses is the only mandatory field with no sensible default. Until you select at least one status, the storefront flow throws a configuration error. For a standard Magento workflow, select Complete.
5. Digital Waiver (Art. 16(m))
The checkout-step waiver UX and durable-medium confirmation email under Article 16(m). For digital products to be excluded from withdrawal, both this section and Eligibility Rules → Detection above must be on.
| Field | Type | Default | Description |
|---|---|---|---|
| Enable Checkout Waiver Step | Yes/No | No | Render the 2-checkbox waiver UI at checkout when a detected digital item is in the cart. Has no effect unless Eligibility Rules → Detection → Enable Digital Content Detection is also on. |
| Mark Virtual-Only Items as Performance-Started on Confirmation | Yes/No | No | Virtual products have no download trigger. When on, the dispatch of the confirmation email counts as performance-start for virtual-only items. Off by default — turn on only if your virtual products are services that begin immediately on purchase. |
Confirmation Email (Art. 11a(4)) — nested subgroup
Durable-medium copy of the customer's Art. 16(m) waiver, sent immediately after checkout when a digital item is in cart. Required by Art. 11a(4) Directive 2011/83/EU.
| Field | Type | Default | Description |
|---|---|---|---|
| Enabled | Yes/No | Yes | Disable only if you deliver the durable-medium confirmation through a different channel. |
| Email Template | Select | MageMe EU Withdrawal — Digital Waiver Confirmation | Choose a custom template you created under Marketing → Email Templates. |
| Email Identity | Select | General Contact | Which Magento sender identity sends the email. |
| BCC Merchant | Text | (blank) | Comma-separated audit address(es). Blind-copies every waiver confirmation. |
Per-Locale Waiver Text Overrides — nested subgroup
Per-locale Consent Text and Right-Loss Acknowledgment Text overrides for 17 explicit locales (the others fall through to the bundled translation). Empty fields fall through to the locale baseline.
→ Detail: Digital Content Waiver.
6. Frontend
Customer-facing UX for the withdrawal flow.
Buttons
| Field | Type | Default | Description |
|---|---|---|---|
| Step 1 Button Label | Text | Withdraw from contract here | Primary CTA. Default is Art. 11a(2) verbatim wording. Per-locale translations are counsel-default. Overrides are audit-logged. |
| Step 2 Button Label (Confirmation) | Text | Confirm withdrawal | Final confirmation button. Overrides audit-logged. |
Do not override the button labels unless you have received written advice from qualified consumer-law counsel in the target jurisdiction. Article 11a(2) accepts the Directive's verbatim text or a corresponding unambiguous formulation; what counts as unambiguous is a legal question.
Placements
| Field | Type | Default | Description |
|---|---|---|---|
| Show Footer Link | Yes/No | Yes | A Withdraw from contract link in the storefront footer. |
| Show in My Account | Yes/No | Yes | The sidebar link plus eligibility badges on My Orders and a withdrawal block on the order view page. |
Return Reasons
The dropdown shown to the customer per item on Step 1.
| Field | Type | Default | Description |
|---|---|---|---|
| Reasons | Array | Changed my mind, Wrong size or fit, Defective or damaged, Not as described | Code/Label pairs. Code is lowercase, snake_case, max 32 characters. Label is the visible text. An empty grid hides the dropdown entirely. |
| Enable "Other" with Free Text | Yes/No | Yes | When on, an Other option in the dropdown reveals a free-text field (max 500 characters). |
Review Step
| Field | Type | Default | Description |
|---|---|---|---|
| Return Shipping Notice | Textarea | You'll receive a prepaid shipping label in the confirmation email. | Text shown on the Review step. Leave blank to hide the row. |
| Return Policy URL | Text | return-policy | Optional link rendered next to the shipping notice. Accepts absolute URLs or relative paths. |
7. Customer Notifications and Branding
Six customer email types, each with Enabled / Email Template / BCC Merchant fields, plus a shared Branding subgroup with the USP strip and social links.
This group is documented in detail on its own page: Email Templates — variables, retry/DLQ mechanics, branding fields.
The digital-waiver confirmation email (sent on checkout when a digital item is detected) is not in this section — it lives under Digital Waiver → Confirmation Email so all digital-waiver settings sit together.
8. Privacy and Retention
Withdrawal records carry two kinds of data with different mandatory retention periods: personally identifiable fields (customer name, email, IP, user agent, denial reason, admin notes) and the content hash that is the Art. 11a(4) durable-medium proof. These settings define how long each is meant to be kept.
In the current free-tier release these are policy settings, not an automated job. The module stores your intended retention windows but does not yet run a background task that nullifies PII or deletes aged-out records — age withdrawal data out through your existing GDPR data-retention process until automated enforcement ships. The anonymised request status is reserved for that future tooling.
| Field | Type | Default | Range | Description |
|---|---|---|---|---|
| PII Retention (days) | Number | 730 (2 years) | 730–3650 | How long personally identifiable fields are intended to be kept before they are nullified. The withdrawal record itself is meant to stay — only PII fields are wiped. |
| Hash Retention (days) | Number | 2190 (6 years) | 2190–3650 | How long the content hash (Art. 11a(4) durable-medium proof) is intended to be retained. After PII is wiped, the record keeps only the hash and timestamps until this window expires; then the record is deleted entirely. Must be ≥ PII Retention. |
reCAPTCHA
The module integrates with Magento's standard reCAPTCHA configuration when Magento_ReCaptchaUi and Magento_ReCaptchaFrontendUi are installed.
To protect the guest order-lookup form, navigate to Stores → Configuration → Security → Google reCAPTCHA Storefront and set a reCAPTCHA type for Enable for EU Withdrawal Lookup Form. Configuration follows Magento's standard reCAPTCHA workflow — there is no module-specific setting.
Default values reference
Click to expand — etc/config.xml defaults verbatim, useful for diffing against a configured store.
<mageme_eu_withdrawal>
<general>
<enabled>0</enabled>
<increment_prefix></increment_prefix>
<default_contract_type>physical_goods</default_contract_type>
<frontend_route>withdraw-contract</frontend_route>
</general>
<precontract>
<enabled>1</enabled>
<return_address></return_address>
<display_in_checkout>1</display_in_checkout>
</precontract>
<eligibility>
<preset_custom>0</preset_custom>
<preset_perishable>0</preset_perishable>
<preset_sealed_hygiene>0</preset_sealed_hygiene>
<preset_sealed_av>0</preset_sealed_av>
<digital>
<enabled>0</enabled>
<detect_product_types>downloadable,virtual</detect_product_types>
<custom_attribute_code>is_digital_content</custom_attribute_code>
</digital>
</eligibility>
<withdrawal_window>
<period_days>14</period_days>
<delivery_status_code></delivery_status_code>
</withdrawal_window>
<digital_waiver>
<enabled>0</enabled>
<virtual_timer_enabled>0</virtual_timer_enabled>
<email>
<enabled>1</enabled>
<identity>general</identity>
<template>mageme_eu_withdrawal_digital_waiver_email_template</template>
<bcc_merchant></bcc_merchant>
</email>
</digital_waiver>
<frontend>
<buttons>
<button_label_step1>Withdraw from contract here</button_label_step1>
<button_label_step2>Confirm withdrawal</button_label_step2>
</buttons>
<placements>
<footer_link>1</footer_link>
<my_account_link>1</my_account_link>
</placements>
</frontend>
<retention>
<pii_retention_days>730</pii_retention_days>
<hash_retention_days>2190</hash_retention_days>
</retention>
</mageme_eu_withdrawal>
Defaults for the Customer Notifications and Branding subgroups are on Email Templates.