harbor.example
69
Readable, with gaps
woocommerce · rules 2026-10 · 1 product page
No one can guarantee that an AI assistant will show your products. Each service decides what it displays. CartReady checks published requirements and whether a store is easy for those services to read.
Access and discovery
86
Product data
66
Trust and policies
87
Channel connections
33
The five fixes that matter most
1. B5
GTIN, or MPN plus brand, is present
Add the real GTIN, or both the manufacturer MPN and the brand. Leave the field blank rather than inventing a number.
2. A2
robots.txt does not block AI shopping crawlers from product paths
Search and fetch bots can still read product pages. Blocking GPTBot or Google-Extended only opts out of training use. This result is informational.
3. B11
Shipping and return policy are in the offer
Add shippingDetails and hasMerchantReturnPolicy to the offer. Match the policy pages you actually publish.
4. B7
Images are absolute, plural, and described
Use an absolute HTTPS image URL in JSON-LD, show at least two images, and add alt text.
5. B8
Descriptions are substantial and not duplicated
Write a unique plain-text description of at least 150 characters for each product.
Want the files, not just the list?
The Full Report samples more products and includes a PDF. The Fix Pack adds JSON-LD, feed files, llms.txt, and install steps. You put the files on the store yourself.
Channel fit
ChatGPT product feed
maybeChatGPT product discovery reads a feed with nine required fields, plus crawler access and store policies. The sample does not clear every one of those.
Google Merchant Center and AI Mode
maybeGoogle AI Mode and Gemini shopping rely on Merchant Center product data. Public structured data is a signal, not proof of a live feed, and display is not guaranteed.
Shopify Agentic plan
yesStores that are not on Shopify can submit products to Shopify Catalog through the Agentic plan. The public pages need a stable product URL and the same core fields a feed requires. Enrollment is Shopify's decision.
Stripe Agentic Commerce Suite
yesStripe can share a catalog with agents you choose. You remain merchant of record. The public sample has to cover id, title, description, link, image, availability, price, brand, and GTIN or MPN.
Every check
Access and discovery
- A1passhigh
Homepage returns 200 over HTTPS
HTTP 200, 1 redirect(s)
No change needed for the homepage response.
Google Search Central: HTTPS - A2partialhigh
robots.txt does not block AI shopping crawlers from product paths
Training crawlers blocked: GPTBot. Search crawlers allowed.
Search and fetch bots can still read product pages. Blocking GPTBot or Google-Extended only opts out of training use. This result is informational.
OpenAI crawler documentation - A3passhigh
Product pages return 200 to the scanner and to an AI crawler
Scanner and OAI-SearchBot both received HTTP 200.
No change needed for the sampled product response.
OpenAI crawler documentation - A4passmedium
XML sitemap lists product URLs
Sitemap status: products
No change needed for the sitemap.
Google Search Central: sitemaps - A5passhigh
Product title and price are in the server HTML
Sampled 1 product page.
Title and price are in the HTML response.
Google product structured data - A6passlow
Canonical tag is present and self-consistent
Canonical: https://harbor.example/products/linen-throw
Canonicals match the product URLs.
Google Search Central: canonicalization - A7faillow
llms.txt is present and well formed
missing
Optional: add /llms.txt with one H1, a one-paragraph summary starting with '>', and links to policies and key pages. No shopping channel requires this file.
llms.txt proposal - A8passmedium
Homepage responds quickly and stays light
TTFB 420 ms, HTML 180000 bytes
Homepage timing and size are within the check.
web.dev: TTFB
Product data
- B1passhigh
Product JSON-LD is present
Sampled 1 product page. Coverage 100%.
This check passed on the sample.
schema.org Product - B2passhigh
Offer includes price and currency
Sampled 1 product page. Coverage 100%.
This check passed on the sample.
schema.org Offer - B3passhigh
Availability is marked up
Sampled 1 product page. Coverage 100%.
This check passed on the sample.
schema.org ItemAvailability - B4passhigh
Structured price matches the visible price
0 mismatch(es) in 1 compared price(s). 0 had no visible price.
Structured and visible prices agree.
Google product structured data - B5failhigh
GTIN, or MPN plus brand, is present
Sampled 1 product page. Coverage 0%.
Add the real GTIN, or both the manufacturer MPN and the brand. Leave the field blank rather than inventing a number.
Google product data specification - B6passmedium
Brand is present
Sampled 1 product page. Coverage 100%.
This check passed on the sample.
schema.org Brand - B7partialmedium
Images are absolute, plural, and described
Sampled 1 product page.
Use an absolute HTTPS image URL in JSON-LD, show at least two images, and add alt text.
Google product structured data - B8failmedium
Descriptions are substantial and not duplicated
Sampled 1 product page. Coverage 0%.
Write a unique plain-text description of at least 150 characters for each product.
OpenAI product feed spec - B9failmedium
Variants are machine-readable
Variant words appear in titles only.
Represent each variant as its own offer or ProductGroup entry, with its own SKU and price.
schema.org ProductGroup - B10passmedium
Stable product IDs are present and unique
THROW-01
IDs are present and unique in the sample.
schema.org Product - B11failmedium
Shipping and return policy are in the offer
0 of 1 include both shipping and return markup.
Add shippingDetails and hasMerchantReturnPolicy to the offer. Match the policy pages you actually publish.
Google merchant listing properties - B12n/alow
Visible reviews are marked up
No visible reviews in the sample.
Do not add review markup unless real reviews are shown on the page.
Google product structured data - B13partiallow
Category or breadcrumb is present
Category 0%, breadcrumb 100%.
Add a BreadcrumbList. Add a Google product category when you know the right one.
Google breadcrumb structured data - B14passhigh
Sample could fill the nine required product-feed fields
Sampled 1 product page. Coverage 100%.
This check passed on the sample.
OpenAI product feed spec
Trust and policies
- C1passhigh
Return or refund policy is linked from the footer
Linked from the footer and the page responded.
The policy is linked from the footer.
Shopify: ChatGPT and store policies - C2partialmedium
Shipping policy is linked
Shipping appears in an FAQ, not a dedicated policy.
Publish a shipping or delivery policy and link it from the footer. An FAQ mention is only a partial result.
Google product structured data - C3passhigh
Privacy policy is linked from the footer
Linked from the footer and the page responded.
The policy is linked from the footer.
Shopify: ChatGPT and store policies - C4passhigh
Terms of service are linked from the footer
Linked from the footer and the page responded.
The policy is linked from the footer.
Shopify: ChatGPT and store policies - C5partialmedium
Contact details and Organization schema
Business name: Harbor & Hem. Contact visible: yes. Organization schema complete: no.
Show the business name and an email or contact form. Add Organization JSON-LD with name, url, logo, and contactPoint.
schema.org Organization - C6passmedium
TLS is valid and product pages have no mixed content
TLS validated for fetched HTTPS pages.
No mixed content on the sampled product pages.
Google Search Central: HTTPS
Channel connections
- D1n/ahigh
Shopify Catalog basics are in place
Platform detected: woocommerce
Shopify Catalog checks apply to Shopify stores. Other platforms use a feed or the Agentic plan.
Shopify Catalog requirements - D2faillow
A UCP profile is published
missing
Optional for most small stores. Publish /.well-known/ucp only when you are actually implementing Google's Universal Commerce Protocol. A JSON file does not enroll you.
Google Merchant UCP - D3failmedium
Google Merchant Center signals
No public Merchant Center signal.
If you use Merchant Center, keep the feed current. This check can only see public hints unless you tell us a feed already exists.
Google Merchant Center product data - D4partialmedium
A public product feed or platform API is reachable
Product data source: partial
Expose a public product feed or platform API (Shopify products.json or the WooCommerce Store API). Product pages alone are harder for agents to inventory.
OpenAI commerce get-started guide - D5passlow
Analytics is present so AI referrers can be segmented
Analytics snippet found.
You can segment referrers such as chatgpt.com in your analytics tool.
Google Analytics 4
- Illustrative data for a fictional store. This is not a live scan.