=== Lodestone Product Compliance – GPSR for WooCommerce ===
Contributors: loureiro70
Tags: gpsr, product safety, woocommerce, eu responsible person, legal guarantee
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
Requires Plugins: woocommerce
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

GPSR compliance for WooCommerce: put manufacturer and EU responsible person details on every product, and audit the catalogue for what is missing.

== Description ==

**GPSR** — the EU General Product Safety Regulation (EU) 2023/988 — has applied since 13 December
2024. Article 19 says that when you offer a product at a distance, the offer itself must show the
manufacturer's name and postal and electronic address, the EU responsible person where the
manufacturer is outside the Union, information identifying the product, and any required warnings
in a language your customers understand. A link to a separate page is generally not enough.

Lodestone Product Compliance adds those fields to WooCommerce products, shows them in the listing,
and — the part that actually matters on a real catalogue — tells you **which of your products are
still missing something**. Filling in one product is easy. Knowing that 340 of your 2,000 products
have no manufacturer address is the problem this solves.

It also handles the EU legal guarantee notice that becomes mandatory on **27 September 2026** under
Commission Implementing Regulation (EU) 2025/1960.

= What it does =

* Adds the GPSR Article 19 fields to every product, each labelled with the paragraph it satisfies.
* Stores manufacturers and EU responsible persons as **reusable records**. One importer behind 300
  products is one record, so correcting an address is one edit and not three hundred.
* Assigns an operator record to a whole product category, or the whole catalogue, in bulk — 200
  products per run, and running it again carries on where the last run stopped.
* Shows the information **in the offer** — a block under the add-to-cart area and an optional
  product tab — and lets you switch either off if your theme already prints it.
* Displays the EU legal guarantee notice, from the date the obligation starts or earlier if you
  choose.
* Audits your **whole catalogue**, with no limit on the number of products, and shows what is
  missing most often so you can fix in bulk rather than one product at a time.
* Works out when an EU responsible person is actually required, from the manufacturer's country,
  rather than asking you for one on every product.

= What it deliberately does not do =

This plugin **never tells you, or your customers, that your store is compliant.** There is no
badge, no seal and no tick. It checks that required information is *present*; it cannot check that
the information is *correct*, and it cannot assess whether a product is safe. A compliance badge
printed by a plugin is worth nothing to a market surveillance authority and moves a legal risk onto
you.

It sends **nothing anywhere**. No external service, no product lookups, no phone-home. Your
supplier and manufacturer details stay in your database.

Nothing here is legal advice.

= Free forever =

Every feature listed above is free, on unlimited products, permanently. Nothing is quota-limited,
time-limited, or switched off later to encourage an upgrade.

Pro adds evidence rather than taking anything away: dated snapshots of what each listing said,
a printable per-product compliance record, a CSV export, coverage over time, per-language warning
coverage for multilingual stores, the GARAN durability guarantee, and WP-CLI.

= One question, asked once =

We ask you for exactly one thing, once. After a bulk assignment fills five or more products in one
step, the screen you land on asks whether you would rate this plugin on WordPress.org. It is not an
admin notice, it is only shown to people who can manage plugins, and whichever button you press —
including "No thanks" — it never appears again.

== Frequently Asked Questions ==

= Does this make my store GPSR compliant? =

No, and be wary of any plugin that says it does. Compliance depends on facts about your products
and your suppliers that no plugin can see. What this does is make sure the information Article 19
asks for is present on every product, and show you where it is missing. The rest is your judgement
and, if the stakes are high, your lawyer's.

= What exactly does GPSR Article 19 require? =

For each product offered at a distance: the manufacturer's name, registered trade name or trade
mark with a postal and an electronic address; where the manufacturer is not established in the EU,
the name, postal and electronic address of the responsible person; information allowing the product
to be identified, including a picture, its type and any other identifier; and any warning or safety
information required, in a language easily understood by consumers.

= Do I need an EU responsible person? =

Only if the manufacturer is not established in the EU. Set the manufacturer's country on the
operator record and the plugin works it out. If you have not set a country, it assumes the
manufacturer is outside the EU and asks you for a responsible person — the safer of the two
mistakes to make.

= What is the 27 September 2026 change? =

From that date, traders selling goods to consumers in the EU must display a harmonised notice
reminding customers of their legal guarantee rights. It applies to all consumer goods, not just
electronics. The plugin ships a plain-language notice and shows it from that date, and you can turn
it on early.

Note that the European Commission publishes an official harmonised notice with prescribed wording
and artwork. This plugin does not reproduce it — an approximation that looks official would be
worse for you than an honest plain-text reminder — so paste the official wording for your market
into the settings screen when you have it.

= Does it work without WooCommerce? =

No. It adds information to WooCommerce products, so it needs WooCommerce. If WooCommerce is
deactivated the plugin does nothing except explain itself, and it does not delete any of your data.

= Does it send my data anywhere? =

No. The plugin itself makes no outbound requests, and nothing about your products or customers
leaves your site. Licensing is handled by the Freemius SDK, which sends nothing on its own unless
you opt in. Two things you do yourself do reach Freemius: opening the upgrade page loads its
prices and checkout, and the optional feedback form shown when you deactivate is sent if you fill
it in.

= Will it slow down my product pages? =

It adds one small stylesheet on single product pages and reads product meta that WooCommerce has
already loaded. The catalogue audit runs in the admin only.

= I have 5,000 products. Will the audit handle that? =

Yes. There is no limit on the number of products. Every product is checked the moment it is saved in
wp-admin, and the ones nobody has saved there since you installed the plugin are checked 100 at a time each time you
open the dashboard, rather than all at once, so a large catalogue fills in over repeated visits
instead of timing out — 5,000 products take about fifty. The screen tells you how many have been
checked so far.

== 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 — one manufacturer, attached to as many products as you like.
4. Product safety information as customers see it, in the offer.

== Changelog ==

= 1.0.2 =
* Fixed: the catalogue audit never got past the first 100 products on a larger shop. Every
  product is now reached, a batch per visit to the screen.
* Fixed: assigning an operator record without "only fill in products with no value yet" rewrote
  the same 200 products on every run. Each run now carries on where the last one stopped, and the
  screen says whether there is more to do.
* Fixed: deleted and binned products stayed in the counts and the list of products to fix, and a
  binned operator record's name and address kept appearing on product pages.
* Fixed: the Settings screen would have read "Mandatory in 1 days" the day before the guarantee
  notice becomes mandatory.
* Fixed: a bulk assignment that changed nothing was shown as a success reading "0 products updated".
* Fixed: a shop manager who dismissed the one admin notice saw it come back on the next page.
* Pro: CSV exports no longer write a cell a spreadsheet would run as a formula, and write product
  titles as text rather than HTML entities. The dossier refuses an id that is not a product.
* A "Questions?" line at the foot of each screen links the support forum.
* After a bulk assignment fills a catalogue, the screen asks once whether you would rate the plugin.
* The FAQ and Settings now say exactly when the Freemius SDK contacts Freemius, instead of "no
  outbound requests at all".

= 1.0.1 =
* Listed as "Lodestone Product Compliance - GPSR for WooCommerce", so it can be
  found by the term merchants actually search for. Nothing about the plugin itself has changed.
* Tags and short description reworded around GPSR rather than generic compliance.

= 1.0.0 =
* Initial release.
