The diagnostic order for Catalog eligibility failures
Eleven gates fail in a predictable order. Walk store-level gates first because one failure disqualifies every product. Then walk product-level gates per failing product. Then check hidden/Unlisted status separately, because the seo.hidden metafield silently disqualifies products in a way the eligibility flag doesn't expose. Most stores fail on one of three: password protection, US/CA shipping configuration, or product status (Draft / Unlisted / Archived).
The eligibility list comes from Shopify's requirements page1; the hidden-status edge cases come from the hide-a-page doc3. Walking the diagnostic in store-then-product order saves time — one store-level fix can flip thousands of products into eligible.
§ 01 Store
Store-level failures (one breaks everything)
Six store-level gates. Each one, if it fails, disqualifies every product in the store. Most common failures: password protection left on, plan downgraded to free trial state, Markets configuration that excludes US and CA both, or store-level Acceptable Use Policy issue (typically affects regulated categories).
- Plan is below Starter (Shopify Lite, Pause, free trial, deactivated). Fix: upgrade plan.
- Storefront password protection is on (Online Store > Preferences > Password protection). Fix: turn off.
- Store ships to neither US nor CA (Settings > Shipping and delivery + Settings > Markets). Fix: enable at least one.
- Acceptable Use Policy violation flagged by Shopify (categories with regulatory issues). Fix: contact Shopify support.
- Products are not published to Online Store / Hydrogen / Headless sales channel. Fix: publish to one of the three.
- Hydrogen / Headless without correct route format. Fix: confirm Storefront API route format matches Shopify spec.
§ 02 Product
Product-level failures
Five product-level gates per product. Most common failures: a product imported via CSV with empty title or empty media library, a free product with $0.00 price (typically promo or sample SKUs), or a product whose status got bumped to Draft during a bulk edit and never reverted.
- Title is empty. Fix: set a non-empty product title.
- No image attached. Fix: add at least one media item.
- Price is $0.00. Fix: set price > $0 (use a sample/gift workflow for free items).
- Status is Draft or Archived. Fix: set Status to Active.
- Product is set to Unlisted (Online Store > Search engine listing > Unlisted). Fix: change to Listed.
§ 03 Hidden
Hidden / Unlisted edge cases
Shopify exposes three ways to hide a product from search engines: Unlisted status, the seo.hidden metafield, and a noindex meta tag added via theme.liquid. Unlisted is the one most likely to silently disqualify Catalog inclusion because it's a per-product status flag many merchants don't know exists.
Per Shopify3, Unlisted status 'hides the product from internet search, Shopify Catalog, and your store's sitemap.' The seo.hidden metafield set to 1 has the same effect. The third method (theme.liquid noindex on a template or handle) blocks search engines but doesn't necessarily disqualify Catalog — Catalog is an internal Shopify feed, not a search-engine crawl.
§ 04 Checklist
The diagnostic checklist
Walk these in order. If any store-level gate fails, stop and fix it first — every product is disqualified until the store passes. After store-level gates pass, sample three products and walk the product-level gates per product.
- Confirm Settings > Plan shows Starter or higher.
- Confirm Online Store > Preferences > Password protection is off.
- Confirm Settings > Markets has US or CA enabled.
- Confirm Settings > Shipping zones include US or CA.
- Open three random products. Confirm Status = Active, not Draft.
- Confirm each has a non-empty title.
- Confirm each has at least one image.
- Confirm price > $0.
- Confirm Online Store > Search engine listing shows Listed, not Unlisted.
- Open Content > Metafields > Products and confirm no seo.hidden metafield is set to 1.
- If on the Agentic plan: confirm external product URL is set per product.