WordPress.org

Plugin Directory

EU Consumer Rights for WooCommerce – Guarantee Notice, GARAN Label & Withdrawal Button

EU Consumer Rights for WooCommerce – Guarantee Notice, GARAN Label & Withdrawal Button

Description

Regulation (EU) 2025/1960 introduces a harmonised legal-guarantee notice and a durability label (GARAN) for goods sold to consumers in the EU. EU Legal-Guarantee Notice & GARAN Durability Label for WooCommerce adds both official graphics to your WooCommerce store — automatically on every product page, at checkout, and in order confirmation emails — in the official language of your choice, out of all 24 EU languages.

From 27 September 2026, every trader selling goods to consumers in the EU must display the harmonised notice on the legal guarantee of conformity, and must also show the GARAN durability label wherever the producer offers a free, whole-product durability guarantee of more than two years. Both designs are fixed by Commission Implementing Regulation (EU) 2025/1960 — the notice in Annex I, the label in Annex II.

Shops know these under their own national names. In Germany and Austria it is the notice on the gesetzliche Gewährleistung, and the label covers a gewerbliche Haltbarkeitsgarantie. In France it is the notice on the garantie légale de conformité, with the label for a garantie commerciale de durabilité. In Spain, the garantía legal de conformidad and the garantía comercial de durabilidad. In Italy, the garanzia legale di conformità and the garanzia commerciale di durabilità. In the Netherlands and Belgium, the wettelijke garantie and the commerciële duurzaamheidsgarantie. One Regulation and one set of official artworks sits behind all of them, and this plugin ships every language edition.

Everything below is 100% free. There is no Pro version, no license key, and no locked feature.

This plugin is a display helper. It shows the official harmonised graphics as intended by the Regulation. It does not provide legal advice and does not guarantee that your store is legally compliant — whether and how the rules apply to your business is for you (and, if needed, your legal advisor) to determine.

EU Legal-Guarantee Notice & GARAN Durability Label for WooCommerce is an independent WooCommerce plugin and is not affiliated with or endorsed by the European Union or the European Commission.

Features

EU Legal-Guarantee Notice (Annex I)

  • The official harmonised legal-guarantee notice, in all 24 EU languages, rendered from the Commission’s own artwork — not a re-creation.
  • Automatic placement on every WooCommerce product page, at 7 selectable positions (before the summary, under the product image, after the title, after the price, after the short description, after Add to cart, or near the tabs).
  • Three display modes: Popup (compact row that opens the full notice in a dialog), Full (the complete graphic shown inline) or Nested (a compact trigger that expands the full graphic in place).
  • Three trigger row styles — Minimal, Classic (teal “View” button), or Custom (plain clickable text with a shield icon) — each with your own trigger text (default “Your legal guarantee rights”, translated) and adjustable text size.
  • Adjustable maximum notice width, so the graphic sits comfortably in any theme.
  • Optional header notice: a “Your legal guarantee rights” link automatically added to your site’s navigation menu (desktop, tablet and mobile), with a hover preview and click-to-open modal — falls back to a standalone banner if no menu can be found.
  • Shows automatically on the Checkout page, under the “Checkout” heading — works with both the classic shortcode checkout and the WooCommerce block-based checkout.
  • Optional inclusion in WooCommerce order confirmation emails (processing, on-hold, completed, and customer invoice), in both HTML and plain-text format, customer-facing only (never the admin’s own copy) — choose between a full embedded graphic, a compact text line with a link, or the graphic sent as a real file attachment.
  • Click-to-open notice with a direct link to the matching Your Europe legal-guarantee information page for your selected language.
  • Manual placement anywhere via the [eu_guarantee_notice] shortcode or the “EU Guarantee Notice” Gutenberg block.
  • Works without WooCommerce: on any WordPress site selling goods, place the notice and the label with the shortcodes or blocks.
  • On Polylang and WPML sites, “Automatic” language follows the language each visitor is reading, with nothing to set up.
  • Optional “Powered by GARAN Labs” credit line.

