=== CertaCart EU Product Readiness for WooCommerce ===
Contributors: liboluo, freemius
Tags: woocommerce, gpsr, product safety, eu, responsible person
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.0.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Local-first product-information readiness checks, GPSR-oriented fields, storefront disclosures, and exportable reports for WooCommerce.

== Description ==

CertaCart helps WooCommerce merchants prepare and review product-page information used for EU distance-selling workflows. It adds structured fields for manufacturer details, EU responsible-person details, product identifiers, and warnings or safety information. A batched scanner highlights missing configured information and produces a CSV remediation report.

Catalog processing remains local to WordPress. The plugin includes the Freemius SDK for optional installation analytics, account, licensing, and paid-update services; analytics is not enabled unless an administrator explicitly opts in.

= Core features =

* Manufacturer name, postal address, email, and website fields.
* EU responsible-person fields for products made by non-EU manufacturers.
* Product identifier and safety-information fields.
* Product-level EU scope and storefront-display overrides.
* Accessible storefront information section, shortcode, and dynamic block.
* Batched full-catalog scanner designed to avoid a single long request.
* Task-first Home with one best next action after each scan.
* Ranked, grouped tasks with de-duplicated affected-product counts.
* Product information readiness score, searchable product report, scan history, and CSV export.
* Optional placement helper for a merchant-supplied, locally hosted harmonised legal-guarantee notice image.
* WP-CLI scan and status commands.
* Configurable report retention and explicit uninstall cleanup.

= Important scope =

CertaCart is a technical preparation and content-management aid. It does not determine whether a law applies to a specific product or offer, assess product safety, translate or validate legal text, or certify legal compliance. Merchants remain responsible for legal review, product safety, language requirements, and the accuracy of all supplied information.

The guarantee-notice helper does not bundle or alter official artwork. Select the correct unmodified official language asset obtained from the European Commission and verify its use with qualified counsel where needed.

== Installation ==

1. Install and activate WooCommerce.
2. Upload the plugin ZIP or install it from the WordPress plugin directory.
3. Open WooCommerce > CertaCart.
4. Choose whether EU customers can buy the published catalog, then click Scan my store. Choose the no-score path if you are not sure yet.
5. Start the highest-impact task and complete the highlighted product fields.
6. Use CertaCart > Settings only when you need to change the smart defaults.

== Frequently Asked Questions ==

= Does this make my store legally compliant? =

No. It checks whether configured information is present and can display that information. It is not legal advice or certification.

= Does the plugin upload my catalog? =

No. The plugin processes product data inside your WordPress installation and does not upload catalog or customer records to CertaCart or Freemius.

= Why is an EU responsible person requested? =

The scanner requests responsible-person information when a product is marked as having a manufacturer outside the EU. The merchant must determine the correct economic operator and legal applicability.

= Does it include official guarantee-notice artwork? =

No. The merchant selects a locally hosted official asset for the appropriate language. This avoids silently modifying, translating, or remotely loading official artwork.

= Can I scan a large catalog? =

Yes. The browser starts small REST batches. The batch size is configurable from 50 to 2,000 products to suit the hosting environment. Keep the report page open while the free scan runs; if the page is closed, reopening it resumes the active scan.


= Can I place the information with a page builder? =

Yes. Choose Manual placement in settings, then use the CertaCart dynamic block or `[certacart_product_information]` shortcode. Manual mode prevents duplicate automatic output.

= How are products outside the selected EU scope handled? =

They remain visible in the report as outside scope but are excluded from the aggregate product information readiness score and finding totals.

= What happens when I delete the plugin? =

Data is retained by default. Enable the explicit delete-on-uninstall option before deleting the plugin to remove settings, scan tables, and CertaCart product metadata.

== Privacy ==

The plugin stores product metadata, settings, and scan reports in the merchant's WordPress database. It does not transmit catalog or customer records to CertaCart or Freemius. Freemius analytics remains disabled unless an administrator chooses Allow & Continue on the disclosed opt-in screen.

== External services ==

This plugin uses the Freemius service for optional installation analytics and, when applicable, account management, licensing, checkout, and paid-plugin updates. On activation an administrator can allow or skip the analytics connection. If allowed, Freemius may receive the administrator's first name, last name, and email; site URL and title; WordPress, PHP, plugin, and SDK versions; site language; plugin activation/deactivation or uninstall status; and installed plugin/theme names, slugs, versions, and active status. Product catalog content, customer records, orders, and CertaCart scan reports are not sent.

Freemius is provided by Freemius, Inc. Review its terms at https://freemius.com/terms/ and privacy policy at https://freemius.com/privacy/ before opting in or using paid services.

== Screenshots ==

1. Task-first Home with product information readiness score and best next action.
2. Ranked Tasks and affected-product report.
3. Product editor opened directly to the relevant product information fields.
4. Verified CertaCart product-information output on a real storefront product page.

== Changelog ==

= 1.0.3 =
* Makes Freemius-generated Premium activation hand off the active plugin basename, automatically deactivate the Free package, and avoid duplicate runtime constants.

= 1.0.2 =
* Makes no-score review scans run every supported field check and produce ranked tasks while showing the score as N/A.
* Keeps first-scan scope choices local to that scan instead of silently changing the store default.
* Makes bulk Undo conflict-safe by restoring only fields that still equal the value applied by CertaCart.
* Splits large Undo snapshots into bounded, non-autoloaded chunks and reports restored, skipped, and missing items.
* Forces deterministic UTF-8 LF translation catalogs on Windows and Linux builds.
* Completes the unified Freemius architecture: Premium code is isolated for Deployment stripping and inactive licenses stop paid jobs without deleting merchant data.

= 1.0.1 =
* Keeps one CertaCart entry in the WooCommerce menu and uses a focused in-app navigation shell on CertaCart screens.
* Requires an explicit EU sales scope before the first scan and supports a no-score review scan without changing the saved scope.
* Rewords scores and completion states as supported product-information checks instead of legal-readiness claims.
* Replaces field-gap totals on Home with actionable task, unique-product, and confidence counts.
* Compacts first use, adds a CertaCart SVG illustration, and standardizes scan-batch documentation at 50 to 2,000 products.
* Makes the Complete source bundle self-testable and adds hash-bound raw external-tool evidence recording.

= 1.0.0 =
* Rebuilds the admin experience around Home, ranked Tasks, History, and smart-default Settings.
* Groups related field findings into clear tasks with de-duplicated affected-product counts.
* Shows one best next action after each scan and opens the relevant product fields directly.
* Adds distinct first-use, scanning, completed, no-scope, empty-catalog, stopped, and failed states.
* Adds task-aware product filtering, 20-row pagination, completed-task caching, and batched post-cache priming.
* Keeps scans read-only, removes repeated confirmation friction, and exposes Pro restore actions in History.

= 0.9.1 =
* Adds a one-click recommended setup and scan flow.
* Shows the most common catalog issues directly on the dashboard.
* Speeds up scans with larger batches and one database write per batch.
* Makes bulk profile application numeric-SKU safe, previewable, logged, and undoable.
* Reports invalid CSV fields and handles Product ID / SKU fallback and conflicts explicitly.
* Improves multisite deactivation, repeated storefront rendering, and Freemius uninstall handling.

= 0.9.0 =

* Initial release.
* Added local product metadata and storefront renderer.
* Added batched scanner, resumable reports, in-scope scoring, filters, and CSV export.
* Added automatic or manual block/shortcode placement, privacy text, cleanup, and WP-CLI commands.
* Added validated electronic-contact handling, scan concurrency locks, and safe uninstall controls.
