=== ProductGather – Product Search & Import for WooCommerce ===
Contributors: fertad69
Tags: woocommerce, import, product-data, barcode, catalog
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.2
Requires Plugins: woocommerce
Stable tag: 1.0.0
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Search, review and import individual product records into WooCommerce using Free-edition data providers.

== Description ==

ProductGather Free helps a store administrator search for a product, review the retrieved data, choose images and categories, save the record in the internal purchase archive, and publish one product at a time to WooCommerce.

The Free edition includes product-search support for books, cinema metadata, music metadata, food and beauty through the providers listed below. Availability and coverage depend on the external service and on the product being searched.

WooCommerce is a trademark of Automattic Inc. ProductGather is an independent product and is not affiliated with, sponsored by, or endorsed by Automattic.

The menu also contains an informational page called "Importa da Fornitore". That page describes a separate commercial PRO workflow. The Free package does not contain the operational Supplier module, Supplier adapters, Supplier storage, Supplier endpoints or Supplier publishing code, and an API key cannot unlock those features.

== Main Free features ==

* Search by supported product title or identifier according to the product-domain rules.
* Mobile barcode scanner for identifier entry.
* Product preview with editable merchant data.
* Image selection before import.
* Explicit WooCommerce category decisions and persistence.
* Internal "Archivio Banco Acquisti".
* Single-product WooCommerce publication with validation, including a selling price greater than zero where required.
* Internationalized user interface.
* WooCommerce 8.0 or newer is required.

== External services ==

ProductGather sends provider API requests when an administrator starts a search or requests product/provider details. Image previews/imports and the voluntary support form can also contact external services as described below. Search requests can include the entered product title or identifier, the selected product domain, pagination/language parameters, and the configured API key when a provider requires one. Detail requests can include a provider record identifier. Each service also receives the server IP address and standard HTTP metadata. Provider API requests use a ProductGather User-Agent identifying the plugin version and the public TF Graphics website, not the merchant domain or email address.

The plugin introduces no automatic proprietary tracking or telemetry. Product searches do not send WooCommerce customer or order data. Do not enter personal or confidential information as a product query.

= Google Books =

Book search and volume details. API: https://www.googleapis.com/books/v1/volumes . Data sent: title/ISBN or volume ID, language/pagination parameters, and an optional configured API key. Service: https://developers.google.com/books

Terms: https://developers.google.com/books/terms

Privacy: https://policies.google.com/privacy

= Open Library, an Internet Archive project =

Book, edition and work search/details, including dynamically selected book covers. These are catalogue images requested by the administrator, not bundled interface assets. API domain: https://openlibrary.org (api/books, search.json and edition/work JSON routes). Cover API: https://covers.openlibrary.org/b/id/{cover_id}-L.jpg and https://covers.openlibrary.org/b/isbn/{isbn}-L.jpg . The cover ID or ISBN is sent when a returned image is previewed or the administrator imports it. Browser previews send browser IP and standard request metadata; imports send server IP and request metadata. Data sent to the catalogue API: title, ISBN or edition/work ID and pagination. No Open Library account or API key is required by this plugin. Cover API documentation: https://openlibrary.org/dev/docs/api/covers . Service: https://openlibrary.org/developers/api

Terms of Use: https://archive.org/about/terms

Privacy Policy: https://archive.org/about/terms (Internet Archive policy page, also linked by Open Library).

= Internet Archive =

Catalogue searches. API: https://archive.org/advancedsearch.php . Data sent: title/identifier query and pagination. Item images returned for a search are requested from https://archive.org/services/img/{identifier} when previewed or deliberately imported; the item identifier and normal browser/server request metadata are sent. No account or API key is required by this plugin. Service: https://archive.org/

Terms of Use: https://archive.org/about/terms

Privacy Policy: https://archive.org/about/terms (Internet Archive policy page).

= MusicBrainz =

Music release search/details. API: https://musicbrainz.org/ws/2/ . Data sent: release/artist query, barcode/MBID or record ID and pagination. Service and API-use terms: https://musicbrainz.org/doc/MusicBrainz_API

