I built a small browser-based preflight checker for Shopify merchants and PPC freelancers who maintain a manual or supplemental Google Merchant Center feed.
The current beta accepts CSV and TSV files and checks for common file-level and row-level risks before upload, including:
delimiter, UTF-8/BOM, header, and inconsistent row-width issues
missing core attributes such as id, title, description, link, image_link, price, and availability
empty or duplicate IDs
basic price and availability formatting
basic GTIN length and character validation
The feed is processed locally in your browser. It is not uploaded, and the tool does not connect to Shopify or Merchant Center.
This is not a feed-management service and it cannot check account suspensions, policy issues, website crawling, live price/inventory mismatches, or guarantee that Google will accept or approve a product.
I am looking specifically for merchants, PPC specialists, freelancers, or small agencies who already have a real manual/supplemental CSV or TSV feed available to test. Please scan your own file here:
The most useful feedback would be:
Did it find an issue that could realistically affect processing?
Was any warning incorrect or unclear?
Was your file a primary manual feed or a supplemental feed?
Please do not post or send your feed, client information, or product data. A short description of the issue is enough.
Hi @EDword Welcome To Shopify Community Good idea keeping it fully browser-local, that alone makes it easier for people to actually try without worrying about data privacy. I don’t have a manual/supplemental feed handy right now to test against, but the scope you’ve defined (file-level checks only, no account/policy stuff) is clear and honest about what it does and doesn’t do, which is refreshing compared to tools that overpromise. One suggestion, if you haven’t already, it might help to show a sample “before/after” screenshot of a file with intentional errors so people can see exactly what kind of issues it flags before committing their own feed to test.Hope this helps solve your problem, and if it does, don’t forget to like and mark it as the solution. Thank you!
@EDword — Expanding your pre-checker to Google Merchant Center (GMC) CSV/TSV feeds is a great evolution!
When merchants upload manual product feeds to GMC, item-level disapprovals almost always stem from image asset formatting in the ‘image_link’ and ‘additional_image_link’ columns.
Three specific image-pipeline failure modes to flag in your GMC feed pre-checker:
Raw WebP Image Endpoints: Google Merchant Center crawlers strictly require static JPG/PNG image endpoints. If your feed references raw .webp links from supplier CDNs (common with Asian manufacturers), GMC crawlers fail to parse the visual asset, triggering “Invalid or Missing Image” disapprovals.
Expiring Signed CDN Tokens: Image URLs containing expiring authentication tokens (?auth_key=123...) pass URL syntax checks, but fail Google’s background feed harvesting queues after token expiration, severing the GMC indexing path.
Missing Variant-Level Image Links: GMC pulls image URLs at the variant level. In your TSV/CSV feed, every variant row (e.g. all size rows for ‘Navy’) must carry the exact Navy image URL under ‘image_link’.
If merchants identify WebP or variant image mapping gaps before generating their Google Merchant feed, normalizing them locally using EasyCatch (a client-side Chrome extension) converts supplier WebP to static JPGs inside the browser sandbox and exports Matrixify-compliant ZIPs in 1 click. 100% Local-First so store catalog data stays completely private.
Curious if your TSV parser validates image HTTP header content-types or strictly tests string extension patterns?
Thanks — the current Pre-MVP does neither. It only checks that image_link exists and is non-empty. Because processing is browser-local and intentionally does not fetch merchant URLs, it does not inspect HTTP headers or content types, and it does not verify crawler reachability. I’ll keep that limitation explicit rather than implying image validation it does not perform.