Questions answerable
2 of 6 answerable
Enough answered to establish a reliable score.
Cartiq store report
Agent readiness overview
Store readiness score
Questions answerable
2 of 6 answerable
Enough answered to establish a reliable score.
Top issue
Shipping details are not in your structured data
−4 pts at risk
A color-coded view of every scoring area.
Product checks were read from https://kodiakcakes.com/products/buttermilk-power-cakes-flapjack-waffle-mix, found in your product sitemap.
All findings, grouped by priority.
Shoppers increasingly ask assistants what delivery will cost before they click, and a store that cannot answer is filtered out at that moment.
No shipping policy in structured data, at offer or organization level
How to fix
0. Replace every YOUR_ value before publishing — the snippet parses as-is, but the values are not yours. 1. Publish it once for the whole store, not per product. Add hasShippingService to your Organization block — on Shopify that is one snippet in theme.liquid, and every product page inherits it. 2. State the rate and the regions you ship to. YOUR_SHIPPING_RATE is a number as a string — "0" for free shipping. YOUR_COUNTRY is a two-letter code such as GB or DE. 3. Include delivery time where you can — assistants use it to answer "will it arrive by Friday". Handling time is how long before you dispatch; transit time is how long the carrier takes. 4. Only add shippingDetails to an individual offer where that product genuinely differs — oversized items, or a region you do not ship it to. Either placement earns these points.
"@type": "Organization",
"name": "YOUR_STORE_NAME",
"hasShippingService": {
"@type": "ShippingService",
"shippingConditions": {
"@type": "ShippingConditions",
"shippingRate": { "@type": "MonetaryAmount", "value": "YOUR_SHIPPING_RATE", "currency": "USD" },
"shippingDestination": { "@type": "DefinedRegion", "addressCountry": "YOUR_COUNTRY" },
"transitTime": { "@type": "QuantitativeValue", "minValue": "YOUR_TRANSIT_DAYS_MIN", "maxValue": "YOUR_TRANSIT_DAYS_MAX", "unitCode": "DAY" },
"handlingTime": { "@type": "QuantitativeValue", "minValue": "YOUR_HANDLING_DAYS_MIN", "maxValue": "YOUR_HANDLING_DAYS_MAX", "unitCode": "DAY" }
}
}Return terms are one of the last things a shopper checks before buying, and an assistant that cannot quote yours will recommend a competitor whose terms it can.
No return policy in structured data, at offer, product or organization level
How to fix
0. Replace every YOUR_ value before publishing — the snippet parses as-is, but the values are not yours. 1. Publish it once for the whole store, not per product. Add hasMerchantReturnPolicy to your Organization block — on Shopify that is one snippet in theme.liquid, and every product page inherits it. Adding it to each offer also earns these points, but it is more work and drifts out of date. 2. Set YOUR_RETURN_DAYS to your real window and YOUR_RETURN_FEES to one of https://schema.org/FreeReturn, https://schema.org/ReturnShippingFees or https://schema.org/RestockingFees. If you do not accept returns, use returnPolicyCategory https://schema.org/MerchantReturnNotPermitted and drop the days field. 3. Make it match your published policy page exactly — a mismatch is worse than no markup, because an assistant will quote the markup. 4. Add it to an individual offer only where that product genuinely differs — final sale items, or a shorter window.
"@type": "Organization",
"name": "YOUR_STORE_NAME",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "YOUR_COUNTRY",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": "YOUR_RETURN_DAYS",
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "YOUR_RETURN_FEES"
}Agents that can complete a purchase without handing the shopper back to your checkout convert far better, and right now yours cannot be bought from that way.
No ACP, UCP, MPP or x402 markers found
How to fix
1. Review the emerging agentic commerce protocols — ACP, UCP, MPP and x402 — and pick the one your platform supports. 2. Advertise support with a meta tag or response header so agents can detect it without guessing. 3. This is early; being among the first stores to support it is the point, and most of your competitors have not.
<meta name="agentic-commerce" content="acp-version=1" />Every agent you block is an entire storefront that cannot see you at all, and agents you have not explicitly welcomed may crawl you less often than competitors who have.
12 of 12 agents allowed, 0 explicitly welcomed
How to fix
1. Remove any Disallow rule that applies to the shopping agents listed in your report. 2. Add an explicit Allow group for each agent you want to reach your catalogue — being explicit is worth more than staying silent. 3. Keep blocking genuinely unwanted crawlers; this is about the agents that bring shoppers, not about opening your site to everything. 4. Re-check after any WAF or CDN change, since those often inject their own rules.
User-agent: GPTBot
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-User
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: Applebot-Extended
Allow: /
User-agent: Amazonbot
Allow: /
User-agent: meta-externalagent
Allow: /
User-agent: Bytespider
Allow: /Shoppers who ask an assistant for your brand by name will not be matched to your products.
How to fix
1. Add a brand field to your Product JSON-LD. 2. Use the object form with @type Brand rather than a bare string — it is unambiguous and better supported. 3. Use the same spelling everywhere, including your Organization markup and og:site_name.
"brand": {
"@type": "Brand",
"name": "Your Brand"
}Assistants routinely rank results by rating, and a product with none is usually ordered below competitors that have one.
How to fix
0. Replace every YOUR_ value before publishing — the snippet parses as-is, but the values are not yours. 1. Add aggregateRating with your real average score and review count. 2. Add individual review entries where you have them. 3. Only publish ratings you actually collected — fabricated review markup is a policy violation with every major platform. 4. Most review apps (Shopify: Judge.me, Okendo, Loox; WooCommerce: built-in reviews) emit this automatically once enabled.
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "YOUR_RATING_VALUE",
"reviewCount": "YOUR_REVIEW_COUNT"
}A shopper asking an assistant for a specific size or colour cannot be told you stock it.
No variants declared — one offer, and no hasVariant, variesBy or isVariantOf
How to fix
0. Replace every YOUR_ value before publishing — the snippet parses as-is, but the values are not yours. 1. Expose each variant as its own offer inside an offers array, or use hasVariant with ProductGroup. 2. Give each variant its own sku, price and availability. 3. If your product genuinely has a single variant, this check will not pass and that is expected — it costs 1 point and is documented on our methodology page.
"offers": [
{ "@type": "Offer", "sku": "YOUR_SKU_SIZE_1", "price": "YOUR_PRICE", "priceCurrency": "USD", "availability": "https://schema.org/InStock" },
{ "@type": "Offer", "sku": "YOUR_SKU_SIZE_2", "price": "YOUR_PRICE", "priceCurrency": "USD", "availability": "https://schema.org/OutOfStock" }
]Report at a glance
This score reflects how much useful store information Cartiq could read from public pages. The fastest path to a stronger recommendation is to fix the highest-priority gaps below, not to chase a mystery number.
Evidence captured 2026-10-21 18:43 UTC · scan version 10 · public pages only.
Download a polished image of this exact scan for X, LinkedIn, or Facebook.
A 1200 × 675 PNG using this scan’s current results.
This report is generated from the exact kodiakcakes.com scan shown on this page — including every stored finding, recommendation, category result, and scan date.
Complete category breakdown, findings, and store-specific fixes.
Free, no account, about twenty seconds.
The fixes below include customer reviews and product variants, which this total leaves out. We cannot tell from outside whether those apply to your product, so we do not promise points we are not certain you can win. Fixing them still raises your score.
Your score is 81 out of 100. Points from your platform are real — an agent genuinely reads those stores more easily — but you did not have to do anything to earn them, and you cannot lose them without moving. The fixes below are the ones that are yours.
2 of 6 answerable
This is whether the data needed to answer exists on your product page in a machine-readable form. We do not test ChatGPT, Perplexity or any other assistant, so it does not say how one of them would actually answer.
These are the shopper questions your store could not answer. Priority comes from the existing Cartiq issue severity.
High priority
What does shipping cost?
Shoppers increasingly ask assistants what delivery will cost before they click, and a store that cannot answer is filtered out at that moment.
Can I return it?
Return terms are one of the last things a shopper checks before buying, and an assistant that cannot quote yours will recommend a competitor whose terms it can.
Fix an issue on your store, then run a new scan to compare the two real scan results. Rescans are limited to once per store per hour.
Latest scan compared with the previous scan for the same store. No result is estimated or re-scored here.
No previous finding disappeared in the latest scan.
7 findings remain in the latest scan.
Score change: 0 points (81 → 81). No new finding appeared in the latest scan.