Data licence: https://musicbrainz.org/doc/About/Data_License

Privacy: https://metabrainz.org/privacy

= Open Food Facts =

Food title/barcode data. APIs: https://search.openfoodfacts.org/search (JSON POST for title search), https://world.openfoodfacts.org/cgi/search.pl (search fallback), and https://world.openfoodfacts.org/api/v2/product/ (barcode). Data sent: query/barcode, optional brand filter, requested fields, language and pagination parameters. Service: https://world.openfoodfacts.org/

Terms: https://world.openfoodfacts.org/terms-of-use

Privacy: https://world.openfoodfacts.org/privacy

= Open Beauty Facts =

Beauty/cosmetic title/barcode data. APIs: https://world.openbeautyfacts.org/cgi/search.pl (title search) and https://world.openbeautyfacts.org/api/v2/product/ (barcode). Data sent: query/barcode, optional brand filter and requested fields/pagination. Service: https://world.openbeautyfacts.org/

Terms: https://world.openbeautyfacts.org/terms-of-use

Privacy: https://world.openbeautyfacts.org/privacy

= Wikidata =

Cinema metadata lookup by film title, exact IMDb ID or Wikidata QID, only when the merchant starts a search or selects a result. Data sent: the requested title/IMDb ID/QID and linked entity IDs. No API key, customer or order data is sent. Endpoint: https://www.wikidata.org/w/api.php

Structured data license: CC0. Service/license: https://www.wikidata.org/wiki/Wikidata:Licensing

Terms: https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use

Privacy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy

= Wikimedia Commons =

Optional images referenced by Wikidata, only during merchant-initiated Cinema lookup/import. Data sent: referenced file names and image download requests. Metadata endpoint: https://commons.wikimedia.org/w/api.php ; image host: https://upload.wikimedia.org/ ; each file has its own license. The plugin checks file metadata before proposing an image: CC0, Public Domain or versioned CC BY with source, author and license provenance. NC, ND, BY-SA, unknown/fair-use/missing licenses are not auto-imported. Preserve the provided attribution when publishing CC BY images. No image does not prevent importing Cinema metadata. Terms: https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use

Privacy: https://foundation.wikimedia.org/wiki/Policy:Privacy_policy ; licenses: https://commons.wikimedia.org/wiki/Commons:Licensing

= EAN-Search (optional external service) =

EAN-Search is contacted only when the merchant enables this provider, configures their own API token, and explicitly runs a compatible EAN-13 or UPC-A barcode lookup that reaches this exact fallback resolver. It is disabled on a fresh installation. Saving settings or opening Configuration does not contact the service.

Data sent: the EAN/UPC barcode entered or scanned by the merchant, and the API token required to authenticate that lookup. The plugin does not send the merchant name, email address or site URL in this request. EAN-Search requires an external account/token; review the service's current plans and conditions. The Free plugin remains usable without this optional service.

Service: https://www.ean-search.org/
Terms: https://www.ean-search.org/tos.html
Privacy: https://www.ean-search.org/privacy.html
API endpoint: https://api.ean-search.org/api

Only exact physical identity is retrieved. EAN-Search is not used for product-name searches, ISBN, automatic specialist enrichment, uploads or contributions.

Product images can be previewed from provider image hosts and can be downloaded into the WordPress media library when the administrator chooses to import them. These URLs are product data obtained from the selected service, not remote JavaScript, CSS, logos or interface icons. The plugin also accepts image URLs explicitly entered by the administrator; previewing or importing those images contacts the host selected in that URL. Browser previews disclose the viewer IP and normal browser metadata to the image host; server downloads disclose the server IP. The availability of metadata or images does not by itself grant redistribution rights; the site operator remains responsible for applicable provider terms and content rights.

= TF Graphics voluntary support =

Support: https://www.tfgraphics.it/support/?lang=en ; Terms: https://www.tfgraphics.it/terms/?lang=en ; Privacy: https://www.tfgraphics.it/privacy-policy/?lang=en

The optional support form sends a report through the site's WordPress mail system to assistenza@tfgraphics.it (the default recipient) only when an administrator submits it. No support report is sent automatically and this flow requires no provider API key.