GARAN Durability Label (Annex II)

  • Appears automatically for any product with a manufacturer guarantee of 3 years or more, configured in a dedicated “EU Guarantee” product data tab (duration in whole years, Brand/Trademark, Model identifier) — with inline help text on the eligibility threshold and a live label preview as you type.
  • Text-fit check: brand, model and duration are measured against the official label’s fixed layout, using the label’s own font. Anything too wide is flagged live in the editor and on save — and compressed on the label so it never runs into the QR code or the next field.
  • Variable product support: each variation can override the GARAN label from its own panel on the Variations tab (show/hide, duration, Brand/Trademark, Model identifier), with its own live preview — any field left blank uses the parent product’s value. On the product page the label switches as the shopper picks a variation, and cart, checkout, and order emails show each ordered variation’s own label.
  • Artwork-fit safeguards so long Brand/Trademark or Model text never breaks the label design: a 40-character cap enforced both in the editor (with a live counter) and on save, plus automatic font-shrinking with ellipsis truncation when the compact label graphic is rendered for order emails.
  • Rendered from vector SVG artwork, so it stays sharp at any size, with a site-wide adjustable badge width.
  • Same three display modes (Popup / Full / Nested) and the same 7 position choices as the notice, set independently per widget.
  • Shown at checkout (classic and block checkout) and on the classic Cart page, under each qualifying item’s thumbnail, with its own separate, smaller badge-width setting. Items carrying an identical label share one, instead of repeating it.
  • Optional inclusion in order confirmation emails (HTML and plain-text, customer-facing only), per qualifying product — a compact text line with a link, the full label graphic embedded directly (rendered server-side with the bundled font and template, no ImageMagick/librsvg required), or sent as a real file attachment.
  • Manual placement via the [eu_garan] shortcode (optionally overriding years/brand/model explicitly, e.g. [eu_garan years="5" brand="Acme" model="AC-1200"], which skips the eligibility check) or the “GARAN Label” Gutenberg block, with its own live preview in the editor.
  • Links through to the official Your Europe commercial-durability-guarantee information page.
  • Site-wide enable/disable toggle independent of per-product settings.
  • Vendor GARAN label image upload: if a manufacturer or vendor already supplies you with a ready-made GARAN durability label image for a product, upload it on the dedicated “Vendor GARAN Labels” admin page (under EU Guarantee & GARAN) — it then replaces the generated label everywhere it would normally show for that product: product page, checkout, cart, shortcode/block, and order-confirmation emails (link, embedded, and attachment formats alike). Qualifies the product on its own, with no need to also fill in its Duration/Brand/Model fields — a required “Duration (years)” field on the same page fills in the compact preview badge’s number.

EU Order Withdrawal Button (Directive (EU) 2023/2673) — requires WooCommerce

  • A withdrawal form page (“Withdraw from contract”) is created as a draft with the [eggl_wd_order_withdrawal_request_form] shortcode — publish it to switch the withdrawal feature on.
  • Optional withdrawal button in the footer (shop pages only, or every page), and an optional “Withdraw from contract” link in the header menu (desktop and mobile, classic and block themes). Place the button anywhere else with [eggl_wd_order_withdrawal_button]. The button wording can be changed under Withdrawals Settings Button text.
  • My account integration: a “Withdraw” button next to each order that can still be withdrawn, in My account Orders and on the order’s own page.
  • Partial withdrawals: customers choose which items (and how many) to withdraw. Guests get a “Choose items” link in their confirmation email once their email matches the order.
  • Guest validation levels (none, order number or email, order must exist, order and email must match), plus built-in spam protection (honeypot field, submit-time check, IP limits).
  • Configurable withdrawal period (days from completion), non-refundable product types (virtual by default), mandatory form fields, and an optional “additional information” field.
  • Five emails: request received (customer), new request (admin), request confirmed, request rejected with reason (customer), and request deleted (admin) — all editable under WooCommerce Settings Emails.
  • Manage requests under EU Guarantee & GARAN Withdrawals Requests: confirm, reject or delete individually or in bulk, search, filter by status, preview. Requests also show on the WooCommerce order screen, with “Pending withdrawal” and “Withdrawn” order statuses.
  • Refunds on a confirmed withdrawal are linked to it automatically; withdrawn quantities are shown to the customer on their order.
  • Privacy tools: withdrawal data is included in WordPress personal-data export and erasure.
  • Independent of the standalone “EU Order Withdrawal Button for WooCommerce” plugin: it keeps its own requests, statuses, emails and settings, so both can be active at once. Theme template overrides go in woocommerce/eggl-withdrawal/.
  • Based on “EU Order Withdrawal Button for WooCommerce” by vendidero (GPLv3).

