{"id":359831,"date":"2026-09-01T13:42:17","date_gmt":"2026-09-01T13:42:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sellerkit-ai-shopping-feed\/"},"modified":"2026-09-01T13:42:01","modified_gmt":"2026-09-01T13:42:01","slug":"podsync-ai-product-feed-auditor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/podsync-ai-product-feed-auditor\/","author":23551761,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Podsync AI Product Feed Auditor","header_author":"","header_description":"Finds the products a shopping channel will reject, before it rejects them. Checks barcode check digits, then builds the feed without the broken ones.","assets_banners_color":"","last_updated":"2026-09-01 13:42:01","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":35,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"globalmatchhub","date":"2026-09-01 13:42:01","revision":3676211}},"upgrade_notice":[],"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3676211,"resolution":"1","location":"assets","locale":"","width":1240,"height":1180},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3676211,"resolution":"2","location":"assets","locale":"","width":1240,"height":1040},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3676211,"resolution":"3","location":"assets","locale":"","width":1240,"height":620}},"screenshots":{"1":"The readiness screen: what stops your shop, what stops individual products, what costs position.","2":"Settings: the four things WooCommerce does not record and every channel asks for.","3":"Feeds: an address for the channels that read one, a download for the ones that do not."}},"plugin_section":[],"plugin_tags":[1292,11082,148700,65424,54047],"plugin_category":[],"plugin_contributors":[276733],"plugin_business_model":[],"class_list":["post-359831","plugin","type-plugin","status-publish","hentry","plugin_tags-barcode","plugin_tags-ean","plugin_tags-gtin","plugin_tags-merchant-center","plugin_tags-upc","plugin_contributors-globalmatchhub","plugin_committers-globalmatchhub"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/podsync-ai-product-feed-auditor.svg","icon_2x":false,"generated":true},"screenshots":[{"src":"https:\/\/ps.w.org\/podsync-ai-product-feed-auditor\/assets\/screenshot-1.png?rev=3676211","caption":"The readiness screen: what stops your shop, what stops individual products, what costs position."},{"src":"https:\/\/ps.w.org\/podsync-ai-product-feed-auditor\/assets\/screenshot-2.png?rev=3676211","caption":"Settings: the four things WooCommerce does not record and every channel asks for."},{"src":"https:\/\/ps.w.org\/podsync-ai-product-feed-auditor\/assets\/screenshot-3.png?rev=3676211","caption":"Feeds: an address for the channels that read one, a download for the ones that do not."}],"raw_content":"<!--section=description-->\n<p>A shopping channel rejects a product and does not really tell you why. The usual advice is\nto open Merchant Center once a week and work through the diagnostics tab. That means you\nfind out after the rejection, and a rejected product sells nothing in the meantime.<\/p>\n\n<p>This plugin runs those checks in your own shop instead, before anything is sent. It does two\nthings, in the order that actually helps.<\/p>\n\n<p><strong>First it tells you what is wrong.<\/strong> Thirty-five checks against what the shopping channels\nask for, run over your real products, sorted by whether the problem stops your whole shop,\nstops one product, or just costs you position. Ten products with no barcode become one line\nthat says so, with links to three of them.<\/p>\n\n<p><strong>Then it builds the feed.<\/strong> For channels that read an address, you get an address to paste\nin. For channels that ask you to upload the file yourself, you get the file. Products with a\nblocking problem are left out rather than sent broken, because a feed full of rejects gets\nthe whole shop marked down, including the products that were fine.<\/p>\n\n<h4>Barcode check digits<\/h4>\n\n<p>A barcode with one digit mistyped is worse than no barcode at all. It looks right on your\nproduct screen, it passes an \"is this field filled in\" test, and the channel silently\nfails to match it. From the outside nothing appears to be wrong, so there is nothing\nprompting you to look.<\/p>\n\n<p>This plugin does the arithmetic. A GTIN, UPC, EAN or ISBN carries a check digit calculated\nfrom the digits before it, so a mistyped code can be caught before it costs you anything.\nIt also catches the commonest version of the mistake: a thirteen digit code with the last\ndigit dropped, which still looks like a valid twelve digit one.<\/p>\n\n<p>Be clear about what this can and cannot know. The channels separate a code that is <em>invalid<\/em>,\nmeaning the arithmetic does not come out, from one that is <em>incorrect<\/em>, meaning the arithmetic\nis fine but the code belongs to a different product. Arithmetic finds the first. Only the\nmanufacturer's own records can settle the second, so no plugin should claim to.<\/p>\n\n<h4>What it checks<\/h4>\n\n<ul>\n<li>Whether your shop can be listed at all: policy pages, return window, currency, shipping<\/li>\n<li>Barcodes: missing, wrong length, and check digit arithmetic<\/li>\n<li>Titles and descriptions: too short, empty, formatted in a way that will not survive<\/li>\n<li>Images: missing, too few, too small<\/li>\n<li>Prices: missing, and sale prices entered above the regular price<\/li>\n<li>Stock: status missing, quantity not tracked where a channel needs the number<\/li>\n<li>Variations: colour and size missing, variations with no parent<\/li>\n<li>Products a channel refuses outright, and downloads where only physical goods are accepted<\/li>\n<\/ul>\n\n<h4>What it will never do<\/h4>\n\n<ul>\n<li>Change or delete anything in your shop. It reads.<\/li>\n<li>Send your products, customers or orders to the plugin author.<\/li>\n<li>Put a feed at a public address for a channel that asks you not to.<\/li>\n<li>Tell you your shop is fine when it could not run the check.<\/li>\n<\/ul>\n\n<h4>Built for a real catalogue<\/h4>\n\n<p>A shop with twenty thousand products cannot be checked inside one page load, and a screen\nthat dies halfway is worse than a slow one. The check runs in pieces with a progress bar,\nand each piece hands back well inside what your host allows. The feed is written to a\nworking file and swapped into place only when it is whole, so a channel reading at that\nmoment gets the previous feed or the new one, never half of either.<\/p>\n\n<h4>Keeping up without updating<\/h4>\n\n<p>The shopping channels change what they ask for. Those requirements live in a signed rule\nfile the plugin fetches once a day, so a change on their side does not wait for a plugin\nrelease. Every file is checked against a signature made with a key that is not in this\nplugin, refused if it is older than the one already in use, and refused if it describes\nanything the plugin does not already know how to do. If any of that fails, or the server\ncannot be reached, your shop carries on with the rules it already had.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one service, run by the plugin author, to keep its list of channel\nrequirements current.<\/p>\n\n<ul>\n<li><strong>What is sent:<\/strong> nothing. The request asks for a file and sends no shop data, product\ndata, customer data or identifying information of any kind.<\/li>\n<li><strong>What is received:<\/strong> a rule file describing what each shopping channel asks for, and a\nsignature for it.<\/li>\n<li><strong>When:<\/strong> once a day, and when you press \"Check for new rules now\".<\/li>\n<li><strong>Where:<\/strong> https:\/\/podsync.lifeinsight-365.com\/rules\/ only.<\/li>\n<li><strong>Who runs it:<\/strong> globalmatchhub, the author of this plugin.<\/li>\n<li><strong>Terms of service:<\/strong> https:\/\/podsync.lifeinsight-365.com\/rules\/terms<\/li>\n<li><strong>Privacy policy:<\/strong> https:\/\/podsync.lifeinsight-365.com\/rules\/privacy<\/li>\n<\/ul>\n\n<p>The plugin works without this service. Every release carries a full copy of the rules, and a\nshop that never reaches the service keeps using the copy it already has. Nothing is sent to\nit, so there is no data of yours to opt out of.<\/p>\n\n<p>The plugin does not contact the shopping channels themselves. Feeds are built inside your\nshop; you decide who reads them.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20put%20my%20products%20on%20chatgpt%3F\"><h3>Does this put my products on ChatGPT?<\/h3><\/dt>\n<dd><p>No plugin can. Those channels admit merchants themselves, and at the time of writing not\nevery shop is eligible. What this does is get your product data into the shape they ask for\nand build the file, so that when you apply you are not turned down for the data.<\/p><\/dd>\n<dt id=\"will%20it%20change%20my%20products%3F\"><h3>Will it change my products?<\/h3><\/dt>\n<dd><p>No. It reads your shop and reports. Every fix is something you do yourself, on your own\nproduct screens.<\/p><\/dd>\n<dt id=\"my%20shop%20has%20thousands%20of%20products.%20will%20this%20time%20out%3F\"><h3>My shop has thousands of products. Will this time out?<\/h3><\/dt>\n<dd><p>The check runs in pieces and shows progress. Each piece stops well before your host would.<\/p><\/dd>\n<dt id=\"what%20if%20the%20plugin%20author%20disappears%3F\"><h3>What if the plugin author disappears?<\/h3><\/dt>\n<dd><p>Your shop keeps working. The rules are bundled inside the plugin, and the copy already\nsaved keeps being used. Nothing about the check or the feed depends on the author's server\nbeing up.<\/p><\/dd>\n<dt id=\"which%20barcode%20formats%20are%20checked%3F\"><h3>Which barcode formats are checked?<\/h3><\/dt>\n<dd><p>GTIN-8, UPC-12, EAN-13 and GTIN-14, including the leading-zero form.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Finds the products a shopping channel will reject, before it rejects them. Checks barcode check digits, then builds the feed without the broken ones.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/359831","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=359831"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/globalmatchhub"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=359831"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=359831"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=359831"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=359831"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=359831"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=359831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}