{"id":394946,"date":"2026-11-07T10:31:02","date_gmt":"2026-11-07T10:31:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/gpsr-safety-compliance-for-woocommerce\/"},"modified":"2026-11-07T10:30:39","modified_gmt":"2026-11-07T10:30:39","slug":"sunhour-gpsr-safety-compliance","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sunhour-gpsr-safety-compliance\/","author":23595295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.3","stable_tag":"1.0.3","tested":"7.1.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"SunHour GPSR Safety Compliance for WooCommerce","header_author":"Sunhour Capital","header_description":"EU General Product Safety Regulation (GPSR) compliance for WooCommerce: manufacturer, EU responsible person, product identifiers, safety warnings and documents with store, category, product and variation levels.","assets_banners_color":"76767f","last_updated":"2026-11-07 10:30:39","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/sunhour-gpsr-safety-compliance\/","header_author_uri":"https:\/\/sunhourcapital.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":110,"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":"sunhourcapital","date":"2026-11-07 10:30:39","revision":3789352}},"upgrade_notice":{"1.0.3":"<p>Text domain matches plugin slug sunhour-gpsr-safety-compliance.<\/p>","1.0.2":"<p>Plugin renamed per WordPress.org review; no data changes.<\/p>","1.0.1":"<p>Review fixes: nonce for variation fields, prefixed shortcode.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3789352,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3789352,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3789352,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3789352,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3789352,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"sunhour-gpsr-safety-compliance\/product-safety":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"sunhour-gpsr-safety-compliance\/product-safety","title":"Product Safety (GPSR)","category":"woocommerce","icon":"shield","description":"Shows the EU GPSR manufacturer, responsible person and safety information for a product.","keywords":["gpsr","safety","manufacturer","responsible person"],"textdomain":"sunhour-gpsr-safety-compliance","attributes":{"productId":{"type":"number","default":0}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:.\/index.js"}},"tagged_versions":["1.0.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3789352,"resolution":"1","location":"assets","locale":"","width":1400,"height":2445},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3789352,"resolution":"2","location":"assets","locale":"","width":1064,"height":764},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3789352,"resolution":"3","location":"assets","locale":"","width":900,"height":1520},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3789352,"resolution":"4","location":"assets","locale":"","width":719,"height":2238},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3789352,"resolution":"5","location":"assets","locale":"","width":1400,"height":2423},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3789352,"resolution":"6","location":"assets","locale":"","width":1400,"height":1000},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3789352,"resolution":"7","location":"assets","locale":"","width":1400,"height":1834},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3789352,"resolution":"8","location":"assets","locale":"","width":1400,"height":1000}},"screenshots":{"1":"Store-wide GPSR defaults with reusable manufacturer and EU responsible person profiles.","2":"Product Safety tab on the product page showing manufacturer, EU responsible person, identifiers and warnings.","3":"GPSR Safety tab in the product data box with inherited values shown as placeholders.","4":"Per-variation GPSR overrides.","5":"Category-level GPSR defaults."}},"plugin_section":[],"plugin_tags":[266618,264911,237366,282612,286],"plugin_category":[45],"plugin_contributors":[291337],"plugin_business_model":[],"class_list":["post-394946","plugin","type-plugin","status-publish","hentry","plugin_tags-eu-compliance","plugin_tags-gpsr","plugin_tags-product-safety","plugin_tags-responsible-person","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-sunhourcapital","plugin_committers-sunhourcapital"],"banners":{"banner":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/banner-772x250.png?rev=3789352","banner_2x":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/banner-1544x500.png?rev=3789352","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/icon.svg?rev=3789352","icon":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/icon.svg?rev=3789352","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-1.png?rev=3789352","caption":"Store-wide GPSR defaults with reusable manufacturer and EU responsible person profiles."},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-2.png?rev=3789352","caption":"Product Safety tab on the product page showing manufacturer, EU responsible person, identifiers and warnings."},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-3.png?rev=3789352","caption":"GPSR Safety tab in the product data box with inherited values shown as placeholders."},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-4.png?rev=3789352","caption":"Per-variation GPSR overrides."},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-5.png?rev=3789352","caption":"Category-level GPSR defaults."},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-6.png?rev=3789352","caption":""},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-7.png?rev=3789352","caption":""},{"src":"https:\/\/ps.w.org\/sunhour-gpsr-safety-compliance\/assets\/screenshot-8.png?rev=3789352","caption":""}],"raw_content":"<!--section=description-->\n<p><strong>SunHour GPSR Safety Compliance for WooCommerce<\/strong> helps you meet the EU <strong>General Product Safety Regulation (EU) 2023\/988 (GPSR)<\/strong>, in force since 13 December 2024. Every consumer product sold online to customers in the European Union must show the manufacturer, the <strong>EU responsible person<\/strong> (when the manufacturer is outside the EU), product identifiers and safety warnings or instructions <em>on the product listing<\/em>. This plugin adds all of that to WooCommerce in minutes, without editing hundreds of products one by one.<\/p>\n\n<p>Set your <strong>EU product safety<\/strong> information once at store level, override it per <strong>product category<\/strong>, per <strong>product<\/strong> and even per <strong>variation<\/strong>. The plugin resolves the right value automatically and shows it in a clean <strong>Product Safety<\/strong> tab, a shortcode or a block.<\/p>\n\n<h4>Free features<\/h4>\n\n<ul>\n<li><strong>Manufacturer details<\/strong>: name, postal address, email and website\/contact URL (GPSR Art. 19).<\/li>\n<li><strong>EU responsible person \/ economic operator<\/strong>: name, address and email for non-EU brands, dropshippers and marketplace sellers.<\/li>\n<li><strong>Product identification<\/strong>: product type, model number, batch \/ serial \/ lot number.<\/li>\n<li><strong>Safety warnings and safety instructions<\/strong> text, in any language (translation-plugin friendly).<\/li>\n<li><strong>Safety documents<\/strong>: attach PDFs (safety data sheets, declarations of conformity, manuals) from the media library.<\/li>\n<li><strong>Reusable profiles<\/strong>: save each manufacturer and responsible person once and select it anywhere.<\/li>\n<li><strong>Four-level inheritance<\/strong>: store defaults \u2192 category (including parent categories) \u2192 product \u2192 variation. Leave a field empty to inherit; inherited values are shown as placeholders.<\/li>\n<li><strong>Variation support<\/strong>: different model or batch numbers per variation; the Product Safety tab switches automatically when the shopper picks a variation.<\/li>\n<li><strong>Product Safety tab<\/strong> on single product pages (title and position configurable).<\/li>\n<li><strong>Shortcode<\/strong> <code>[gpsrsc_product_safety]<\/code> or <code>[gpsrsc_product_safety id=\"123\"]<\/code> for page builders and custom templates.<\/li>\n<li><strong>Block<\/strong> \"Product Safety (GPSR)\" for the block editor and block themes.<\/li>\n<li><strong>Compliance check<\/strong> on the product edit screen showing which required GPSR fields are still missing.<\/li>\n<li>Theme override: copy your own <code>woocommerce\/gpsr-product-safety.php<\/code> into your theme.<\/li>\n<li>Developer hooks: <code>gpsrsc_fields<\/code>, <code>gpsrsc_requirements<\/code>, <code>gpsrsc_resolved_values<\/code>, <code>gpsrsc_primary_category<\/code>, <code>gpsrsc_after_output<\/code>, and the <code>gpsrsc_get_product_data()<\/code> helper.<\/li>\n<li>HPOS compatible, translation ready, no tracking, no external requests, no ads.<\/li>\n<\/ul>\n\n<h4>Pro add-on (optional)<\/h4>\n\n<p>Large catalog? The separate <strong>GPSR Safety Compliance Pro<\/strong> add-on adds:<\/p>\n\n<ul>\n<li><strong>Bulk edit<\/strong> GPSR data from the WooCommerce product list (selected products, a whole category, all products, or only non-compliant ones).<\/li>\n<li><strong>CSV import \/ export<\/strong> of GPSR data matched by product <strong>SKU or ID<\/strong>, including variations, with dry-run and spreadsheet-safe export.<\/li>\n<li><strong>Bulk assign<\/strong> manufacturer and responsible person profiles.<\/li>\n<li><strong>Compliance dashboard<\/strong> showing every product that is missing required GPSR information, filterable by missing field, plus a GPSR status column in the product list.<\/li>\n<li>WP-CLI: <code>wp gpsr import<\/code>, <code>wp gpsr export<\/code>, <code>wp gpsr scan<\/code>.<\/li>\n<\/ul>\n\n<p>Get Pro at https:\/\/license.sunhourcapital.com\/ \u2014 the free plugin is fully functional on its own; nothing in it is locked.<\/p>\n\n<h4>Who needs GPSR compliance?<\/h4>\n\n<p>Any WooCommerce shop selling non-food consumer products to EU consumers: toys, cosmetics, electronics, clothing, home and garden, handmade goods, print-on-demand, dropshipping, and sellers based in the UK, US, China or anywhere outside the EU who need an <strong>EU responsible person<\/strong> shown on their product pages.<\/p>\n\n<p><em>This plugin is a tool to display information. It is not legal advice; you remain responsible for the accuracy of the data you enter.<\/em><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload the plugin or install it from <strong>Plugins \u2192 Add New<\/strong>, then activate.<\/li>\n<li>Go to <strong>WooCommerce \u2192 GPSR Safety<\/strong> and enter your store-wide defaults (often the EU responsible person).<\/li>\n<li>Optional: create reusable profiles under <strong>Products \u2192 GPSR Profiles<\/strong>.<\/li>\n<li>Optional: set category defaults under <strong>Products \u2192 Categories \u2192 Edit<\/strong>.<\/li>\n<li>Fill product-specific data in the <strong>GPSR Safety<\/strong> tab of the product data box, and per variation under <strong>Variations<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20is%20gpsr%3F\"><h3>What is GPSR?<\/h3><\/dt>\n<dd><p>The General Product Safety Regulation (EU) 2023\/988 replaces the old General Product Safety Directive. Since 13 December 2024, online listings for EU consumers must show the manufacturer's name and contact details, the EU responsible person if the manufacturer is not established in the EU, information identifying the product (type, batch or serial number), and warnings or safety information.<\/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>If the manufacturer is not established in the EU, a responsible economic operator in the EU (importer, authorised representative or fulfilment service provider) is required. You can switch this requirement off in the settings if your manufacturers are EU based.<\/p><\/dd>\n<dt id=\"can%20different%20variations%20have%20different%20batch%20or%20model%20numbers%3F\"><h3>Can different variations have different batch or model numbers?<\/h3><\/dt>\n<dd><p>Yes. Open the variation, expand \"GPSR safety overrides\" and fill only what differs. The Product Safety tab updates when the customer selects the variation.<\/p><\/dd>\n<dt id=\"where%20is%20the%20information%20shown%3F\"><h3>Where is the information shown?<\/h3><\/dt>\n<dd><p>In a \"Product Safety\" tab on the product page by default. You can turn the tab off and use the shortcode or block instead.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20block%20themes%20and%20page%20builders%3F\"><h3>Does it work with block themes and page builders?<\/h3><\/dt>\n<dd><p>Yes. Block themes show the tab through WooCommerce's product details block, and the shortcode\/block works anywhere.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20amazon%2Febay-style%20marketplaces%3F\"><h3>Does it work with Amazon\/eBay-style marketplaces?<\/h3><\/dt>\n<dd><p>It covers your own WooCommerce store. The same data can be exported with the Pro add-on's CSV export.<\/p><\/dd>\n<dt id=\"will%20deleting%20the%20plugin%20delete%20my%20data%3F\"><h3>Will deleting the plugin delete my data?<\/h3><\/dt>\n<dd><p>Only if you tick \"Delete all GPSR data when the plugin is deleted\" in the settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Text domain confirmed as sunhour-gpsr-safety-compliance to match the WordPress.org slug (review fix).<\/li>\n<li>Block name updated to sunhour-gpsr-safety-compliance\/product-safety.<\/li>\n<li>Directory index.php files use standard file headers.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Renamed to \"SunHour GPSR Safety Compliance for WooCommerce\"; slug and text domain are now sunhour-gpsr-safety-compliance (WordPress.org review). Settings and data are unchanged.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Security: variation GPSR fields now verify their own nonce.<\/li>\n<li>Prefixed the shortcode as <code>[gpsrsc_product_safety]<\/code> and the product tab key as <code>gpsrsc_safety<\/code>.<\/li>\n<li>Block asset file now blocks direct access.<\/li>\n<li>Readme: removed screenshots of the separate Pro add-on; bumped Requires at least to 6.3 (block API v3); WC tested up to 11.2.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"EU GPSR compliance for WooCommerce: manufacturer, EU responsible person, product identifiers, safety warnings and documents on every product page.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/394946","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=394946"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sunhourcapital"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=394946"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=394946"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=394946"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=394946"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=394946"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=394946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}