Under the hood

  • Site Health checks: Tools Site Health (and a status panel at the top of the settings page) tells you in plain words when the notice or the label is not actually being shown, and what to change.
  • Order-email label images are drawn on your server; on hosts without PHP’s GD extension, your browser draws them in the background instead, whenever you open a product in the editor.

  • Everything renders locally as static graphics from your own server — the plugin makes no outbound API calls and sends no shop or shopper data anywhere, ever.

  • No account, license key, or third-party service required — install and it works.
  • Choose your store’s display language from all 24 official EU languages, with an automatic fallback to English if a translated graphic is ever missing.
  • Built for WooCommerce’s product, cart, checkout, and email templates (both HTML and plain-text order emails), and for the WordPress Block Editor.
  • Lightweight: CSS/JS only load on the pages that actually need them (product, checkout, cart, or wherever the header notice appears) — no dashboard-wide bloat.
  • Fully translatable admin interface, with a dedicated text domain.
  • Clean removal: settings are kept on delete/reinstall by default, or fully wiped via an opt-in “delete all settings on uninstall” toggle.

Keywords: EU legal guarantee notice, EU withdrawal button, Widerrufsbutton, right of withdrawal, Directive (EU) 2023/2673, Gewährleistung, Gewährleistungshinweis, garantie légale de conformité, garantía legal de conformidad, garanzia legale di conformità, wettelijke garantie, guarantee of conformity, GARAN durability label, durability label, Regulation (EU) 2025/1960, Consumer Rights Directive, WooCommerce warranty, WooCommerce guarantee plugin, consumer rights notice, product guarantee label, EU consumer protection, warranty notice WooCommerce.

Screenshots

Installation

  1. Install and activate the plugin. With WooCommerce, everything is placed automatically; without it, use the shortcodes or blocks.
  2. Go to the EU Guarantee & GARAN main menu.
  3. Choose your display language and save.
  4. The EU legal-guarantee notice now appears on your product pages. Set a manufacturer guarantee of 3+ years under a product’s Product data EU Guarantee tab to also show the GARAN durability label.
  5. Optionally turn on the header notice, checkout placement, and order-email content from the Display settings tab.

FAQ

Does this make my store legally compliant?

No. The plugin only displays the official harmonised graphics. Whether the Regulation applies to you and how to comply is your responsibility; consult a professional for legal questions.

Which languages are supported?

All 24 official EU languages. The official notice graphic is shown in the language you select in the plugin’s settings.

Does it require WooCommerce?

No. With WooCommerce, the notice and label are placed automatically on product pages, the cart, the checkout and order emails, and each product gets its own GARAN fields. Without WooCommerce, place them yourself with the [eu_guarantee_notice] and [eu_garan years="5" brand="Acme" model="AC-1200"] shortcodes, the matching blocks, or the header notice.

Does it work with Polylang or WPML?

Yes. Leave the display language on “Automatic” and the notice follows the language of the page each visitor is reading.

How do I know the notice is really showing?

Open Tools Site Health, or the plugin’s settings page: both say in plain words whether the notice and the label are being shown, where, and what to change if not.

Does it send any customer data anywhere?

