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.