Documentation
Every check below is derived from a document Shopify publishes, and each finding in the app links to the page it came from. Nothing here is scored by a language model, which is why the same catalog always produces the same result.
How scoring works
Findings fall into three levels, and only the first removes a product from the feed entirely.
- Blocking means the product fails a requirement for inclusion in Shopify Catalog. AI assistants never see it, no matter how good the product is.
- Weakens matching means the product is included but an assistant has less to work with when a shopper describes what they want.
- Minor is polish.
The score weights blocking issues most heavily, because exclusion is binary. Your score is shown against the median of 85 from our scan of 19 established Shopify brands rather than against an abstract 100.
What is excluded from your score
Real catalogs contain entries that are not products: content blocks used to build landing pages, test rows, and zero-priced helper products created by bundle apps. Counting those as broken would be noise, so they are classified as housekeeping, left out of the score, and listed separately with the reason they were classified that way.
Zero-priced gifts and samples are a separate case. They are genuinely excluded from Shopify Catalog, so they are reported, but named as likely intentional rather than flagged as mistakes.
Blocking checks
A product failing any of these is absent from Shopify Catalog.
| Check | Fix |
|---|---|
| Product has no title | Give the product a descriptive title that names the item, not an internal code. |
| Product has no image | Upload at least one product image. One clear photo on a plain background is enough to qualify. |
| Product price is zero | Set a real price, or archive the product if it is a placeholder, sample or add-on that should not be sold on its own. |
| Product has no identifiable URL | Restore the product handle so the item has a permanent storefront URL. |
| Product is not published to a storefront | Publish the product to your Online Store, Hydrogen or Headless channel. |
| Product status is Unlisted | Change the status to Active if you want AI channels to be able to recommend this product. |
| Product is hidden from search engines | Remove the seo.hidden flag on products you want AI assistants to find. |
| Storefront is password protected | Remove the storefront password once you are ready to sell. |
Matching checks
These fields are the ones Shopify names as considered by AI platforms when matching a product to a shopper request.
| Check | Fix |
|---|---|
| Product has no description | Write a description covering what the product is, what it is made of, who it suits and when to use it. |
| Product type is not set | Set a product type for every item, using consistent naming across the catalog. |
| Variant option name is generic | Rename variant options to what they represent, such as Colour, Size or Material. |
| No variant is in stock | Restock, or archive the product if it is permanently discontinued so it stops diluting your catalog. |
| Barcode (GTIN, UPC, ISBN) is missing | Add the GTIN, UPC, EAN or ISBN to each variant. |
| Product belongs to no collection | Add the product to at least one collection that matches how shoppers describe it. |
| Refund policy is missing | Publish a refund policy in your store settings. |
Minor checks
| Check | Fix |
|---|---|
| Description is too thin to match queries | Expand the description with materials, dimensions, care instructions and use cases. |
| Vendor is not set | Set the vendor field, normally your own brand name or the manufacturer. |
| Product has no tags | Add tags describing attributes shoppers actually ask for, such as material, occasion or fit. |
| Product has only one image | Add at least one more image showing a different angle or the product in use. |
| Title is too short to disambiguate | Extend the title with the defining attribute, for example the material, model or format. |
| Title is excessively long | Trim the title to the product identity and move the extra detail into the description. |
| Privacy policy is missing | Publish a privacy policy in your store settings. |
| Terms of service are missing | Publish terms of service in your store settings. |
What the app can write
Only vendor, product type and description, and only for changes you approve individually. Barcodes, prices and identifiers are never generated: those are facts about the world, and inventing them corrupts a catalog in a way that is expensive to detect later.
Every applied change records its previous value, so any batch reverts in one click from the Bulk fixes screen.
How AI visibility is measured
Buying questions are derived from your own catalog: your product types, price bands and brand. The set is then frozen and reused between runs, because a tracker whose questions change every time produces a trend line that means nothing. You can edit the set.
The headline metric is unbranded share of voice: the share of questions where an assistant named your store when the shopper never typed your brand. Questions that already contain your brand are reported separately, because being named after someone types your name proves nothing.
Category questions such as "what are the best coffee brands" have the same answer for every store in that category, so they are asked once and shared. Questions naming your brand are never cached or shared.
Permissions
| Permission | Used for |
|---|---|
read_products | Reading the catalog: titles, descriptions, variants, barcodes, collections, metafields |
write_products | Applying bulk fixes you have approved, and reverting them |
read_legal_policies | Checking whether your refund, privacy and terms pages exist, since assistants cite them |
No customer permission is requested, so the app has no technical ability to read customers, orders or payment data. See the privacy policy.
More
Tutorial, FAQ, or email [email protected].