Questions answerable
3 of 6 answerable
Enough answered to establish a reliable score.
Cartiq store report
Agent readiness overview
Store readiness score
Questions answerable
3 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://www.sunbum.com/products/original-spf-70-sunscreen-lotion, 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: /Assistants read the description to decide whether your product matches what the shopper actually asked for, and a thin one loses those matches to competitors.
Description is 42 characters
How to fix
1. Add a description field of at least a couple of sentences — 50 characters is the floor, not the target. 2. Describe material, fit, use case and what makes it different, in plain language. 3. Do not paste keyword lists; assistants read this as prose and keyword stuffing reads as low quality.
"description": "A breathable everyday running shoe made from responsibly sourced merino wool, built for comfort over long distances. Machine washable, available in four colourways."Assistants have nothing authoritative to cite about who you are, so they describe your brand from whatever they can piece together elsewhere.
No Organization JSON-LD
How to fix
1. Add an Organization JSON-LD block to your homepage. 2. Include name and a logo URL at minimum; add contactPoint and sameAs links to your social profiles where you have them. 3. Use an absolute HTTPS URL for the logo.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Brand",
"url": "https://yourdomain.com",
"logo": "https://cdn.example.com/logo.png",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer service",
"email": "support@yourdomain.com"
}
}
</script>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 how to reach you gets nothing, which reads as an untrustworthy store and costs you the sale.
mailto: false, tel: false, contact page: false
How to fix
1. Publish a contact page and link it from your homepage footer. 2. Include a real email address as a mailto: link, and a phone number as a tel: link if you have one. 3. Add contactPoint to your Organization markup so it is machine-readable as well.
<a href="mailto:support@yourdomain.com">support@yourdomain.com</a>
<a href="tel:+15550100">+1 555 0100</a>When your Organization name, og:site_name and page title disagree, assistants cannot confidently decide what your brand is actually called.
Organization.name=none, og:site_name=none
How to fix
1. Pick one canonical spelling of your brand name, including capitalisation and any suffix such as Ltd or Co. 2. Use it identically in Organization.name, og:site_name and the title tag. 3. Check your theme settings and SEO plugin separately — they often store the name in two different places.
<title>Merino Runner — Your Brand</title>
<meta property="og:site_name" content="Your Brand" />
<!-- Organization JSON-LD -->
"name": "Your Brand"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-05 19:07 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 sunbum.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, 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 78 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.
3 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.
Low priority
What do other buyers think?
Assistants routinely rank results by rating, and a product with none is usually ordered below competitors that have one.
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.