{"id":352978,"date":"2026-08-19T21:39:18","date_gmt":"2026-08-19T21:39:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/buildsbyluke-eu-garan-label-legal-guarantee-notice-for-woocommerce\/"},"modified":"2026-08-19T21:38:52","modified_gmt":"2026-08-19T21:38:52","slug":"buildsbyluke-product-guarantee-notice-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/buildsbyluke-product-guarantee-notice-for-woocommerce\/","author":23531792,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BuildsByLuke Product Guarantee Notice for WooCommerce","header_author":"Luke W","header_description":"Display the official EU harmonised legal guarantee notice and GPSR product safety information on WooCommerce product pages. Helps with Regulation (EU) 2025\/1960.","assets_banners_color":"0d0d0f","last_updated":"2026-08-19 21:38:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/buildsbyluke.com\/plugins\/product-guarantee-notice-for-woocommerce","header_author_uri":"https:\/\/buildsbyluke.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":47,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.3":{"tag":"1.0.3","author":"lukeaxiomflow","date":"2026-08-19 21:38:52"}},"upgrade_notice":{"1.0.3":"<p>Internationalisation cleanup \u2014 translation loading is delegated to WordPress.org. No functional changes.<\/p>","1.0.2":"<p>Escaping hardening for shortcode and filter output. No functional changes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3655377,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3655377,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3655377,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3655377,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3655377,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3655377,"resolution":"1","location":"assets","locale":"","width":1265,"height":1209},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3655377,"resolution":"2","location":"assets","locale":"","width":1265,"height":2482},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3655377,"resolution":"3","location":"assets","locale":"","width":1265,"height":1014},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3655377,"resolution":"4","location":"assets","locale":"","width":1265,"height":1685}},"screenshots":{"1":"The official EU legal guarantee notice on a WooCommerce product page (official Commission artwork, shown in the shopper's language).","2":"The EU Compliance product tab: GPSR manufacturer fields, responsible person, warnings \u2014 with store-default inheritance.","3":"The site-wide EU Compliance audit: every product, its status, and exactly what is missing.","4":"Store-wide settings: notice position and language, GPSR display, manufacturer defaults."}},"plugin_section":[],"plugin_tags":[264911,275335,237366,28189,286],"plugin_category":[45],"plugin_contributors":[271970],"plugin_business_model":[],"class_list":["post-352978","plugin","type-plugin","status-publish","hentry","plugin_tags-gpsr","plugin_tags-legal-guarantee","plugin_tags-product-safety","plugin_tags-warranty","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-lukeaxiomflow","plugin_committers-lukeaxiomflow"],"banners":{"banner":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/banner-772x250.png?rev=3655377","banner_2x":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/banner-1544x500.png?rev=3655377","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/icon.svg?rev=3655377","icon":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/icon.svg?rev=3655377","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/screenshot-1.png?rev=3655377","caption":"The official EU legal guarantee notice on a WooCommerce product page (official Commission artwork, shown in the shopper's language)."},{"src":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/screenshot-2.png?rev=3655377","caption":"The EU Compliance product tab: GPSR manufacturer fields, responsible person, warnings \u2014 with store-default inheritance."},{"src":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/screenshot-3.png?rev=3655377","caption":"The site-wide EU Compliance audit: every product, its status, and exactly what is missing."},{"src":"https:\/\/ps.w.org\/buildsbyluke-product-guarantee-notice-for-woocommerce\/assets\/screenshot-4.png?rev=3655377","caption":"Store-wide settings: notice position and language, GPSR display, manufacturer defaults."}],"raw_content":"<!--section=description-->\n<p>From <strong>27 September 2026<\/strong>, Commission Implementing Regulation (EU) 2025\/1960 requires every trader selling goods to consumers in the EU to display the <strong>harmonised notice on the legal guarantee of conformity<\/strong> in a prominent manner before purchase \u2014 regardless of the trader's size or country.<\/p>\n\n<p>This plugin puts the official artwork on your WooCommerce product pages, correctly:<\/p>\n\n<ul>\n<li><strong>The official notice, not a re-creation.<\/strong> The plugin ships the European Commission's own notice artwork for <strong>all 24 official EU languages<\/strong> and shows the right language automatically from the page locale (WPML \/ Polylang friendly). Online display is in colour (RGB) and always in full \u2014 exactly what Annex I requires.<\/li>\n<li><strong>GPSR Art. 19 product safety block<\/strong> (Regulation (EU) 2023\/988, in force since 13 December 2024): manufacturer name, postal and electronic address; EU responsible person for non-EU manufacturers; product identifiers (SKU \/ GTIN); warnings and safety information. Store-wide defaults with per-product overrides.<\/li>\n<li><strong>A compliance audit you can act on<\/strong>: an \"EU Compliance\" column on the products list, a checklist on every product edit screen, and a site-wide audit page listing exactly what is missing where.<\/li>\n<li><strong>Site Health checks<\/strong> so a broken or disabled setup never goes unnoticed.<\/li>\n<li>Positioning controls, per-product overrides, and <code>[bblgg_notice]<\/code> \/ <code>[bblgg_gpsr]<\/code> shortcodes for page-builder layouts.<\/li>\n<\/ul>\n\n<p>Everything above is in the free plugin, complete and unmetered \u2014 no product limits, no time limits, nothing withheld behind an upgrade.<\/p>\n\n<p><strong>Pro<\/strong> is a separate build that adds capabilities the free version does not contain any code for \u2014 the producer's voluntary durability guarantee, and the repair-information duties:<\/p>\n\n<ul>\n<li><strong>The EU durability label (\"GARAN\", Annex II)<\/strong>: the official label file with the three permitted edits \u2014 duration in years, producer brand, model identifier \u2014 displayed full or nested (collapsed strip that expands in its entirety on first click, as the Regulation permits online), and the <strong>checkout-screen block<\/strong> Consumer Rights Directive Art. 8(2) requires.<\/li>\n<li><strong>Repair &amp; updates disclosures<\/strong> (CRD Art. 6(1)(u), (v), (lc)): reparability score, spare-parts availability and ordering, repair instructions and restrictions, software-update support period.<\/li>\n<li><strong>White-label conformance report<\/strong> with weekly email delivery and an optional webhook \u2014 for agencies running client stores.<\/li>\n<\/ul>\n\n<h4>Which stores does this affect?<\/h4>\n\n<p>Every shop selling physical goods to consumers in the EU \u2014 including sellers established <strong>outside<\/strong> the EU. Neither the EmpCo Directive (EU) 2024\/825 nor Regulation (EU) 2025\/1960 contains a small-business exemption.<\/p>\n\n<h4>Compliance note<\/h4>\n\n<p>No plugin can provide 100% compliance, and nothing in this plugin is legal advice. This plugin helps you display the harmonised notice, the durability label (Pro) and the GPSR information set; whether your shop meets Regulation (EU) 2025\/1960, Directive (EU) 2024\/825 and Regulation (EU) 2023\/988 in full remains the responsibility of the site administrators. If in doubt, consult a lawyer familiar with EU consumer law.<\/p>\n\n<h4>Trademarks, artwork &amp; affiliation<\/h4>\n\n<ul>\n<li>\"GARAN\" is the name of the <strong>European Union's harmonised durability label<\/strong>. This plugin displays that official label (Pro) and refers to it by name only to describe what it displays. This plugin is an independent product of BuildsByLuke and is <strong>not affiliated with, endorsed by, or approved by the European Union or the European Commission<\/strong>.<\/li>\n<li>The notice and label artwork are <strong>\u00a9 European Union<\/strong> \u2014 official files published by the European Commission for traders to reproduce, bundled unmodified (the label's three editable fields are filled in as the Regulation permits). The Inter typeface (the font Annex II prescribes for the label) is bundled under the SIL Open Font License 1.1.<\/li>\n<li>WooCommerce is a trademark of its respective owner; this plugin is an independent extension <strong>for<\/strong> WooCommerce and is not affiliated with or endorsed by them.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p><strong>Rendering the notice, the safety block and (in Pro) the label makes no external requests of any kind<\/strong> \u2014 all artwork, fonts and data ship inside the plugin.<\/p>\n\n<p><strong>Freemius (freemius.com), who sell and license the Pro version<\/strong><\/p>\n\n<p>The plugin uses the Freemius SDK for licensing. Freemius is contacted in four situations. Every one of them is something you click. It is never contacted in the background.<\/p>\n\n<ol>\n<li><strong>If you opt in on the activation screen<\/strong> (or start a trial \/ activate a licence). Sent to api.freemius.com: your site URL, your WordPress and PHP versions, and the email address of the account you activate with. Skipping the opt-in is a first-class choice and the plugin is fully functional without it.<\/li>\n<li><strong>If you open the \"Upgrade\" page<\/strong> under the plugin's menu. Your own server (not your browser) asks api.freemius.com for current plan prices, sending your site URL. The page itself loads no third-party scripts \u2014 everything it renders is served from this plugin's own folder. The payment SDK's bundled pricing script used to inject Google Analytics and a remote checkout script into wp-admin on that page; this build removes both, along with the SDK's remaining remote references (all modifications are listed under \"Source code\" below).<\/li>\n<li><strong>If you open the \"Contact Us\" page<\/strong>, which is Freemius's hosted support form (wp.freemius.com). The link carries your site URL and your WordPress login URL so the form knows which site you are writing about.<\/li>\n<li><strong>If you click a plan to buy<\/strong>, you go to Freemius's hosted checkout (checkout.freemius.com). It receives your site URL, site name, WordPress and PHP versions, and your WordPress administrator email address (pre-filled, sent whether or not you complete the purchase). Freemius is the merchant of record. Their checkout page loads its own third-party scripts; we do not control that list. If you never click a plan, none of it loads.<\/li>\n<\/ol>\n\n<p>Terms: https:\/\/freemius.com\/terms\/ \u2014 Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<p>Installing, activating, skipping the opt-in, using every screen, deactivating (the SDK's deactivation-feedback dialog is switched off in this build, so deactivation is one click and sends nothing), WordPress's update cycle and all scheduled tasks complete without contacting Freemius at all. Free updates come from WordPress.org like any other plugin.<\/p>\n\n<p><strong>Pro only, and only when you configure it:<\/strong> the weekly conformance summary can be POSTed to a <strong>webhook URL you provide<\/strong> (e.g. your own Slack webhook). Nothing is sent unless you enter a URL.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>This plugin's own PHP is unminified and readable in the plugin folder.<\/p>\n\n<p>The one exception to \"unminified\" is the third-party licensing SDK in <code>vendor\/freemius\/<\/code>, which ships pre-minified. Those files are the Freemius WordPress SDK, published under the GPL, and their unminified source and build tooling are public:<\/p>\n\n<ul>\n<li>Freemius WordPress SDK: https:\/\/github.com\/Freemius\/wordpress-sdk<\/li>\n<li>The pricing screen bundled at <code>vendor\/freemius\/assets\/js\/pricing\/freemius-pricing.js<\/code>: https:\/\/github.com\/Freemius\/pricing-page<\/li>\n<\/ul>\n\n<p>Local modifications to the bundled SDK (each marked with a <code>\/* BuildsByLuke Product Guarantee Notice: *\/<\/code> comment where practical): the pricing script's Google Analytics injection and remote checkout-script loader are removed, its ambient analytics <code>track()<\/code> calls are stubbed, a remote loader image referenced from the SDK's CSS is replaced with an inline data: URI, and remote avatar images on the pricing page are disabled \u2014 so no plugin screen requests anything from outside your site.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WooCommerce must be active).<\/li>\n<li>Go to <strong>WooCommerce \u2192 EU Compliance<\/strong> and set your store-wide manufacturer defaults.<\/li>\n<li>That's it for the notice \u2014 it now renders on product pages for goods, in the shopper's language, in colour, in full.<\/li>\n<li>Check <strong>WooCommerce \u2192 EU Compliance audit<\/strong> to see which products still need GPSR data.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20the%20harmonised%20legal%20guarantee%20notice%3F\"><h3>What is the harmonised legal guarantee notice?<\/h3><\/dt>\n<dd><p>A mandatory notice reminding consumers of their <strong>minimum two-year legal guarantee of conformity<\/strong> for goods sold in the EU: the remedies (free repair or replacement, in some cases price reduction or full reimbursement), the possibility of longer national periods, what to do about non-conforming goods, and a QR code to europa.eu\/youreurope\/guarantees. It must be shown prominently before purchase; for online shops it must be in colour. None of its elements may be edited \u2014 which is why this plugin ships the Commission's official artwork rather than rebuilding it.<\/p><\/dd>\n<dt id=\"what%20is%20the%20eu%20durability%20label%20%28%22garan%22%29%3F\"><h3>What is the EU durability label (\"GARAN\")?<\/h3><\/dt>\n<dd><p>GARAN is the EU's harmonised label for a producer's <strong>commercial guarantee of durability<\/strong> \u2014 a guarantee that is free of charge, covers the entire good and lasts more than two years. From 27 September 2026, traders must display it prominently when such a guarantee exists (Directive (EU) 2024\/825, Regulation (EU) 2025\/1960). The label carries the duration in years, the producer's brand, the model identifier, a calendar symbol and a QR code to the Your Europe portal \u2014 the design, colours and the Inter typeface are fixed by the Regulation. Displaying it is a Pro capability of this plugin; the free build covers the mandatory notice, which applies to every trader.<\/p><\/dd>\n<dt id=\"when%20does%20this%20become%20mandatory%3F\"><h3>When does this become mandatory?<\/h3><\/dt>\n<dd><p>27 September 2026 (Regulation (EU) 2025\/1960 Art. 3, aligned with the EmpCo Directive's application date). The GPSR product safety information duties in Art. 19 have already applied since 13 December 2024.<\/p><\/dd>\n<dt id=\"does%20this%20apply%20to%20my%20shop%20if%20i%27m%20not%20in%20the%20eu%3F\"><h3>Does this apply to my shop if I'm not in the EU?<\/h3><\/dt>\n<dd><p>If you sell to consumers in the EU, yes \u2014 the duties attach to selling to EU consumers, not to where your company is established.<\/p><\/dd>\n<dt id=\"which%20languages%20are%20included%3F\"><h3>Which languages are included?<\/h3><\/dt>\n<dd><p>All 24 official EU languages of the notice: Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Irish, Italian, Latvian, Lithuanian, Maltese, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish and Swedish. The plugin picks the artwork matching the page language, with an override to pin one language. The durability label is language-neutral by design and carries \"producer guarantee in years\" in all 24 languages.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20german%20gew%C3%A4hrleistung%20requirements%20%2F%20eu%20warranty%20label%3F\"><h3>Does it work with the German Gew\u00e4hrleistung requirements \/ EU warranty label?<\/h3><\/dt>\n<dd><p>Yes \u2014 the \"EU-Gew\u00e4hrleistungslabel\" discussed in German commerce media is exactly this Regulation's notice and durability label. Select German and the official DE artwork is shown.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%20and%20the%20block%20checkout%3F\"><h3>Does it work with block themes and the block checkout?<\/h3><\/dt>\n<dd><p>Yes. The notice and safety block render on product pages for classic and block themes; the Pro checkout block appends to WooCommerce's checkout order-summary block, and the classic checkout is supported as well.<\/p><\/dd>\n<dt id=\"is%20the%20qr%20code%20on%20the%20notice%20real%3F\"><h3>Is the QR code on the notice real?<\/h3><\/dt>\n<dd><p>Yes \u2014 it is the Commission's own QR, part of the official artwork, pointing to europa.eu\/youreurope\/guarantees (country-by-country guarantee rights). The plugin can also show that link as clickable text under the notice, since shoppers on a screen cannot scan the screen they are looking at.<\/p><\/dd>\n<dt id=\"why%20does%20the%20durability%20label%20need%20at%20least%203%20years%3F\"><h3>Why does the durability label need at least 3 years?<\/h3><\/dt>\n<dd><p>Annex II covers commercial durability guarantees \"of more than two years\". A two-year guarantee does not qualify for the label \u2014 the smallest duration the label can honestly show is 3 years.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Internationalisation cleanup from the WordPress.org plugin review: removed the <code>load_plugin_textdomain()<\/code> call, the <code>Domain Path<\/code> header and the bundled <code>.pot<\/code> template. Plugins hosted on WordPress.org have their translations loaded automatically since WordPress 4.6, and this plugin requires WordPress 6.2 or newer. No functional changes.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Escaping hardening from the WordPress.org plugin review: every shortcode callback now passes its return value through a final escaping step before WordPress renders it \u2014 <code>[bblgg_notice]<\/code> and <code>[bblgg_gpsr]<\/code> through <code>wp_kses_post()<\/code> (covering markup added via the <code>bblgg_notice_html<\/code> filter and third-party <code>bblgg_gpsr_rows<\/code> output), and the Pro <code>[bblgg_garan]<\/code> shortcode through the label's SVG allow-list. The Pro checkout-block filter sanitises the fragment it appends, and tab\/column labels returned to WooCommerce and WordPress are pre-escaped.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to \"BuildsByLuke Product Guarantee Notice for WooCommerce\" (previously \"BuildsByLuke EU GARAN Label &amp; Legal Guarantee Notice for WooCommerce\") with a matching text domain.<\/li>\n<li>Hardened the settings save handler: every submitted field is now individually unslashed and sanitised at the point it is read, and the <code>bblgg_settings_save<\/code> filter no longer receives raw request data.<\/li>\n<li>Expanded the External services disclosure (the four exact situations in which Freemius is contacted) and added a Source code section covering the bundled SDK's minified files and local modifications.<\/li>\n<li>Added an explicit trademarks &amp; affiliation note.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Official harmonised legal-guarantee notice artwork for all 24 EU languages, auto-selected by page locale, RGB colour, full display (Reg (EU) 2025\/1960 Annex I).<\/li>\n<li>GPSR Art. 19 product safety block: manufacturer, EU responsible person, identifiers, warnings \u2014 store defaults + per-product overrides.<\/li>\n<li>EU Compliance audit: products-list column, product checklist metabox, site-wide audit page.<\/li>\n<li>Site Health integration.<\/li>\n<li>Pro: EU durability label (official artwork, duration\/brand\/model edits, nested or full display, checkout block), CRD Art. 6(1)(u)\/(v)\/(lc) repair &amp; update disclosures, white-label conformance report with email\/webhook delivery.<\/li>\n<\/ul>","raw_excerpt":"EU legal guarantee notice for WooCommerce \u2014 the official artwork in 24 languages \u2014 plus GPSR product safety fields and a store-wide compliance audit.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/352978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=352978"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lukeaxiomflow"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=352978"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=352978"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=352978"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=352978"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=352978"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=352978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}