Data sent: the selected issue type, any description entered, the search query displayed in the form when present, and an optional reply email address used in the Reply-To header. The displayed search query is included independently of the optional technical-diagnostics checkbox.

Only when the administrator selects that checkbox, the report also includes plugin/build, WordPress/WooCommerce/PHP versions, locale, page area, trace ID, search type, attempted providers/status, error codes and essential timings. The report flow does not automatically collect API keys, passwords, cookies, nonces, tokens, authorization headers, sessions, customer data, orders or WordPress credentials. Do not put confidential or personal information in the description or product query. Mail delivery uses the site's configured WordPress mail transport; transport-level headers depend on that configuration.

Open Library, Internet Archive, MusicBrainz, Open Food Facts, Open Beauty Facts and Wikidata require no credentials in this plugin. Google Books accepts an optional API key.

Open Facts database data is distributed under ODbL, individual contents under the Database Contents License, and images under CC BY-SA, subject to additional rights in depicted packaging. Provider/source attribution is preserved.

MusicBrainz distinguishes non-commercial API access from commercial plans. Merchants must review its commercial-use conditions. Core database data is CC0; supplementary data is subject to additional licence conditions described in the linked data licence.

== Installation ==

1. Install and activate WooCommerce 8.0 or newer.
2. Install ProductGather.
3. Activate the plugin.
4. Open ProductGather > Configurazione and review the Free providers. EAN-Search is optional: explicitly enable it and enter your personal API token only if you want to use the external barcode resolver.
5. Use ProductGather > Banco Acquisti to search and review a product before importing it.

== Frequently Asked Questions ==

= Does the Free plugin contain the operational "Importa da Fornitore" feature? =

No. The menu page is informational only. The operational Supplier module and its adapters are physically absent from the Free package.

= Can a provider API key unlock PRO features? =

No. API keys only configure providers that are actually included in the Free package.

= Does ProductGather automatically publish search results? =

No. The administrator reviews the product and explicitly chooses the archive/publication actions.

= Is network-wide Multisite operation certified? =

The release smoke covers activation and deactivation. Configure and operate the plugin per site; this does not certify every network-wide workflow.

= How do I replace a pre-release installation with the old folder name? =

Pre-release installations using the old import-suite-for-woocommerce folder require a controlled replacement: back up the database and plugin files, deactivate the old edition, and move its entire folder outside wp-content/plugins using your hosting file manager before installing ProductGather. Do not use WordPress's Delete button for the old edition: its uninstall routine removes shared settings and credentials. Activate only one edition at a time. For rollback, deactivate ProductGather, move its folder outside the plugins directory without uninstalling it, restore the saved old plugin folder and reactivate that edition. Validate this procedure on a staging copy before using a store with existing data.

== Changelog ==

= 1.0.0 =

* Optional EAN-Search exact physical barcode lookup after specialist misses, with a personal merchant token, no name search or automatic title enrichment, and documented source fields only.
* Eight included data providers: seven existing providers executable without an EAN-Search account, plus one optional EAN/UPC exact resolver enabled only with merchant opt-in and a personal token.
* Purchase Desk review, internal Archive and explicit single-product WooCommerce import.
* Product Field Parity across review, Archive, WooCommerce and frontend, including Cinema/Blu-ray data.
* Responsive Dashboard and Purchase Desk with a guided title-search fallback after a barcode miss.
* Voluntary support reports, optional diagnostics and clear Limited provider states.
* Informational PRO supplier workflow page with accessible text and no operational Supplier code.
* Stable release metadata, branding cleanup, runtime dependency checks and targeted security hardening.
* Shared capability contracts and safer reviewed updates that retain existing data when incoming fields are omitted.
* Structured book and music relevance, validated bibliographic identifiers, capability-aware title choices and preserved encoded image URLs.

* Parent product categories start name searches without choosing a physical format; broader bounded native-film acquisition and clear provider wait/retry messages.

== Upgrade Notice ==

= 1.0.0 =

First public Free release under the proposed ProductGather identity. Review external services and provider configuration before searching.
