Skip to main content

MageMe EU Withdrawal | Setup Checklist

After installing the module, work through this checklist before enabling it in production. Each item links to the page with full detail. The module is disabled by default — leave it off until every applicable item is done.

1. Pick the delivery anchor

The 14-day withdrawal clock starts when an order transitions into a configured delivery status. This is the only mandatory field.

Where: Stores → Configuration → MageMe Extensions → EU Withdrawal → Withdrawal WindowDelivery Confirmation Statuses.

For a standard Magento workflow, select Complete. If you use custom statuses (delivered, delivered_partial), select the status applied at the moment of physical possession by the customer. The withdrawal period length (default 14 days) lives in the same group as Withdrawal Period (Days).

Admin configuration — General group

→ Full mechanics: Eligibility Rules → The 14-day clock.

2. Decide which Article 16 exclusions apply

Article 16 lists categories that can be excluded from the right of withdrawal. All four presets are off by default and you opt in only for categories that legitimately qualify in your catalogue.

PresetRequired attributeApply to
Custom-Made (Art. 16(c))is_custom_made = YesEngraved jewellery, made-to-measure clothing, configured-to-order furniture
Perishable (Art. 16(d))is_perishable = YesFresh food, cut flowers, short-shelf-life pharmaceuticals
Sealed Hygiene (Art. 16(e))is_sealed_hygiene = YesCosmetics, intimate apparel, sealed medical supplies (only if seal broken)
Sealed A/V/Software (Art. 16(i))is_sealed_av = YesSealed CDs, DVDs, packaged software (only if seal broken)

Where: Stores → Configuration → MageMe Extensions → EU Withdrawal → Eligibility Rules.

Eligibility Rules — Art. 16 presets

The required boolean product attributes are created automatically when the module installs. Enabling a preset alone changes nothing — you must also tag the qualifying products (next step).

→ Detail and seal-break workflow: Eligibility Rules.

3. Tag your products

For each preset you turned on in step 2, tag the qualifying products with the matching attribute.

Single product:

Catalog → Products → <product> → EU Withdrawal Compliance tab → set the relevant attribute to Yes → Save.

Bulk:

  1. System → Data Transfer → Export → Entity Products → CSV.
  2. Add a column for each attribute (e.g. is_perishable) and set 1 for the qualifying SKUs.
  3. System → Data Transfer → ImportProductsAdd/Update.
  4. Run php bin/magento indexer:reindex && php bin/magento cache:flush.
warning

Tagging products that do not legitimately qualify is itself a compliance violation. Have consumer-law counsel review borderline categories before applying a preset to them.

4. Configure digital content (only if you sell it)

Skip this section if your catalogue has no downloadable, virtual, or other digital products.

If you do sell digital content:

  1. Enable DetectionStores → Configuration → MageMe Extensions → EU Withdrawal → Eligibility Rules → Detection (Art. 16(m)) → Enable Digital Content Detection.
  2. Pick detection strategies — Downloadable + Virtual is the safe default. Add Bundles containing digital children if you sell mixed bundles, or Custom attribute flag if your digital products are simple-type SKUs.
  3. Enable Checkout Waiver StepStores → Configuration → MageMe Extensions → EU Withdrawal → Digital Waiver (Art. 16(m)) → Enable Checkout Waiver Step. Required for Article 16(m) to apply.
  4. (Optional) Set a BCC Merchant address under Digital Waiver → Confirmation Email for audit-trail archiving.

The waiver step renders only when a detected digital product is in the cart. Without it, no Art. 16(m) exclusion applies.

→ Detail: Digital Content Waiver.

5. Verify button labels and pre-contract block

Two settings are legally critical and have counsel-default values you should normally leave alone:

  • Step 1 Button Label — default Withdraw from contract here (Art. 11a(2) verbatim).
  • Step 2 Button Label (Confirmation) — default Confirm withdrawal.

Where: Stores → Configuration → MageMe Extensions → EU Withdrawal → FrontendButtons.

Override only with written legal advice from counsel in the target jurisdiction.

The Pre-Contract Information block is on by default and renders on the checkout payment step. Confirm:

  • Withdrawal Period (Days) in Withdrawal Window matches your T&C disclosure (default 14; extensions to 30/100 are common).
  • Return Address in Pre-Contract Information is set (or falls back to your Magento store contact address).

→ Detail: Configuration → Pre-Contract Information.

6. Translate Annex I disclosure (only if defaults aren't suitable)

Skip this section unless you operate in a Member State whose national transposition mandates wording the bundled translation does not cover (notably Germany §356a BGB, France L.221-28, Netherlands post-Bol.com).

The Annex I disclosure text lives in 22 per-locale XML files. To override, copy the bundled file into your theme and edit there — the resolver reads theme overrides before module bundles.

→ Detail: Annex I Translations.

7. Customise customer emails (optional)

The module ships seven email types and a shared branding wrapper. Defaults are functional out of the box.

If you want to brand the emails:

  • Set the USP Strip items and Social Links under Stores → Configuration → MageMe Extensions → EU Withdrawal → Customer Notifications → Branding.
  • Confirm your store name, logo, support email, and store address are populated under Stores → Configuration → General and Content → Design → Configuration → Transactional Emails — the branding wrapper reads them from there.

To customise wording:

  • Marketing → Communications → Email TemplatesAdd New Template → load one of the seven defaults → edit → save.
  • Assign your custom template in Stores → Configuration → MageMe Extensions → EU Withdrawal → Customer Notifications → \<email\> → Email Template.

→ Detail: Email Templates.

8. Review privacy retention (defaults usually fine)

  • PII Retention — default 730 days (2 years). The window during which customer name, email, IP, user agent, denial reason, and admin notes are kept before nullification.
  • Hash Retention — default 2190 days (6 years). The integrity-hash record survives this long after PII is wiped.

Where: Stores → Configuration → MageMe Extensions → EU Withdrawal → Privacy & Retention.

Defaults match the EU consumer-rights statute of limitations balanced against the commercial-records floor. Adjust only if your legal team has specific advice.

9. Hyvä theme storefront

If your storefront is on Hyvä, install the companion module — see Hyvä Theme Compatibility. On Luma storefronts the base module already covers everything.

10. Going live — final checks

Before flipping Enable Module to Yes:

  • Test the customer flow end-to-end against a delivered order: place an order → mark Complete → walk through /withdraw-contract/ → confirm the receipt email arrives at a real inbox (not just Mailpit/MailHog).
  • Inspect the receipt email's SPF / DKIM / DMARC alignment on your production SMTP. An undeliverable receipt invalidates compliance under Art. 11a(4).
  • Verify the Stores → Configuration → MageMe Extensions → EU Withdrawal → General → Frontend Route value is the one you want — changing it after launch breaks URLs already printed in shipment emails.
  • Read Legal & Compliance — particularly T&C updates and the AS-IS disclaimer.
  • Magento cron is running (* * * * * php /var/www/html/bin/magento cron:run). The module's retry runner ticks every minute.

Enable the module, flush cache, and ship it. When customer requests arrive, you'll see them in Sales → Withdrawals → Withdrawal Requests:

Admin grid with realistic requests

php bin/magento cache:flush