{"id":377887,"date":"2026-09-30T23:10:49","date_gmt":"2026-09-30T23:10:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/recallsafe-for-woocommerce\/"},"modified":"2026-09-30T23:04:01","modified_gmt":"2026-09-30T23:04:01","slug":"jaz-x-product-recall-manager-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/jaz-x-product-recall-manager-for-woocommerce\/","author":23558679,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.4","stable_tag":"trunk","tested":"7.1.2","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"JAZ-X Product Recall Manager for WooCommerce","header_author":"JAZ-X Innovation","header_description":"Create product recalls, find affected WooCommerce orders, and publish customer safety notices.","assets_banners_color":"","last_updated":"2026-09-30 23:04:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.jazx.online\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":53,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jazxinnovation","date":"2026-09-30 23:10:36","revision":3722187}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3722187,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3722187,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[270383,237366,283805,283804,286],"plugin_category":[45],"plugin_contributors":[279727],"plugin_business_model":[],"class_list":["post-377887","plugin","type-plugin","status-publish","hentry","plugin_tags-product-recall","plugin_tags-product-safety","plugin_tags-recall-management","plugin_tags-safety-notice","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-jazxinnovation","plugin_committers-jazxinnovation"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jaz-x-product-recall-manager-for-woocommerce\/assets\/icon-128x128.png?rev=3722187","icon_2x":"https:\/\/ps.w.org\/jaz-x-product-recall-manager-for-woocommerce\/assets\/icon-256x256.png?rev=3722187","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>JAZ-X Product Recall Manager for WooCommerce gives store owners a structured workflow for product safety recalls.<\/p>\n\n<p>Free 1.0.0 includes:<\/p>\n\n<ul>\n<li>Manual product recall cases.<\/li>\n<li>Recall reference, source, date, brand, model, identifier, batch\/lot, hazard, customer action and remedy fields.<\/li>\n<li>Link recalls to WooCommerce products.<\/li>\n<li>Batch-safe scanning of WooCommerce orders using WooCommerce order APIs.<\/li>\n<li>HPOS compatibility declaration.<\/li>\n<li>Affected order\/customer list.<\/li>\n<li>Quantity counts.<\/li>\n<li>Resolution tracking: open, refund, replacement, repair or closed.<\/li>\n<li>Public product recall notice pages.<\/li>\n<li><p>Internal audit log foundation.<\/p><\/li>\n<li><p>Provider-agnostic Purchase Source Adapter API for verified external buyers.<\/p><\/li>\n<li>Built-in WooCommerce order source plus optional hook\/callback adapters.<\/li>\n<li>Adapter records are normalized before storage and quarantine locks are enforced centrally.<\/li>\n<li><p>Purchase Sources admin screen shows only registered verified sources, without requiring provider-specific branding.<\/p><\/li>\n<li><p>Deep Transaction Discovery using exact product title, slug, SKU or product URL; numeric-only IDs are ignored.<\/p><\/li>\n<li>Read-only discovery across transaction\/customer-capable custom tables and transaction-like custom record types.<\/li>\n<li>Strict external product identity verification and quarantine of legacy false-positive matches.<\/li>\n<\/ul>\n\n<p>JAZ-X Product Recall Manager does not determine whether a product is legally subject to a recall. Store owners remain responsible for verifying recall information and legal obligations.<\/p>\n\n<h3>Adapter API Example<\/h3>\n\n<p>Integrations may register a callback-backed verified purchase source:<\/p>\n\n<pre><code>add_action( 'recallsafe_register_purchase_sources', function ( $registry ) {\n    $registry-&gt;register_callback_source(\n        'my_external_source',\n        'External verified purchase source',\n        function ( $context ) {\n            \/\/ Query your own system and return only independently verified buyers.\n            return array();\n        }\n    );\n} );\n<\/code><\/pre>\n\n<p>Or use the generic hook-backed adapter:<\/p>\n\n<pre><code>add_filter( 'recallsafe_external_verified_matches', function ( $records, $context ) {\n    \/\/ Return only provider-verified records for the supplied product fingerprints.\n    return $records;\n}, 10, 2 );\n<\/code><\/pre>\n\n<p>A verified record requires <code>source_record_id<\/code> and <code>customer_email<\/code>. Optional fields are <code>customer_id<\/code>, <code>customer_name<\/code>, <code>quantity<\/code>, <code>purchased_at<\/code>, <code>verification_method<\/code>, and <code>product_reference<\/code>.<\/p>\n\n<h3>Adapter SDK v2 Example<\/h3>\n\n<pre><code>add_action( 'recallsafe_register_purchase_sources', function ( $registry ) {\n    $registry-&gt;register_callback_source(\n        'verified_external_commerce',\n        'External verified purchase source',\n        function ( $context ) {\n            $records = array();\n            foreach ( RecallSafe_Adapter_SDK::products_from_context( $context ) as $product ) {\n                \/\/ Query your own trusted system using the product fingerprint.\n                \/\/ Only return a row after your integration has verified ownership.\n            }\n            return $records;\n        }\n    );\n} );\n<\/code><\/pre>\n\n<p>Build records with <code>RecallSafe_Adapter_SDK::verified_record()<\/code>. Required fields remain <code>source_record_id<\/code> and <code>customer_email<\/code>. Recommended fields are <code>verification_method<\/code>, <code>product_reference<\/code>, <code>purchased_at<\/code>, and, for access-based products, <code>entitlement_status<\/code> and <code>entitlement_expires<\/code>. Provider-specific API credentials, webhook secrets and private implementation details must stay in the integrating system.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>jaz-x-product-recall-manager-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install the ZIP from Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Ensure WooCommerce is installed and active.<\/li>\n<li>Activate JAZ-X Product Recall Manager for WooCommerce.<\/li>\n<li>Go to JAZ-X Recalls &gt; Add Product Recall.<\/li>\n<li>Add recall details and link the affected WooCommerce products.<\/li>\n<li>Go to JAZ-X Recalls &gt; Affected Customers and run Scan \/ Rescan Orders.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20jaz-x%20product%20recall%20manager%20automatically%20contact%20government%20recall%20databases%3F\"><h3>Does JAZ-X Product Recall Manager automatically contact government recall databases?<\/h3><\/dt>\n<dd><p>Not in Free 1.0.0. This release focuses on the store-side recall workflow, manual verified recall records, and provider-neutral purchase-source adapters.<\/p><\/dd>\n<dt id=\"does%20it%20support%20woocommerce%20hpos%3F\"><h3>Does it support WooCommerce HPOS?<\/h3><\/dt>\n<dd><p>The plugin declares HPOS compatibility and uses WooCommerce order APIs rather than directly querying legacy order post tables.<\/p><\/dd>\n<dt id=\"can%20another%20checkout%2C%20licensing%2C%20membership%2C%20marketplace%2C%20or%20download%20system%20integrate%20with%20jaz-x%20product%20recall%20manager%3F\"><h3>Can another checkout, licensing, membership, marketplace, or download system integrate with JAZ-X Product Recall Manager?<\/h3><\/dt>\n<dd><p>Yes. Version 0.4.0 adds a provider-agnostic Purchase Source Adapter API. Integrations can register an object implementing <code>RecallSafe_Purchase_Source_Interface<\/code>, register a callback source through the registry, or supply verified rows through the <code>recallsafe_external_verified_matches<\/code> filter. JAZ-X Product Recall Manager core does not need to know the provider implementation.<\/p><\/dd>\n<dt id=\"what%20must%20an%20external%20adapter%20return%3F\"><h3>What must an external adapter return?<\/h3><\/dt>\n<dd><p>Each verified row must include a stable <code>source_record_id<\/code> and a valid <code>customer_email<\/code>. Optional fields include <code>customer_id<\/code>, <code>customer_name<\/code>, <code>quantity<\/code>, <code>purchased_at<\/code>, <code>verification_method<\/code>, and <code>product_reference<\/code>. The adapter is responsible for verifying that the buyer belongs to one of the product fingerprints supplied in the scan context.<\/p><\/dd>\n<dt id=\"does%20it%20automatically%20email%20customers%3F\"><h3>Does it automatically email customers?<\/h3><\/dt>\n<dd><p>JAZ-X Product Recall Manager can send a manual safety notification to a verified affected customer and includes a no-send preview. Draft and Reviewing recalls cannot send live notifications.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20delete%20recall%20records%3F\"><h3>Does uninstalling delete recall records?<\/h3><\/dt>\n<dd><p>No. Safety and audit-related data is intentionally not automatically deleted on uninstall.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Documented the activation-only SHOW INDEX query as using a trusted schema identifier derived only from $wpdb-&gt;prefix and a fixed suffix.<\/li>\n<li>No functional behavior changed from 1.0.3.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Marked activation-only schema verification queries as intentional direct database checks for WordPress coding standards.<\/li>\n<li>No functional behavior changed from 1.0.2.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Renamed the public plugin identity to JAZ-X Product Recall Manager for WooCommerce and updated the WordPress.org text domain\/package slug.<\/li>\n<li>Moved admin JavaScript out of inline script tags and into a properly enqueued admin asset.<\/li>\n<li>Passed scan runtime data to JavaScript through WordPress localization instead of interpolating PHP values into a script block.<\/li>\n<li>Reduced the composite unique-index prefix lengths for compatibility with older WordPress-supported MySQL\/InnoDB index limits.<\/li>\n<li>Database version is now recorded only after the required tables and unique index are verified.<\/li>\n<li>Existing RecallSafe database\/meta keys and developer hooks are intentionally preserved for backward compatibility and existing data.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Removed the duplicate Plugin URI header so Plugin URI and Author URI no longer conflict during WordPress.org validation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable Free release.<\/li>\n<li>Finalized the professional Add\/Edit Recall, Product Recalls, Affected Customers, Purchase Sources, audit, and quarantine interfaces.<\/li>\n<li>Includes provider-neutral purchase-source adapters, strict external-buyer verification, quarantine safeguards, manual safety notifications, no-send email preview, and resolution tracking.<\/li>\n<li>Reworked the quarantined-record removal control for reliable visible rendering.<\/li>\n<li>Declares WooCommerce HPOS compatibility and uses WooCommerce order APIs for order scanning.<\/li>\n<li>Preserves recall, affected-customer, quarantine, and audit data on uninstall; safety records are not deleted automatically.<\/li>\n<li>Release packaging, readme, version, stable-tag, translation-domain, and Plugin Check cleanup completed.<\/li>\n<\/ul>\n\n<h4>0.5.10<\/h4>\n\n<ul>\n<li>Made the quarantined-record removal action render as a plain, reliable text button.<\/li>\n<li>Added explicit spacing between the Recent Audit Activity title and event-count badge.<\/li>\n<\/ul>\n\n<h4>0.5.9<\/h4>\n\n<ul>\n<li>Added direct-access protection to the provider-neutral adapter example.<\/li>\n<li>Documented and scoped Plugin Check handling for validated dynamic database identifiers used by external-source discovery.<\/li>\n<li>Kept value parameters prepared and existing strict source-validation safeguards unchanged.<\/li>\n<\/ul>\n\n<h4>0.5.8<\/h4>\n\n<ul>\n<li>Reworked bounded post-meta discovery to use fixed prepared statements and remove dynamic IN-clause prepare warnings.<\/li>\n<\/ul>\n\n<h4>0.5.7<\/h4>\n\n<ul>\n<li>Fixed the remaining Plugin Check translators-comment error in payment evidence diagnostics.<\/li>\n<li>Corrected the plugin header version to match the runtime version.<\/li>\n<\/ul>\n\n<h4>0.5.6<\/h4>\n\n<ul>\n<li>Added the two remaining translator comments for payment-evidence placeholder strings reported by Plugin Check.<\/li>\n<\/ul>\n\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>Polished Affected Customers audit and quarantine panels.<\/li>\n<li>Improved audit event badge spacing and card consistency.<\/li>\n<li>Restored a prominent, reliable Remove permanently quarantine action.<\/li>\n<\/ul>\n\n<h4>0.5.3<\/h4>\n\n<ul>\n<li>Redesigned Add\/Edit Recall screen with professional card layout, summary metrics, responsive sections, numbered product selection, and checkboxes.<\/li>\n<li>Added serial numbers and selection checkboxes to the Product Recalls list.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Professional admin UI\/UX polish across recall management screens.<\/li>\n<li>Added scan summary metric cards for orders, affected units, external signals, and verified external buyers.<\/li>\n<li>Moved technical scan output into a collapsed Advanced diagnostics panel.<\/li>\n<li>Improved responsive layout, spacing, typography, cards, toolbars, tables, empty states, and audit presentation.<\/li>\n<li>Kept provider-neutral purchase-source architecture and quarantine safeguards unchanged.<\/li>\n<\/ul>\n\n<h4>0.4.8<\/h4>\n\n<ul>\n<li>Improved Recent Audit Activity with meaningful scan summaries.<\/li>\n<li>Collapsed Scan Started\/Completed pairs into a single scan event in the UI.<\/li>\n<li>Added reliable actor labels (admin, system, or user ID fallback).<\/li>\n<li>Added clearer audit cards for notifications, resolution changes, quarantine and recall updates.<\/li>\n<\/ul>\n\n<h4>0.4.5<\/h4>\n\n<ul>\n<li>Added no-send safety email preview.<\/li>\n<li>Added meaningful empty state for audit activity and filters malformed legacy audit rows.<\/li>\n<li>Reused the exact notification builder for preview and live sends.<\/li>\n<\/ul>\n\n<h4>0.4.4<\/h4>\n\n<ul>\n<li>Expands Purchase Sources into an adapter operations screen with health, capabilities, last verification, last test, and non-destructive source tests.<\/li>\n<li>Adds optional Adapter SDK v2 methods: get_capabilities(), get_health_status(), and test_connection() without breaking the original interface.<\/li>\n<li>Records source runtime health\/verification timestamps and clean adapter failure diagnostics.<\/li>\n<li>Keeps WooCommerce on the same common purchase-source contract and adds health\/capability reporting.<\/li>\n<li>Updates the provider-neutral developer example and keeps provider-specific implementation outside JAZ-X Product Recall Manager core.<\/li>\n<\/ul>\n\n<h4>0.4.2<\/h4>\n\n<ul>\n<li>Packaging fix: restored the canonical plugin directory used by that release so uploaded ZIPs replaced the existing plugin instead of installing as a duplicate.<\/li>\n<li>Keeps the v0.4.1 Adapter SDK v2 functionality unchanged.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Adds Adapter SDK v2 while preserving the v1 interface for backward compatibility.<\/li>\n<li>Adds a richer provider-neutral scan context with a normalized <code>products<\/code> array.<\/li>\n<li>Adds standardized verification methods for webhook, provider API, entitlement, subscription, download and license integrations.<\/li>\n<li>Adds optional entitlement status\/expiry and source type fields to normalized adapter records.<\/li>\n<li>Keeps provider-specific implementation outside JAZ-X Product Recall Manager core.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Adds the provider-agnostic Purchase Source Adapter API.<\/li>\n<li>Adds registration through <code>recallsafe_register_purchase_sources<\/code>, callback-backed sources, and a generic verified-match filter.<\/li>\n<li>Adds centralized verified-record normalization before external buyers can enter the affected-customer table.<\/li>\n<li>Enforces external quarantine locks for adapter-provided matches.<\/li>\n<li>Adds a Purchase Sources admin screen for connected verified sources.<\/li>\n<li>Keeps provider-specific implementation details outside JAZ-X Product Recall Manager core.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Fixes the unique-bridge discovery-to-correlation hand-off.<\/li>\n<li>Carries catalog-unique bridge fingerprints on exact external source rows instead of re-deriving them later.<\/li>\n<li>Deduplicates multiple bridge hits on the same external row.<\/li>\n<li>Correlation diagnostics now use the already-proven unique bridge discovery as authoritative evidence.<\/li>\n<li>Allows human-review buyer candidates when a catalog-unique bridge, customer identity, and entitlement\/access evidence are present without requiring a transaction reference.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Preserve catalog-unique bridge fingerprints through row-level buyer correlation.<\/li>\n<li>Deduplicate multiple bridge hits that refer to the same external source row.<\/li>\n<li>Align in-memory bridge matching with common case-insensitive database collations.<\/li>\n<li>Treat unique bridge + customer identity + entitlement evidence as a valid human-review path when no transaction reference exists.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Adds Unique Bridge Buyer Verification for external download\/access stores.<\/li>\n<li>Allows a catalog-unique product bridge to verify a buyer without requiring a transaction reference when entitlement\/access evidence is present.<\/li>\n<li>Resolves opaque same-source customer references to customer identity rows before presenting a human-review candidate.<\/li>\n<li>Keeps human approval mandatory and preserves quarantine for older false-positive external matches.<\/li>\n<\/ul>\n\n<h4>0.2.9<\/h4>\n\n<ul>\n<li>Added catalog-wide bridge identifier uniqueness validation.<\/li>\n<li>Shared\/global bridge identifiers are rejected for buyer promotion.<\/li>\n<li>Added catalog-unique bridge + customer identity + entitlement verification when no transaction reference exists.<\/li>\n<li>Added uniqueness diagnostics to the External Identifier Bridge Discovery UI.<\/li>\n<\/ul>\n\n<h4>0.2.8<\/h4>\n\n<ul>\n<li>Adds related-row bridge correlation inside the same external source.<\/li>\n<li>Follows exact transaction\/reference values from bridge-matched seed rows to customer and entitlement\/history rows.<\/li>\n<li>Keeps correlation bounded and read-only; private provider, bridge and transaction values are never displayed.<\/li>\n<li>Deduplicates multiple related history rows into one human-reviewed buyer candidate.<\/li>\n<\/ul>\n\n<h4>0.2.6<\/h4>\n\n<ul>\n<li>Adds Bridge-Correlated Buyer Verification for opaque external catalog identifiers.<\/li>\n<li>Correlates exact linked-product bridge identifiers with customer identity, transaction evidence and download\/access entitlement evidence in the same external source.<\/li>\n<li>Deduplicates history\/event rows by source and customer identity before human review.<\/li>\n<li>Shows masked buyer candidates with bridge-correlation confidence; raw provider, table, bridge and transaction values remain private.<\/li>\n<li>Keeps promotion human-reviewed and revalidates promoted external buyers against current bridge evidence on later scans.<\/li>\n<\/ul>\n\n<h4>0.2.5<\/h4>\n\n<ul>\n<li>Adds External Identifier Bridge Discovery for opaque external catalog\/product\/price references.<\/li>\n<li>Reads only safe, non-sensitive linked-product metadata and displays identifier fingerprints instead of raw values.<\/li>\n<li>Correlates exact bridge identifiers with transaction\/customer-capable external sources without exposing provider names or private values.<\/li>\n<li>Numeric WooCommerce product IDs alone remain insufficient for external customer promotion.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>Quarantines legacy external matches that fail strict product-identity revalidation.<\/li>\n<li>Excludes quarantined rows from active affected-customer counts.<\/li>\n<li>Adds a dedicated Actions column with a visible Remove button for external rows.<\/li>\n<li>Adds a quarantined-records review panel with permanent removal.<\/li>\n<li>Keeps deep transaction discovery read-only and provider-agnostic.<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Strict external product identity verification: numeric IDs alone can no longer be promoted.<\/li>\n<li>Added false-positive removal for external affected-customer records.<\/li>\n<li>Added deeper read-only transaction discovery using exact text identifiers.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Adds human-reviewed promotion of exact-product external download\/access entitlement candidates into Affected Customers.<\/li>\n<li>Deduplicates entitlement history by customer identity and keeps provider\/table names private.<\/li>\n<li>Uses generic external entitlement source labels and masked candidate identities before approval.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added entitlement-aware external record classification for digital products that grant direct downloads or time-limited access without issuing a license.<\/li>\n<li>Separates purchase\/transaction, download\/access entitlement, license\/supporting, fulfillment and access-period evidence.<\/li>\n<li>Treats subscription\/access\/download fields as entitlement evidence instead of assuming they are license records.<\/li>\n<li>Reports access-period\/expiry evidence so time-limited download access can be distinguished from licensing.<\/li>\n<li>Expands safe source discovery to entitlement, download, access, fulfillment and delivery storage signals.<\/li>\n<li>External candidate mapping remains read-only and diagnostic; raw customer, payment, entitlement and license values are not displayed or auto-enrolled.<\/li>\n<\/ul>\n\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Added privacy-preserving Safe Candidate Mapping for strong external purchase\/license sources.<\/li>\n<li>Reads only exact affected-product candidate rows in bounded read-only queries and never displays raw customer, transaction or license values.<\/li>\n<li>Reports customer evidence, transaction evidence, license evidence, anonymized unique identity counts, likely record role and mapping confidence.<\/li>\n<li>Fixed external-source labels so verification\/mapping uses the same source letter shown by Source Inspector.<\/li>\n<li>External candidates remain diagnostic only and are not auto-enrolled as affected customers.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>Added a read-only Candidate Verification Engine for strong unknown external purchase\/license sources.<\/li>\n<li>Runs exact affected-product reference checks without displaying customer identity or transaction values.<\/li>\n<li>Reports anonymized candidate-record counts, match method and confidence.<\/li>\n<li>Candidate evidence never auto-marks customers as affected; a compatible adapter or safely mapped source is still required.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Added anonymized Source Inspector for possible non-WooCommerce purchase\/license storage.<\/li>\n<li>Inspects schema metadata only; unknown customer and transaction rows are never read.<\/li>\n<li>Classifies generic source capabilities such as customer identity, product reference, transaction\/license reference, status\/date and quantity\/amount.<\/li>\n<li>Adds adapter-readiness guidance without exposing provider names in the plugin UI.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Added provider-agnostic purchase-source registry and safe external source discovery signals.<\/li>\n<li>Prepared affected-customer storage for verified non-WooCommerce purchase sources.<\/li>\n<li>Unknown external schemas are never read automatically and cannot create affected-customer matches without an adapter.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Improved affected-order scanner diagnostics.<\/li>\n<li>Normalize WooCommerce order statuses before querying orders.<\/li>\n<li>Match recalled products by product ID, variation ID, parent product ID and SKU fallback.<\/li>\n<li>Show scan totals, line-item totals, match method counts and linked product identifiers after each scan.<\/li>\n<li>Keep matching conservative: product-name-only matching is intentionally not used.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Block Draft and Reviewing recall URLs for all frontend visitors, including logged-in managers.<\/li>\n<li>Add linked WooCommerce product names, SKUs and product image to public recall notices.<\/li>\n<li>Improve the public recall notice with an official safety-alert layout and clearer status presentation.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Fix public recall URLs returning 404 after activation by flushing rewrite rules safely after post type registration.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Replaced the generic WordPress post editor with a dedicated product-recall management interface.<\/li>\n<li>Added searchable WooCommerce product selection.<\/li>\n<li>Unified recall status handling so Draft\/Reviewing notices are not public.<\/li>\n<li>Added structured admin sections and improved public recall notice formatting.<\/li>\n<li>Redirected legacy recall edit links into the product-recall management interface.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial free release.<\/li>\n<li>Manual recall case management.<\/li>\n<li>WooCommerce product linking.<\/li>\n<li>Batch order scan and affected customer detection.<\/li>\n<li>Resolution tracking.<\/li>\n<li>Public recall notice.<\/li>\n<li>HPOS compatibility declaration.<\/li>\n<\/ul>","raw_excerpt":"Manage WooCommerce product recalls, identify affected past orders, and publish product safety notices.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/377887","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=377887"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jazxinnovation"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=377887"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=377887"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=377887"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=377887"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=377887"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=377887"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}