No. The notice and label are static graphics rendered locally by your own server; the plugin does not call out to any external service and requires no account or license key.

Can I show the notice or label somewhere other than the automatic product-page position?

Yes — use the [eu_guarantee_notice] and [eu_garan] shortcodes, or the matching “EU Guarantee Notice” and “GARAN Label” Gutenberg blocks, anywhere in your content.

Can shoppers see the notice and label at checkout?

Yes, both can be shown on the checkout page (classic and block checkout), and the GARAN label also appears on the classic Cart page.

Can I include these in order confirmation emails?

Yes. Turn on “Order confirmation email” for either the notice or the GARAN label, then choose how it’s delivered: a compact text line with a link, the full graphic embedded in the email body, or the graphic sent as a file attachment.

Is there a paid/Pro version?

No. Every feature in this plugin is free and fully functional.

Is this an official EU plugin?

No. It’s an independent WooCommerce plugin that displays the Commission’s own harmonised artwork; it is not affiliated with or endorsed by the European Union or the European Commission.

What stops the Brand/Trademark or Model text from breaking the label design?

Each field is measured against the space the official label leaves for it, using the label’s own font. Text that won’t fit is flagged in the product editor as you type and after saving (for every variation too), and is compressed on the label so it never overlaps the QR code or the next field. Fields are also capped at 40 characters.

Can I use my own label image instead of the generated one?

Yes. If a manufacturer or vendor already supplies a ready-made GARAN label graphic for a product, upload it on the “Vendor GARAN Labels” admin page (search for the product, pick the image). It then replaces the generated label everywhere for that product — product page, checkout, cart, and order emails — until you remove it.

Does it include an order withdrawal button (Directive (EU) 2023/2673)?

Yes, with WooCommerce. A “Withdraw from contract” page (slug contract-withdrawal) with the [eggl_wd_order_withdrawal_request_form] shortcode is created as a draft; once published, a withdrawal button appears in the shop footer (or place it with [eggl_wd_order_withdrawal_button]). Manage requests and settings under EU Guarantee & GARAN Withdrawals. It is independent of the standalone “EU Order Withdrawal Button for WooCommerce” plugin (own requests, statuses, emails and settings), so both can be active at once. This module is based on that plugin by vendidero (GPLv3). Theme template overrides go in woocommerce/eggl-withdrawal/.

Reviews

October 2, 2026
Setting up compliance features for European e-commerce regulations can often be frustrating, but this plugin makes the entire process remarkably straightforward. It handles the requirements of Regulation (EU) 2025/1960 by placing official legal guarantee notices and GARAN durability labels directly where customers need to see them—on product pages, at checkout, and in order confirmation emails. What stands out most is how flexible and well-designed the integration is. You can choose between different display styles, such as popup, nested, or full views, so the notices fit naturally with your existing theme without ruining the design. It automatically supports all 24 official EU languages and integrates smoothly with WPML and Polylang to show the correct language to each visitor. Managing specific details for product variations or uploading custom vendor label images is equally hassle-free. Additionally, the recently added withdrawal button feature is a very useful touch that makes handling cancellation rights even more convenient for shoppers. From a technical standpoint, the plugin is lightweight and runs entirely on your own server. It makes no outbound API calls, sends no customer data elsewhere, and requires no account setup or license keys. The built-in Site Health checks are also a helpful touch, confirming that your notices are actively displaying correctly. It is rare to find a plugin that is completely free, easy to configure, and fully functional without any hidden paid tiers. Highly recommended for any WooCommerce store selling to customers in the EU. Many thanks to the development team for creating such a solid, reliable tool and offering it for free!
September 30, 2026 1 reply
The plugin is easy to set up and configure. The localised version is loaded automatically. Has all options you could possibly need to customise the forn-end output. Support is fast and helpful. Great plugin!
September 29, 2026 1 reply
Very easy and quick to set up. Everything works as expected and the settings are straightforward. The only small issue I had was with my custom WooCommerce product page template, so the notice wasn’t displayed automatically. I added the provided shortcode manually to my product template and it worked perfectly. Overall, a simple and useful plugin.
September 18, 2026
The labels look good, and the layout is easy to adjust. It also picked up my site’s language automatically. Really happy with it!
September 1, 2026
Easy to set up and use, with a clean way to add the EU guarantee notice and GPSR information to WooCommerce products. The compliance audit is a really useful touch. Simple and practical plugin.
Read all 5 reviews

