{"id":372596,"date":"2026-09-21T12:13:19","date_gmt":"2026-09-21T12:13:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lodestone-product-compliance\/"},"modified":"2026-09-25T14:04:22","modified_gmt":"2026-09-25T14:04:22","slug":"lodestone-product-compliance","status":"publish","type":"plugin","link":"https:\/\/dsb.wordpress.org\/plugins\/lodestone-product-compliance\/","author":23555647,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.2","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Lodestone Product Compliance \u2013 GPSR for WooCommerce","header_author":"Lodestone","header_description":"GPSR product safety information for WooCommerce. Records manufacturer and EU responsible person details, shows them in the product listing, adds the EU legal guarantee notice, and audits your whole catalogue for what is still missing.","assets_banners_color":"192348","last_updated":"2026-09-25 14:04:22","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/madebylodestone.com\/product-compliance","header_author_uri":"https:\/\/madebylodestone.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":113,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.1":{"tag":"1.0.1","author":"loureiro70","date":"2026-09-21 12:13:04","revision":3705566},"1.0.2":{"tag":"1.0.2","author":"loureiro70","date":"2026-09-25 14:04:22","revision":3713160}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3705566,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3705566,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3705566,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3705566,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3705566,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3705566,"resolution":"1","location":"assets","locale":"","width":2800,"height":2000},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3705566,"resolution":"2","location":"assets","locale":"","width":2800,"height":1800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3705566,"resolution":"3","location":"assets","locale":"","width":2800,"height":1800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3705566,"resolution":"4","location":"assets","locale":"","width":2800,"height":3120}},"screenshots":{"1":"The catalogue audit: how many products are missing information, and which field is missing most.","2":"The Article 19 fields on a product, each labelled with the paragraph it satisfies.","3":"Operator records \u2014 one manufacturer, attached to as many products as you like.","4":"Product safety information as customers see it, in the offer."}},"plugin_section":[],"plugin_tags":[279087,264911,275335,237366,286],"plugin_category":[45],"plugin_contributors":[279793],"plugin_business_model":[],"class_list":["post-372596","plugin","type-plugin","status-publish","hentry","plugin_tags-eu-responsible-person","plugin_tags-gpsr","plugin_tags-legal-guarantee","plugin_tags-product-safety","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-loureiro70","plugin_committers-loureiro70"],"banners":{"banner":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/banner-772x250.png?rev=3705566","banner_2x":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/banner-1544x500.png?rev=3705566","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/icon.svg?rev=3705566","icon":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/icon.svg?rev=3705566","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/screenshot-1.png?rev=3705566","caption":"The catalogue audit: how many products are missing information, and which field is missing most."},{"src":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/screenshot-2.png?rev=3705566","caption":"The Article 19 fields on a product, each labelled with the paragraph it satisfies."},{"src":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/screenshot-3.png?rev=3705566","caption":"Operator records \u2014 one manufacturer, attached to as many products as you like."},{"src":"https:\/\/ps.w.org\/lodestone-product-compliance\/assets\/screenshot-4.png?rev=3705566","caption":"Product safety information as customers see it, in the offer."}],"raw_content":"<!--section=description-->\n<p><strong>GPSR<\/strong> \u2014 the EU General Product Safety Regulation (EU) 2023\/988 \u2014 has applied since 13 December\n2024. Article 19 says that when you offer a product at a distance, the offer itself must show the\nmanufacturer's name and postal and electronic address, the EU responsible person where the\nmanufacturer is outside the Union, information identifying the product, and any required warnings\nin a language your customers understand. A link to a separate page is generally not enough.<\/p>\n\n<p>Lodestone Product Compliance adds those fields to WooCommerce products, shows them in the listing,\nand \u2014 the part that actually matters on a real catalogue \u2014 tells you <strong>which of your products are\nstill missing something<\/strong>. Filling in one product is easy. Knowing that 340 of your 2,000 products\nhave no manufacturer address is the problem this solves.<\/p>\n\n<p>It also handles the EU legal guarantee notice that becomes mandatory on <strong>27 September 2026<\/strong> under\nCommission Implementing Regulation (EU) 2025\/1960.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Adds the GPSR Article 19 fields to every product, each labelled with the paragraph it satisfies.<\/li>\n<li>Stores manufacturers and EU responsible persons as <strong>reusable records<\/strong>. One importer behind 300\nproducts is one record, so correcting an address is one edit and not three hundred.<\/li>\n<li>Assigns an operator record to a whole product category, or the whole catalogue, in bulk \u2014 200\nproducts per run, and running it again carries on where the last run stopped.<\/li>\n<li>Shows the information <strong>in the offer<\/strong> \u2014 a block under the add-to-cart area and an optional\nproduct tab \u2014 and lets you switch either off if your theme already prints it.<\/li>\n<li>Displays the EU legal guarantee notice, from the date the obligation starts or earlier if you\nchoose.<\/li>\n<li>Audits your <strong>whole catalogue<\/strong>, with no limit on the number of products, and shows what is\nmissing most often so you can fix in bulk rather than one product at a time.<\/li>\n<li>Works out when an EU responsible person is actually required, from the manufacturer's country,\nrather than asking you for one on every product.<\/li>\n<\/ul>\n\n<h4>What it deliberately does not do<\/h4>\n\n<p>This plugin <strong>never tells you, or your customers, that your store is compliant.<\/strong> There is no\nbadge, no seal and no tick. It checks that required information is <em>present<\/em>; it cannot check that\nthe information is <em>correct<\/em>, and it cannot assess whether a product is safe. A compliance badge\nprinted by a plugin is worth nothing to a market surveillance authority and moves a legal risk onto\nyou.<\/p>\n\n<p>It sends <strong>nothing anywhere<\/strong>. No external service, no product lookups, no phone-home. Your\nsupplier and manufacturer details stay in your database.<\/p>\n\n<p>Nothing here is legal advice.<\/p>\n\n<h4>Free forever<\/h4>\n\n<p>Every feature listed above is free, on unlimited products, permanently. Nothing is quota-limited,\ntime-limited, or switched off later to encourage an upgrade.<\/p>\n\n<p>Pro adds evidence rather than taking anything away: dated snapshots of what each listing said,\na printable per-product compliance record, a CSV export, coverage over time, per-language warning\ncoverage for multilingual stores, the GARAN durability guarantee, and WP-CLI.<\/p>\n\n<h4>One question, asked once<\/h4>\n\n<p>We ask you for exactly one thing, once. After a bulk assignment fills five or more products in one\nstep, the screen you land on asks whether you would rate this plugin on WordPress.org. It is not an\nadmin notice, it is only shown to people who can manage plugins, and whichever button you press \u2014\nincluding \"No thanks\" \u2014 it never appears again.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20make%20my%20store%20gpsr%20compliant%3F\"><h3>Does this make my store GPSR compliant?<\/h3><\/dt>\n<dd><p>No, and be wary of any plugin that says it does. Compliance depends on facts about your products\nand your suppliers that no plugin can see. What this does is make sure the information Article 19\nasks for is present on every product, and show you where it is missing. The rest is your judgement\nand, if the stakes are high, your lawyer's.<\/p><\/dd>\n<dt id=\"what%20exactly%20does%20gpsr%20article%2019%20require%3F\"><h3>What exactly does GPSR Article 19 require?<\/h3><\/dt>\n<dd><p>For each product offered at a distance: the manufacturer's name, registered trade name or trade\nmark with a postal and an electronic address; where the manufacturer is not established in the EU,\nthe name, postal and electronic address of the responsible person; information allowing the product\nto be identified, including a picture, its type and any other identifier; and any warning or safety\ninformation required, in a language easily understood by consumers.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20eu%20responsible%20person%3F\"><h3>Do I need an EU responsible person?<\/h3><\/dt>\n<dd><p>Only if the manufacturer is not established in the EU. Set the manufacturer's country on the\noperator record and the plugin works it out. If you have not set a country, it assumes the\nmanufacturer is outside the EU and asks you for a responsible person \u2014 the safer of the two\nmistakes to make.<\/p><\/dd>\n<dt id=\"what%20is%20the%2027%20september%202026%20change%3F\"><h3>What is the 27 September 2026 change?<\/h3><\/dt>\n<dd><p>From that date, traders selling goods to consumers in the EU must display a harmonised notice\nreminding customers of their legal guarantee rights. It applies to all consumer goods, not just\nelectronics. The plugin ships a plain-language notice and shows it from that date, and you can turn\nit on early.<\/p>\n\n<p>Note that the European Commission publishes an official harmonised notice with prescribed wording\nand artwork. This plugin does not reproduce it \u2014 an approximation that looks official would be\nworse for you than an honest plain-text reminder \u2014 so paste the official wording for your market\ninto the settings screen when you have it.<\/p><\/dd>\n<dt id=\"does%20it%20work%20without%20woocommerce%3F\"><h3>Does it work without WooCommerce?<\/h3><\/dt>\n<dd><p>No. It adds information to WooCommerce products, so it needs WooCommerce. If WooCommerce is\ndeactivated the plugin does nothing except explain itself, and it does not delete any of your data.<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20data%20anywhere%3F\"><h3>Does it send my data anywhere?<\/h3><\/dt>\n<dd><p>No. The plugin itself makes no outbound requests, and nothing about your products or customers\nleaves your site. Licensing is handled by the Freemius SDK, which sends nothing on its own unless\nyou opt in. Two things you do yourself do reach Freemius: opening the upgrade page loads its\nprices and checkout, and the optional feedback form shown when you deactivate is sent if you fill\nit in.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20product%20pages%3F\"><h3>Will it slow down my product pages?<\/h3><\/dt>\n<dd><p>It adds one small stylesheet on single product pages and reads product meta that WooCommerce has\nalready loaded. The catalogue audit runs in the admin only.<\/p><\/dd>\n<dt id=\"i%20have%205%2C000%20products.%20will%20the%20audit%20handle%20that%3F\"><h3>I have 5,000 products. Will the audit handle that?<\/h3><\/dt>\n<dd><p>Yes. There is no limit on the number of products. Every product is checked the moment it is saved in\nwp-admin, and the ones nobody has saved there since you installed the plugin are checked 100 at a time each time you\nopen the dashboard, rather than all at once, so a large catalogue fills in over repeated visits\ninstead of timing out \u2014 5,000 products take about fifty. The screen tells you how many have been\nchecked so far.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Fixed: the catalogue audit never got past the first 100 products on a larger shop. Every\nproduct is now reached, a batch per visit to the screen.<\/li>\n<li>Fixed: assigning an operator record without \"only fill in products with no value yet\" rewrote\nthe same 200 products on every run. Each run now carries on where the last one stopped, and the\nscreen says whether there is more to do.<\/li>\n<li>Fixed: deleted and binned products stayed in the counts and the list of products to fix, and a\nbinned operator record's name and address kept appearing on product pages.<\/li>\n<li>Fixed: the Settings screen would have read \"Mandatory in 1 days\" the day before the guarantee\nnotice becomes mandatory.<\/li>\n<li>Fixed: a bulk assignment that changed nothing was shown as a success reading \"0 products updated\".<\/li>\n<li>Fixed: a shop manager who dismissed the one admin notice saw it come back on the next page.<\/li>\n<li>Pro: CSV exports no longer write a cell a spreadsheet would run as a formula, and write product\ntitles as text rather than HTML entities. The dossier refuses an id that is not a product.<\/li>\n<li>A \"Questions?\" line at the foot of each screen links the support forum.<\/li>\n<li>After a bulk assignment fills a catalogue, the screen asks once whether you would rate the plugin.<\/li>\n<li>The FAQ and Settings now say exactly when the Freemius SDK contacts Freemius, instead of \"no\noutbound requests at all\".<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Listed as \"Lodestone Product Compliance - GPSR for WooCommerce\", so it can be\nfound by the term merchants actually search for. Nothing about the plugin itself has changed.<\/li>\n<li>Tags and short description reworded around GPSR rather than generic compliance.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"GPSR compliance for WooCommerce: put manufacturer and EU responsible person details on every product, and audit the catalogue for what is missing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/372596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=372596"}],"author":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/loureiro70"}],"wp:attachment":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=372596"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=372596"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=372596"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=372596"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=372596"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=372596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}