Contributors & Developers

“EU Consumer Rights for WooCommerce – Guarantee Notice, GARAN Label & Withdrawal Button” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

2.0.0

  • New: EU order withdrawal button (Directive (EU) 2023/2673) for WooCommerce stores, managed under EU Guarantee & GARAN Withdrawals (Settings and Requests tabs).
  • New: withdrawal form page and shortcodes [eggl_wd_order_withdrawal_request_form] and [eggl_wd_order_withdrawal_button].
  • New: optional withdrawal button in the footer and optional “Withdraw from contract” link in the header menu.
  • New: “Button text” setting to change the wording of the withdrawal button and header link (defaults to “Withdraw from contract” in each visitor’s language).
  • New: “Withdraw” button in My account for orders that can still be withdrawn.
  • New: partial withdrawals — customers and verified guests choose the items to withdraw.
  • The order list on the withdrawal form only shows orders that can still be withdrawn (within the withdrawal period, with items left).
  • New: five withdrawal emails, “Pending withdrawal” and “Withdrawn” order statuses, and withdrawal details on the order screen.
  • New: withdrawal requests list with confirm, reject, delete, bulk actions and search. Rejecting opens a popup for the reason that is sent to the customer.
  • New: withdrawal data in WordPress personal-data export and erasure.
  • New: a one-time admin notice introducing the withdrawal feature, with a link to its settings.
  • The withdrawal module runs independently of the standalone “EU Order Withdrawal Button for WooCommerce” plugin; both can be active at the same time.
  • Declared compatibility with WooCommerce High-Performance Order Storage and the block-based cart and checkout.
  • License is now GPLv3 or later, as the withdrawal module is based on GPLv3 code.

1.9.4

  • “Duration (years)” is now required when saving a vendor GARAN label image.
  • The trigger text now applies to every notice row style (Minimal, Classic and Custom), and defaults to “Your legal guarantee rights” in the store’s language.
  • The trigger text size now applies to every notice row style.
  • The notice and the GARAN label now default to the Nested display mode.
  • Added a “Notice width” setting for the notice’s maximum width on the product page.
  • Added Site Health checks and a status panel on the settings page, saying whether the notice and the GARAN label are actually being shown and what to change if not.
  • Added a text-fit check for GARAN labels: over-long brand, model or duration is flagged live in the editor and after saving, and compressed on the label so it never overlaps the QR code.
  • Items with an identical GARAN label now share one label at checkout, on the cart page and in order emails.
  • The plugin now works without WooCommerce, using the shortcodes, blocks and header notice.
  • On Polylang and WPML sites, the “Automatic” language now follows the language each visitor is reading.
  • Order-email GARAN images are now drawn in the browser on servers without PHP’s GD extension.
  • Added a welcome notice after activation, and an occasional request for a review.

1.9.3

  • Added GARAN label support for product variations: per-variation show/hide, duration, Brand/Trademark and Model identifier fields with a live preview, inheriting the parent product’s values when left blank.
  • The product-page label now switches to the selected variation’s label.
  • Fixed the GARAN label missing from order emails (and their label links) for variation items; cart and checkout now use each variation’s own label.
  • Vendor GARAN label images can now be assigned to individual variations, and a parent product’s image applies to its variations.
  • Removed the producer-confirmation checkbox from the EU Guarantee tab — a product now qualifies with “Show GARAN label” on and a duration of 3 years or more.

1.9.2

  • Automatic translation added
  • Minor Bug Fixes.

1.9.1

  • Tested for compatibility with WooCommerce 11.1.0
  • Tested for compatibility with WordPress 7.1
  • Minor Bug Fixes.

1.9.0

  • Added a “Vendor GARAN Labels” admin page (under EU Guarantee & GARAN) to upload a manufacturer/vendor-supplied GARAN label image for a specific product — it then takes over from the generated label everywhere it would normally show: product page, checkout, cart, shortcode/block, and all three order-confirmation email formats. A vendor image qualifies the product on its own, without also requiring its Duration/confirmation fields to be filled in, and an optional “Duration (years)” field on the same page fills in the compact preview badge’s number independently of that product-level workflow.

1.8.0

  • Added an “Attachment” email content option for both the legal-guarantee notice and the GARAN label — sends the graphic to the customer as a real file attachment on order confirmation emails, instead of embedding or linking it.
  • The notice’s compact trigger row now shows just the notice title, without the “at least 2 years” sub-line.
  • The “Guarantee duration” product field’s minimum is now 3 years, matching the label’s own eligibility threshold.
  • Changed the plugin’s main admin menu icon to a shield.

1.7.1

  • Fixed the “Under the product image” position to render inside the product gallery itself (right after the thumbnails, inside .woocommerce-product-gallery__wrapper) instead of just above the summary column.

1.7.0

  • Added a new position choice, “Under the product image”, for both the notice and the GARAN label position settings — places the widget right below the product gallery, above the title/summary column.

1.6.1

  • The GARAN label’s Popup mode trigger is now the compact GARAN badge (years | GARAN ✓ | EU shield) instead of a plain text row — clicking it still opens the same dialog with the full label.

1.6.0

  • Split the “Display mode” setting into two independent settings — “Notice display mode” and “GARAN label display mode” — so each can be set to Popup, Full or Nested on its own. Sites that already set the old shared display mode keep that choice until either new setting is changed.

1.5.0

  • Added a third Display mode: “Nested” — a compact trigger (the GARAN badge for the label, the existing summary row for the notice) that expands the full graphic in place when clicked, instead of opening a dialog or always showing the full graphic.
  • Fixed a possible colour mix-up when the label’s SVG markup is rendered more than once on the same page (e.g. the nested badge and its expanded panel together): the source files’ CSS classes weren’t scoped per instance, so two copies could repaint each other’s shapes with the wrong colour. Classes are now namespaced the same way the QR code’s clip-paths already were.

1.4.0

  • The GARAN durability label now renders from a vector SVG (assets/official/garan-full.svg) instead of a flattened raster image, so Brand/Trademark, Model identifier and the guarantee-duration number are set directly on the real design text — sharper at any size, and pixel-perfect alignment in both the admin preview and the storefront.
  • Fixed a possible ID collision in the label’s QR code artwork when the label markup is rendered more than once on the same page (e.g. a quick-view modal open alongside the main product).

1.3.0

  • The legal-guarantee notice and the GARAN label are now independent widgets: each has its own position on the product page (before the summary, after the title, after the price, after the short description, after Add to cart, or after the summary near the tabs).
  • Added a “Display mode” setting: Popup (compact summary that opens the full graphic in a dialog, the previous behaviour) or Full (the full graphic shown directly on the page, no click required). Applies to both the notice and the label.

1.2.0

  • Added site-wide toggles on the Display settings tab to enable/disable the legal-guarantee notice and the GARAN durability label independently, across the whole store, regardless of per-product settings.

1.1.0

  • Redesigned the “EU Guarantee” product data tab: a “Show GARAN label” toggle, guarantee duration in whole years, Brand/Trademark and Model identifier fields (with a live label preview), and a single combined producer-confirmation checkbox.
  • The GARAN label now shows the Brand/Trademark and Model identifier you enter per product, falling back to the product’s brand attribute/name when left blank.

1.0.0

  • Initial release: EU legal-guarantee notice (Annex I) in 24 languages and the GARAN durability label (Annex II), with a tabbed-modal product-page widget and a dedicated product data tab for guarantee fields.