Sample report. Generated by a real audit run; the brand, domain and social profiles have been replaced with example.com placeholders.
Moshulu · GEO Auditor

example.com

AI Visibility Audit — how ready this website is to be found, understood and recommended by AI assistants and AI shopping agents.

Website
https://example.com
Checked on
28 July 2026
Platform
shopify
Pages read
15
Run time
9.0 s
Auditor
Moshulu GEO 1.1.0
81OUT OF 100GRADE B

Grade BStrong

AI assistants can work with your site, but a few gaps still leave them guessing about parts of your business. The weakest area is Answer readiness at 55%. Start with: Remove the repeated brand essay from product templates.

The score combines six areas, each worth a fixed share. An area we could not test on this site is removed and its share is spread across the rest, so a site is never punished for something it does not have.

Section 1

The six areas

Each card shows the share of that area you have earned, and how many individual checks were good, needed attention, or failed. "n/a" means nothing in that area applied to your site.

Agent access83%

Can AI assistants and their crawlers actually reach and read your pages?

6 Good3 Attention0 Problem20% of score
Brand clarity86%

Can a machine state clearly who you are, what you sell and who you sell it to?

7 Good2 Attention0 Problem18% of score
Structured data91%

Are your key facts written in the fixed format machines read reliably?

6 Good3 Attention0 Problem20% of score
Answer readiness55%

Is your writing shaped so an AI can lift a clean answer out of it?

3 Good5 Attention1 Problem16% of score
Product data80%

Is your product information complete enough for an AI shopping agent to use?

5 Good0 Attention4 Problem14% of score
Technical health91%

Is the site itself clean — no template errors, duplicate pages or dead links?

6 Good3 Attention0 Problem12% of score
Section 2

What to fix first

Ranked by how much each one should move the score: how important the check is, how badly it scored, and how much it affects whether an AI can use your site. Work down the list from number one.

  1. Remove the repeated brand essay from product templates

    High impactEffort: Small · under an hourAnswer readiness

    Delete the shared block from the product and collection templates and keep it on one page (About Us) only. Replace it on product pages with at most a 2-line trust strip linking to /pages/about-us. It is currently inside a product-card loop, so it also repeats several times on a single collection page — move it out of the loop. Then re-check that each product page has 300+ words of text unique to that product.

    Why it matters: When the same brand essay is stamped onto every product page, a retrieval system sees near-identical documents and cannot tell which page answers a specific product question.

    From the check: Product pages are not diluted by repeated boilerplate

  2. Rewrite the first paragraph of key pages to answer first

    High impactEffort: Medium · about half a dayAnswer readiness

    On every product, collection and pillar page, make the first paragraph a single self-contained sentence of the form "<Product/category> is a <what it is> for <who> that <what it does>." Put it before any price widget, share bar or variant JSON so a text extractor hits it first. Move vision/mission prose to the About page.

    Why it matters: Answer engines quote the first lines of a page, so an opening that defines what the page is about is far more likely to be lifted into an AI answer than a slogan.

    From the check: Pages open with a direct answer, not marketing fluff

  3. Put product specifications in a real <table>

    High impactEffort: Medium · about half a dayAnswer readiness

    Add a specifications table to the product template with a header row and one attribute per row (capacity, power, dimensions, weight, material, certification, warranty). Use real <table>/<th>/<td> markup or a <dl> — not divs styled to look like a table, and never a screenshot of a spec sheet, which is invisible to every text-only AI crawler.

    Why it matters: Machines read a spec table reliably and a paragraph of prose unreliably, so tabular specs are what let an agent match your product to a buyer requirement.

    From the check: Specifications presented as tables or definition lists

  4. Add substantive server-rendered copy to thin templates

    Medium impactEffort: Medium · about half a dayAgent access

    The collection page (https://example.com/it-it/collections/eweighing) ships only 132 words of text in its raw HTML. Aim for at least 250 words of genuine, page-specific copy — specification detail, use cases, and what the product or category is for.

    Why it matters: No major AI crawler executes JavaScript — OpenAI, Anthropic, Meta and ByteDance crawlers all fetch raw HTML only, so anything rendered client-side is completely invisible to them.

    From the check: Real content is in the raw HTML (no JavaScript required)

  5. Rewrite the homepage title

    High impactEffort: Small · under an hourBrand clarity

    Target 30-60 characters, lead with what you sell, close with the brand. Missing today: the product category, correct length (currently 92). Example: "Diamond & Carat — Example Group".

    Why it matters: The homepage title is the single line most likely to be quoted back when an AI system explains who you are; if it does not say what you sell, the model has to invent a description.

    From the check: Homepage title names the brand and the category

  6. Populate barcodes for products that have one, and declare the ones that do not

    Medium impactEffort: Medium · about half a dayProduct data

    For resold or branded goods, enter the manufacturer EAN/UPC in the variant Barcode field and emit it as gtin13/gtin12 in the Product JSON-LD. For own-manufactured or bespoke items where no GTIN exists, leave the field empty, set identifier_exists=false in any Merchant Center feed, and make sure brand + mpn are present instead — that pairing is the accepted substitute.

    Why it matters: GTIN is the strongest signal Google and other shopping surfaces use to cluster your listing with the same product from other sellers; without it your item competes as an unknown.

    From the check: Products carry a barcode / GTIN

  7. Fill the missing Product and Offer fields in the product template

    High impactEffort: Medium · about half a dayStructured data

    Map the data you already hold into the schema: sku from the variant record, gtin13 from the barcode field (and omit the property rather than emitting an empty string when there is no barcode), brand.name from vendor, offers.url as the canonical product URL, offers.itemCondition as https://schema.org/NewCondition, offers.priceValidUntil as a date ~30 days out, and offers.hasMerchantReturnPolicy / offers.shippingDetails from your published policies. Those last two are what a shopping agent needs to decide whether to recommend you over a competitor.

    Why it matters: Shopping agents match, dedupe and compare products by identifier and by shipping/returns terms; a Product node with only a price cannot be compared against a competitor.

    From the check: Product schema field completeness (identifiers, offer detail, trust signals)

  8. Rewrite the homepage meta description

    High impactEffort: Small · under an hourBrand clarity

    Write 70-160 characters as one complete, authored sentence naming the company and what it sells. Example: "Example Group manufactures diamond, carat, cvd for professional buyers, with delivery across <markets>."

    Why it matters: The meta description is a free, self-authored summary of the business that extractors read first; an auto-generated body-text dump or a fragment starting mid-sentence tells a model nothing and reads as low quality.

    From the check: Meta description is an authored, complete sentence

  9. Add question-shaped subheadings to commercial and blog pages

    High impactEffort: Medium · about half a dayAnswer readiness

    On each product, collection and article, add 3-5 H2/H3 headings written the way a buyer would ask them ("What size vacuum pump does a 50-cow parlour need?"), and put a self-contained 40-80 word answer immediately under each one. Use real questions from sales emails and site search logs, not invented ones.

    Why it matters: AI assistants match a user question to a heading and lift the block underneath it, so question-shaped H2/H3s are the single easiest structure to get quoted.

    From the check: Headings phrased as real user questions

  10. Add BlogPosting JSON-LD to the article template

    Medium impactEffort: Small · under an hourStructured data

    Emit BlogPosting with headline (match the H1), image, datePublished and dateModified in ISO 8601, author as a Person or Organization object with a name (not a bare string like "admin"), and publisher pointing at your Organization node. Keep dateModified honest — bulk-identical or future-dated values across every post destroy the freshness signal rather than helping it.

    Why it matters: Editorial content is what assistants quote for informational questions, and author plus publication date are the signals they use to judge whether a claim is current and attributable.

    From the check: Blog posts carry Article/BlogPosting schema with author and dates

There are 11 further fixes. They are all listed with their evidence in the findings below.

Section 3

Every check, area by area

Sections containing a failure are open already. Good Attention Problem Not tested

Agent access83%6 Good3 Attention0 Problem

Can AI assistants and their crawlers actually reach and read your pages?

Attention

Real content is in the raw HTML (no JavaScript required)

Server-rendered text is thin on the collection page (132 words), which gives an AI assistant little to quote.

Why this matters: No major AI crawler executes JavaScript — OpenAI, Anthropic, Meta and ByteDance crawlers all fetch raw HTML only, so anything rendered client-side is completely invisible to them.

What we found on your site

  • homepage: 434 words of server-rendered text, text/HTML ratio 4.5% of 434428 bytes
  • product page: 2634 words of server-rendered text, text/HTML ratio 8.5% of 409798 bytes
  • collection page: 132 words of server-rendered text, text/HTML ratio 4.8% of 356689 bytes
  • Thinnest sampled page: https://example.com/it-it/collections/eweighing with 132 words in raw HTML

Fix: Add substantive server-rendered copy to thin templates

The collection page (https://example.com/it-it/collections/eweighing) ships only 132 words of text in its raw HTML. Aim for at least 250 words of genuine, page-specific copy — specification detail, use cases, and what the product or category is for.

Medium impact Effort: Medium · about half a day
Attention

Key pages return 200 with no redirect chain and no noindex

0 of 15 sampled pages did not return 200, 15 redirected and 0 are set to noindex.

Why this matters: A redirect hop or a stray noindex on your product and category pages quietly removes them from the corpus AI assistants draw answers from.

What we found on your site

  • https://example.com/ redirects to https://example.com/it-it
  • https://example.com/products/herd-management-system redirects to https://example.com/it-it/products/herd-management-system
  • https://example.com/products/herringbone-parlor-swingover redirects to https://example.com/it-it/products/herringbone-parlor-swingover
  • 15/15 sampled pages returned 200; 15 redirected; 0 carry noindex

Fix: Fix non-200 and redirecting URLs

Point internal links and sitemap entries at the final URL so crawlers do not spend fetches on redirects.

Medium impact Effort: Small · under an hour
Attention

/.well-known/ucp is present and valid for agentic commerce

UCP profile is complete at version 2026-04-08 (8 capabilities, 2 payment handlers) but its 1 endpoint(s) sit on a different host from the audited domain.

Why this matters: UCP is the discovery document Google, Shopify and their partners use to let an AI agent search a catalog and complete a purchase; without it an agent can read about you but cannot transact.

What we found on your site

  • GET https://example.com/.well-known/ucp -> HTTP 200, valid JSON, protocol version 2026-04-08
  • Supported versions: 2026-04-08, 2026-01-23
  • 8 capabilities: dev.ucp.shopping.checkout, dev.ucp.shopping.fulfillment, dev.ucp.shopping.discount, dev.ucp.shopping.cart, dev.ucp.shopping.order, dev.ucp.shopping.c…
  • Endpoints: mcp -> https://example-group.myshopify.com/api/ucp/mcp
  • Payment handlers: com.google.pay, dev.shopify.card
  • Endpoint host differs from the audited domain: https://example-group.myshopify.com/api/ucp/mcp vs example.com

Fix: Complete the UCP merchant profile

The declared endpoint https://example-group.myshopify.com/api/ucp/mcp is on a different host from example.com; make sure your agent-facing docs quote the same host as the discovery document.

Medium impact Effort: Medium · about half a day
Good

AI retrieval crawlers can fetch the site

All 12 AI retrieval and citation crawlers are allowed to fetch the homepage, products, collections and blog.

Why this matters: The bots that build answer engines (OAI-SearchBot, ChatGPT-User, Claude-User, PerplexityBot, Bingbot, Applebot, DuckAssistBot) must be able to fetch your pages — if robots.txt blocks them you cannot be cited, no matter how good the content is.

What we found on your site

  • 12/12 retrieval agents can fetch all 5 sampled path types: /, /it-it/products/herd-management-system, /it-it/collections/eweighing, /it-it/blogs/news, /it-it/pages/about-us
  • robots.txt: HTTP 200, 8 user-agent groups parsed
Good

agents.md is a real brand brief, not platform boilerplate

/agents.md is a genuine brand brief (4788 bytes) covering 5 of 5 brand signals and 65 real catalog terms.

Why this matters: A shopping agent reads /agents.md to decide whether to recommend you at all; default checkout boilerplate tells it how to buy but never what you sell or when you are the right answer.

What we found on your site

  • GET https://example.com/agents.md -> HTTP 200, 4788 bytes
  • Names 65 real catalog terms: diamond, carat, cvd, pear, oval, heart, round, milking
  • Brand-brief signals present: who we are, what we sell, when to recommend, geography/shipping, differentiators (5/5)
  • Platform-default section headings found: for personal shopping assistants; commerce protocol (ucp); supported ucp versions; read-only browsing
  • 2 link(s) point at platform domains (shopify.com / shop.app / ucp.dev) vs 8 at example.com
Good

robots.txt is present, well-formed and not blocking the catalog

robots.txt parses cleanly: 8 groups, 3 sitemap declaration(s), no rule blocks the catalog.

Why this matters: robots.txt is the one discovery file every AI crawler actually reads; a truncated or over-broad file silently removes whole sections of the site from every answer engine.

What we found on your site

  • robots.txt HTTP 200, 2585 bytes, 8 groups, 72 rules, 3 Sitemap directive(s)
Good

Sitemap is declared and reachable with a sane URL count

Sitemap is declared in robots.txt and reachable, listing 1397 URLs across 5 file(s).

Why this matters: AI crawlers waste roughly a third of their fetches on dead URLs; a declared, accurate sitemap is the cheapest way to point them straight at the pages you want quoted.

What we found on your site

  • robots.txt declares 1 distinct sitemap URL(s): https://example.com/sitemap.xml
  • https://example.com/sitemap.xml -> HTTP 200 (index)
  • 5 child sitemap(s), 1397 URLs total: products 938, collections 107, blogs 266, pages 85, other 1
Good

llms.txt exists and actually describes the business

/llms.txt is present (2611 bytes) and describes the business, naming 59 real catalog terms.

Why this matters: Adoption of llms.txt by AI vendors is still limited — Google ignores it and most files are never requested — so treat it as cheap insurance rather than a ranking lever, but a stub file is worse than none because it wastes the one fetch an agent makes.

What we found on your site

  • GET https://example.com/llms.txt -> HTTP 200, 2611 bytes
  • H1 present: "> manufactures and supplies IGI-certified lab-grown (CVD) diamonds an…"
  • Mentions 59 terms from the real catalog: diamond, cvd, pear, oval, heart, round, milking, emerald
  • Links to only 0 own content page(s) (0 same-host links in total, mostly policies)
  • Names the company
Good

Training-crawler posture is deliberate

No training crawlers are blocked — all 10 training tokens (GPTBot, ClaudeBot, CCBot, Google-Extended…) are allowed by default.

Why this matters: Blocking training crawlers like GPTBot or CCBot costs you nothing in citations — this is reported so the decision is visible and intentional, not scored as a defect.

What we found on your site

  • None of the 10 training crawler tokens are named in robots.txt — all allowed by default
  • Note: Google-Extended and Applebot-Extended are training-control tokens only; blocking them does not remove you from AI Overviews or Apple search results
Brand clarity86%7 Good2 Attention0 Problem

Can a machine state clearly who you are, what you sell and who you sell it to?

Attention

Homepage title names the brand and the category

Homepage title scores 2/4 on brand, category, length and uniqueness (92 chars).

Why this matters: The homepage title is the single line most likely to be quoted back when an AI system explains who you are; if it does not say what you sell, the model has to invent a description.

What we found on your site

  • <title> = "Negozio online EXAMPLE per mungitrici, pezzi di ricambio, bilance elettroniche – Example Group" (92 chars)
  • Contains the brand "Example Group"
  • Names none of the site's 150 catalog terms (e.g. diamond, carat, cvd, pear, oval)
  • Length 92 is outside the 30-60 character target
  • Title is unique among sampled pages

Fix: Rewrite the homepage title

Target 30-60 characters, lead with what you sell, close with the brand. Missing today: the product category, correct length (currently 92). Example: "Diamond & Carat — Example Group".

High impact Effort: Small · under an hour
Attention

Meta description is an authored, complete sentence

Meta description scores 3/4 (203 chars).

Why this matters: The meta description is a free, self-authored summary of the business that extractors read first; an auto-generated body-text dump or a fragment starting mid-sentence tells a model nothing and reads as low quality.

What we found on your site

  • meta description (203 chars) = "Ruolo del Gruppo come produttore di diamanti coltivati in laboratorio certificati IGI, diamanti CVD e automazione avanzata del settore lattiero-casea…"
  • Opens as a complete sentence
  • Length 203 is outside the 70-160 character target
  • Names 2 real catalog term(s): cvd, gruppo
  • Reads as authored rather than a body-text dump

Fix: Rewrite the homepage meta description

Write 70-160 characters as one complete, authored sentence naming the company and what it sells. Example: "Example Group manufactures diamond, carat, cvd for professional buyers, with delivery across <markets>."

High impact Effort: Small · under an hour
Good

Organization schema identifies the company

Organization schema is present and complete: all 3 core fields plus 4 of 6 detail fields.

Why this matters: An Organization block is the only machine-readable statement of who you are; without it an AI system has to infer your identity from page copy and may attach your products to the wrong brand entity.

What we found on your site

  • organization node found on homepage: name="Example Group"
  • Core fields present: name, url, logo (3/3)
  • Detail fields present: description, address, contactPoint, sameAs (4/6)
  • url = https://example.com/
  • logo = https://example.com/cdn/shop/files/logo_1.jpg?v=1617899881&width=600
  • Schema types across 15 sampled pages: listitem x36, imageobject x31, question x30, answer x30, product x16, offer x16
Good

An about page states founding year, location and what the company makes

The about page states the founding year and location and names 3 of the company's real product areas.

Why this matters: The about page is where a model looks to verify a company exists and is real; concrete facts — founded in, based in, what we manufacture — are what turn a brand name into a resolvable entity.

What we found on your site

  • About page: https://example.com/it-it/pages/about-us, 782 words
  • Founding year stated: "Dal 1987"
  • Location stated: "India"
  • Describes what it makes, naming 3 catalog terms: management, weighing, gruppo
  • No contact detail on the page
  • Opening line: "LA NOSTRA VISIONE "Evolversi come fornitori di tecnologia, qualità e servizi di prim'ordine nei nostri settori." Siamo consapevoli che la qu"
Good

The brand name is spelled the same way everywhere

All 4 brand-name sources agree on a single spelling: "Example Group".

Why this matters: Answer engines merge signals by name; if your title suffix, og:site_name and Organization.name disagree, the evidence for your brand is split across two or three entities instead of one.

What we found on your site

  • Organization.name: "Example Group"
  • og:site_name: "Example Group"
  • title brand segment (on 14/15 pages): "Example Group"
  • product vendor: "Example Group"
  • 4 sources resolve to 1 distinct brand spelling(s)
  • Title brand segment varies across sampled pages: "Example Group" x14, "Connettiti con Example Group" x1
Good

The brand's stated focus covers what it actually sells

The site sells across 3 major product area(s) and its own homepage/agent copy names 3 of them.

Why this matters: When a site trades in several unrelated areas and its homepage names none of them, an AI system has no basis to decide which questions you are the right answer for.

What we found on your site

  • 107 product groupings cluster into 30 groups, of which 3 are major areas (>= 6 groupings each)
  • Major areas: milking/furnace (54), diamond/turnkey (18), cow/comfort (6)
  • Covered by the homepage title/description/H1-H2 or agent files: milking/furnace, diamond/turnkey, cow/comfort (3/3)
  • Homepage title: "Negozio online EXAMPLE per mungitrici, pezzi di ricambio, bilance elettroniche –…"
Good

Exactly one H1, and it says what the company does

The homepage has exactly one H1 and it states what the company does: "Manufacturer of Lab-Grown Diamonds, Dairy Farm Automation & Jewellery…".

Why this matters: The H1 is the document's subject line for any extractor; twenty H1s or a bare "Welcome" gives an AI system no anchor for what the page — and by extension the brand — is about.

What we found on your site

  • Homepage H1 count: 1 (1 with text, 0 empty)
  • First H1: "Manufacturer of Lab-Grown Diamonds, Dairy Farm Automation & Jewellery Machinery"
  • H1 names 8 real catalog term(s): diamond, lab, grown, automation, farm
  • Heading tree: h1:1 h2:11 h3:6 h4:0 h5:0 h6:0
Good

sameAs links corroborate the brand off-site

5 sameAs profile links corroborate the brand entity.

Why this matters: sameAs links are how a model connects your site to your LinkedIn, YouTube, Wikidata and marketplace profiles — corroboration from independent sources is what turns a name into a recognized entity.

What we found on your site

  • sameAs profiles declared: https://facebook.com/ExampleGroup, https://instagram.com/examplegroup, https://twitter.com/exampleindia, https://www.youtube.com/channel/UC5lBRdBpXcWV3vKvkTX5BIQ, https://www.linkedin.com…
  • 6 social profile link(s) exist in the page HTML: https://facebook.com/ExampleGroup, https://twitter.com/exampleindia, https://instagram.com/examplegroup, https://linkedin.com/company/example-group
  • 15 pages inspected
Good

WebSite schema (and site search action) is declared

WebSite schema is present with name, url and a SearchAction agents can use to search the catalog.

Why this matters: A WebSite node names the site as an object in its own right and, with SearchAction, tells an agent how to query your catalog directly instead of guessing URLs.

What we found on your site

  • WebSite node found: name="Example Group", url=https://example.com/
  • SearchAction target: https://example.com/search?q={search_term_string}
  • The declared search URL matches a Disallow rule in robots.txt — agents are told to use an endpoint they are told not to fetch
Structured data91%6 Good3 Attention0 Problem

Are your key facts written in the fixed format machines read reliably?

Attention

Product schema field completeness (identifiers, offer detail, trust signals)

Product schema is 79% complete across 5 sampled products; 5 of 16 tracked fields are absent on every one.

Why this matters: Shopping agents match, dedupe and compare products by identifier and by shipping/returns terms; a Product node with only a price cannot be compared against a competitor.

What we found on your site

  • Product nodes scored: 5 (one per sampled product page).
  • REQUIRED (Google merchant listing) — name 5/5, image 5/5, offers.price 5/5, offers.priceCurrency 5/5, offers.availability 5/5.
  • RECOMMENDED — description 4/5, brand 5/5, sku 5/5, gtin*/mpn 0/5, offers.url 5/5.
  • TRUST / agent-commerce — offers.priceValidUntil 0/5, offers.seller 5/5, offers.itemCondition 5/5, offers.shippingDetails 0/5, offers.hasMerchantReturnPolicy 0/5, aggregateRating/review 0/5.
  • Weighted completeness: 79% (required 50% × 100%, recommended 30% × 76%, trust 20% × 33%).
  • Absent on every sampled product: gtin*/mpn, offers.priceValidUntil, offers.shippingDetails, offers.hasMerchantReturnPolicy, aggregateRating/review.

Fix: Fill the missing Product and Offer fields in the product template

Map the data you already hold into the schema: sku from the variant record, gtin13 from the barcode field (and omit the property rather than emitting an empty string when there is no barcode), brand.name from vendor, offers.url as the canonical product URL, offers.itemCondition as https://schema.org/NewCondition, offers.priceValidUntil as a date ~30 days out, and offers.hasMerchantReturnPolicy / offers.shippingDetails from your published policies. Those last two are what a shopping agent needs to decide whether to recommend you over a competitor.

High impact Effort: Medium · about half a day
Attention

Blog posts carry Article/BlogPosting schema with author and dates

66.7% (2/3) of sampled blog posts carry Article/BlogPosting schema, with 100% average coverage of headline/author/dates/image/publisher.

Why this matters: Editorial content is what assistants quote for informational questions, and author plus publication date are the signals they use to judge whether a claim is current and attributable.

What we found on your site

  • Blog/article pages sampled: 3.
  • Pages with an Article/BlogPosting node: 66.7% (2/3).
  • Field coverage within those nodes: headline 2/2, author 2/2, datePublished 2/2, dateModified 2/2, image 2/2, publisher 2/2.
  • Example: https://example.com/it-it/blogs/news/… → author="Example Group" datePublished=2025-02-07T14:20:20+0530.
  • No article markup on: https://example.com/it-it/blogs/news.

Fix: Add BlogPosting JSON-LD to the article template

Emit BlogPosting with headline (match the H1), image, datePublished and dateModified in ISO 8601, author as a Person or Organization object with a name (not a bare string like "admin"), and publisher pointing at your Organization node. Keep dateModified honest — bulk-identical or future-dated values across every post destroy the freshness signal rather than helping it.

Medium impact Effort: Small · under an hour
Attention

Category pages declare CollectionPage or ItemList

100.0% (3/3) of sampled category pages declare CollectionPage/ItemList; 66.7% (2/3) enumerate their products.

Why this matters: Category markup tells an assistant that a page is a list of options rather than a single item, which is what it needs to answer "what do they sell in X".

What we found on your site

  • Collection pages sampled: 3.
  • Pages with CollectionPage/ItemList/OfferCatalog: 100.0% (3/3).
  • Pages whose list actually enumerates members (non-empty itemListElement): 66.7% (2/3).
  • Example: https://example.com/it-it/collections/ew… lists 1 itemListElement entries.

Fix: Add CollectionPage + ItemList to the category template

Emit a CollectionPage node with name and description matching the visible category copy, plus an ItemList whose itemListElement is an ordered array of ListItem entries (position + url, or position + a nested Product with name and offers). Include the products on the current page only — do not fabricate the full catalog.

Medium impact Effort: Small · under an hour
Good

JSON-LD is present on sampled pages and every block parses

100.0% (15/15) of sampled pages carry at least one valid JSON-LD block (36 blocks total).

Why this matters: A JSON-LD block with a syntax error is silently discarded by every consumer, so the page ends up with no machine-readable meaning at all.

What we found on your site

  • Pages sampled: 15 (home + products + collections + blogs + pages).
  • Pages carrying at least one valid JSON-LD block: 100.0% (15/15).
  • Total <script type="application/ld+json"> blocks found: 36; unparseable: 0.
  • @type tally across all sampled pages: listitem×36, imageobject×31, question×30, answer×30, product×16, offer×16, brand×16, organization×15.
Good

Sampled product pages carry Product schema with a usable Offer

100.0% (5/5) of sampled product pages have Product schema; 100.0% (5/5) have a complete price/currency/availability Offer.

Why this matters: Product + Offer markup is what makes a page eligible for Google and Bing shopping surfaces, which are the surfaces AI shopping modes read from.

What we found on your site

  • Product pages sampled: 5 (spread across the sitemap, not the first N).
  • Pages with a Product node: 100.0% (5/5).
  • Pages whose Product carries name + offers.price + priceCurrency + availability: 100.0% (5/5).
  • Example offer on https://example.com/it-it/products/herd-…: price=11999.0 currency=INR availability=https://schema.org/InStock.
Good

BreadcrumbList markup on product and collection pages

100.0% (8/8) of sampled product/collection pages carry BreadcrumbList markup.

Why this matters: Breadcrumbs are the only machine-readable statement of where a page sits in the catalog hierarchy, which is how an assistant works out that a product belongs to a category.

What we found on your site

  • Product + collection pages sampled: 8.
  • Pages with a BreadcrumbList node: 100.0% (8/8).
  • Pages whose breadcrumb has 2+ named items: 100.0% (8/8).
  • Example trail found: Home › Tag di attività Example (pedometri) per mucche da latte, bufali e capre.
Good

Pages with visible FAQ content also declare FAQPage markup

0 of 5 sampled pages that show FAQ content have no FAQPage markup.

Why this matters: Question-and-answer blocks are the most directly quotable content on a site, and marking them up is the cheapest way to hand an assistant a pre-formed answer.

What we found on your site

  • Pages sampled: 15; pages with visible Q&A content: 5.
  • Of those, pages carrying FAQPage/QAPage markup: 100.0% (5/5).
  • Context: Google removed FAQ rich results from Search on 2026-05-07, so this is an extraction/answer-readiness opportunity, not a rich-result one — capped at warn.
Good

No duplicate schema entities with conflicting values on one page

No conflicting duplicate schema entities across 15 sampled pages.

Why this matters: When a theme and an SEO app both emit a Product block with different prices, the consumer has no way to tell which is true and will usually drop both.

What we found on your site

  • Pages inspected: 15; pages carrying more than one node of the same key @type: 0.
  • Conflicting duplicates (same @type, different name/price/availability/url): 0.
  • Redundant duplicates (same @type, identical values): 0.
  • Product duplicates are only counted on product pages; repeated Product nodes on category and home pages are expected and were ignored.
Good

Schema image URLs are absolute and resolve; url/@id point at the page itself

All 49 schema image URLs across 82 nodes are absolute and the 3 probed URLs resolved, and 10 url/@id values match their page.

Why this matters: A relative or dead image URL and a url property pointing at the wrong page are the two ways a technically valid schema block still gets thrown away by the consumer.

What we found on your site

  • Schema nodes inspected: 82 across 15 sampled pages.
  • Image URLs found: 49 (unique absolute: 18; relative/protocol-less: 0).
  • Self-referencing url/@id checked on 10 node(s) whose @type matches their page; mismatched against the page canonical: 0.
  • Reachability probe: 3/3 sampled image URLs returned 2xx/3xx, e.g. https://example.com/cdn/shop/files/logo_1.jpg?v=1617899….
Answer readiness55%3 Good5 Attention1 Problem

Is your writing shaped so an AI can lift a clean answer out of it?

Problem

Product pages are not diluted by repeated boilerplate

A typical sampled page is 82.6% duplicated boilerplate across the 5-page sample, driven by a 60-word block repeated on every page.

Why this matters: When the same brand essay is stamped onto every product page, a retrieval system sees near-identical documents and cannot tell which page answers a specific product question.

What we found on your site

  • Sample: 5 product pages; a passage counts as boilerplate when the same 8-word sequence appears on >= 4 of them.
  • Duplicated share per page: median 82.6%, worst 87.6% on /products/platform-scale-td-50.
  • Repeated passage (60 words): "nome e-mail numero di telefono messaggio inviare gruppo example chi siamo la nostra visione evolversi come fornitori di tecnologia qualità e servizi di prim'ordine nei nostri settori siamo consapevoli…"
  • That same block appears 2x within a single page: /products/herd-management-system — it is being rendered per product card in a loop.
  • Unique (non-boilerplate) words per page: min 166, median 245, max 1542.

Fix: Remove the repeated brand essay from product templates

Delete the shared block from the product and collection templates and keep it on one page (About Us) only. Replace it on product pages with at most a 2-line trust strip linking to /pages/about-us. It is currently inside a product-card loop, so it also repeats several times on a single collection page — move it out of the loop. Then re-check that each product page has 300+ words of text unique to that product.

High impact Effort: Small · under an hour
Attention

Pages open with a direct answer, not marketing fluff

6 of 15 sampled pages (40%) open with a sentence that directly defines the subject.

Why this matters: Answer engines quote the first lines of a page, so an opening that defines what the page is about is far more likely to be lifted into an AI answer than a slogan.

What we found on your site

  • PASS / — "Example designs and manufactures advanced machinery for the jewellery and precious metals industry. From melting and casting to re…"
  • PASS /products/herd-management-system — "Tag di attività Example (pedometri) per mucche da latte, bufali e capre is a sistema di gestione della mandria example supplied by …"
  • FAIL /collections/eweighing — no definitional phrase in the first 2 sentences: "Bilancia da tavolo Example WaterProof (struttura completamente SS, resistente alle intemperie con grado di protezione IP…"
  • FAIL /collections/volcano — no definitional phrase in the first 2 sentences: "Filtro 0 prodotti Ordinare Ordinare In primo piano Più rilevanti La migliore vendita In ordine alfabetico, AZ In ordine…"
  • FAIL /collections/sample-engagement-ring — no definitional phrase in the first 2 sentences: "Anello di fidanzamento con alone nascosto solitario"
  • Sample: 15 pages (6 answer-first, 9 not); opening read from the first <p> on 11 and from leading main text on 4.
  • Document languages seen: it=15. Definitional phrasing is matched per language (en, it, es, fr, de, pt, nl).

Fix: Rewrite the first paragraph of key pages to answer first

On every product, collection and pillar page, make the first paragraph a single self-contained sentence of the form "<Product/category> is a <what it is> for <who> that <what it does>." Put it before any price widget, share bar or variant JSON so a text extractor hits it first. Move vision/mission prose to the About page.

High impact Effort: Medium · about half a day
Attention

Specifications presented as tables or definition lists

2 of 5 sampled product pages (40%) present specifications in an extractable table, definition list or key:value list.

Why this matters: Machines read a spec table reliably and a paragraph of prose unreliably, so tabular specs are what let an agent match your product to a buyer requirement.

What we found on your site

  • /products/herd-management-system — no <table>, <dl> or key:value spec list in main content
  • /products/herringbone-parlor-swingover — no <table>, <dl> or key:value spec list in main content
  • /products/platform-scale-td-50 — no <table>, <dl> or key:value spec list in main content
  • Sample: 5 product pages; spec blocks found as table=2, dl=0, key:value list=0.

Fix: Put product specifications in a real <table>

Add a specifications table to the product template with a header row and one attribute per row (capacity, power, dimensions, weight, material, certification, warranty). Use real <table>/<th>/<td> markup or a <dl> — not divs styled to look like a table, and never a screenshot of a spec sheet, which is invisible to every text-only AI crawler.

High impact Effort: Medium · about half a day
Attention

Pages carry enough text to be worth citing

4 of 15 sampled pages (26.7%) have under 300 words of main text.

Why this matters: A page with a couple of lines of text gives a model nothing to ground an answer on, so it gets skipped in favour of a competitor page that explains the same product properly.

What we found on your site

  • 41 words — /collections/volcano (collection)
  • 132 words — /collections/eweighing (collection)
  • 151 words — /collections/sample-engagement-ring (collection)
  • 186 words — /pages/industrial-precision-balances-1 (page)
  • Sample: 15 pages; 4 under 300 words, 1 under 100 words.
  • Word counts across the sample: min 41, median 782, max 2634.

Fix: Bring thin pages up to a usable depth

For each page under 300 words, add: a one-sentence definition, what it is used for, 4-8 specification rows, who it suits, and 3-4 FAQ answers. Where a page cannot justify that (near-duplicate variants, empty categories), merge it into its parent or remove it rather than leaving a stub in the index.

Medium impact Effort: Large · a few days
Attention

Images carry descriptive alt text

75.7% of images (202/267) across 15 sampled pages have descriptive alt text.

Why this matters: No major AI crawler looks at your images, so alt text is the only description of a product photo a model ever sees.

What we found on your site

  • Good example: alt="Spazzola curva rotante lunga Example"
  • Empty alt="" on https://example.com/cdn/shop/t/40/assets/call_icon.svg?v=22183057… (/)
  • Filename used as alt text: alt="files/gold_5c93363d-f2ce-4652-ba86-7fc5509caccb.webp" on /
  • Filename used as alt text: alt="files/cow_5a5129ba-267c-4e27-8a99-e5a19af479af.webp" on /
  • Filename used as alt text: alt="files/Untitled_desiggyugyjn.webp" on /
  • Sample: 267 images across 15 pages — 202 descriptive, 26 empty alt="", 36 missing the attribute, 3 using a filename.
  • 15 of 15 sampled pages have at least one image with no usable alt text.

Fix: Write real alt text on product and content images

Set alt text on every content image to a plain description of what is shown, including the product name and the detail the photo is meant to convey ("Example 240cc milking claw, side view showing the milk outlet"). Leave alt="" only on purely decorative images, and never paste the filename. Fix the header logo repeating the same alt on every page.

Medium impact Effort: Medium · about half a day
Attention

Headings phrased as real user questions

6 of 15 sampled pages (40%) carry at least one question-shaped H2/H3; 32 found in total.

Why this matters: AI assistants match a user question to a heading and lift the block underneath it, so question-shaped H2/H3s are the single easiest structure to get quoted.

What we found on your site

  • /products/herd-management-system — H3: "What is Tag di attività Example (pedometri) per mucche da latte, bufali e capre?"
  • /products/herd-management-system — H3: "How do I get a price for Tag di attività Example (pedometri) per mucche da latte, bufali e…"
  • /products/herd-management-system — H3: "How quickly can Tag di attività Example (pedometri) per mucche da latte, bufali e capre be…"
  • /products/herd-management-system — H3: "Do you ship Tag di attività Example (pedometri) per mucche da latte, bufali e capre intern…"
  • Sample: 15 pages, 32 question-shaped H2/H3 headings on 6 of them.

Fix: Add question-shaped subheadings to commercial and blog pages

On each product, collection and article, add 3-5 H2/H3 headings written the way a buyer would ask them ("What size vacuum pump does a 50-cow parlour need?"), and put a self-contained 40-80 word answer immediately under each one. Use real questions from sales emails and site search logs, not invented ones.

High impact Effort: Medium · about half a day
Good

Depth of writing on commercial pages

Median main-text length on commercial pages is 1294 words across a sample of 8.

Why this matters: Depth is what makes a page the best available source for a buying question; shallow catalogue pages get summarized away rather than cited.

What we found on your site

  • Product pages (n=5): median 1327 words.
  • Collection pages (n=3): median 132 words.
  • Shallowest: 41 words — /collections/volcano
  • Deepest: 2634 words — /products/herd-management-system
  • Sample: 8 commercial pages; median 1294 words of main text (counted after nav/header/footer are stripped).
Good

FAQ blocks on product and category pages

5 of 8 sampled commercial pages (62.5%) contain a visible FAQ or Q&A block.

Why this matters: A Q&A block on a buying page gives an AI shopping assistant the pre-purchase answers (fit, sizing, delivery, compatibility) it needs before it will recommend you.

What we found on your site

  • /products/herd-management-system — Q "What is Tag di attività Example (pedometri) per mucche da latte, bufal…" -> A "Tag di attività Example (pedometri) per mucche da latte, bufali e capr…"
  • /products/herringbone-parlor-swingover — Q "What is Salotto a spina di pesce SwingOver?" -> A "Salotto a spina di pesce SwingOver is a product supplied by Example Gr…"
  • /products/platform-scale-td-50 — Q "What is Bilancia a piattaforma (TD - 50)?" -> A "Bilancia a piattaforma (TD - 50) is a product supplied by Example Grou…"
  • Sample: 8 commercial pages (products + collections); 5 carry a usable Q&A block.
  • FAQPage schema present on 5 of 8 — informational only: Google removed FAQ rich results in May 2026, the value here is the visible Q&A text itself.
Good

Published/modified dates on editorial content

3 of 3 sampled articles (100%) expose a machine-readable date; newest is 3 days old.

Why this matters: Assistants prefer sources they can date, and an undated or stale blog reads as abandoned when a model is choosing between two similar pages.

What we found on your site

  • /blogs/news — <time datetime>: published=2026-07-25T09:45:20Z, modified=none
  • /blogs/news/eternity-band-a-guide-to-symbolism-and-design — JSON-LD: published=2025-02-07T14:20:20+0530, modified=2025-02-18T15:37:48+0530
  • /blogs/news/importance-of-mastication-saliva-and-fodder-in-… — JSON-LD: published=2025-10-14T16:56:41+0530, modified=2025-10-14T16:56:44+0530
  • Newest dated article: 2026-07-25 (3 days old) — /blogs/news
  • Sample: 3 blog/article pages; 3 carry a machine-readable date.
Product data80%5 Good0 Attention4 Problem

Is your product information complete enough for an AI shopping agent to use?

Problem

Product descriptions are substantial enough to ground an answer

11.1% (104/937) of sampled products have under 200 characters of description, and 9.4% (88/937) have none at all.

Why this matters: An assistant can only recommend what it can describe; a product with an empty or one-line description gives it nothing to say and no reason to prefer you.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250).
  • Empty descriptions: 9.4% (88/937).
  • Under 200 characters of visible text (including empty): 11.1% (104/937).
  • Description length percentiles (chars, HTML stripped): p10 139 / p50 286 / p90 1916.
  • Thin or empty, e.g.: example-milking-claw-240-cc, load-cells-rsl-410-750-kg, load-cells-rsl-601-20-kg, tataki-zome-flower-pounding-w….
  • The 200-character floor is roughly two full sentences — the minimum needed to state what a product is, who it is for and one differentiator.

Fix: Write real descriptions for the thin and empty products

Start with the highest-traffic products. Each description needs a one-sentence definition of what the item is, who it is for, the two or three specifications a buyer compares on, and one differentiator. Put the specification data in a real HTML table rather than an image — tabular data in a table is directly extractable, the same data in a JPEG is invisible.

High impact Effort: Large · a few days
Problem

Prices are real numbers and the currency is declared

5.5% (52/937) of sampled products have a zero or invalid price (49 of them still purchasable); currency is declared by 2 source(s), none of them the product feed.

Why this matters: A zero-priced item that is still marked purchasable makes an agent offer your product for free, and a feed with no currency is read as dollars by default.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250); 1086 priced variants parsed.
  • Products with a zero, negative or unparseable variant price: 5.5% (52/937) (unparseable 0, negative 0).
  • Of those, still flagged purchasable (variant.available=true): 49.
  • Price distribution: min 16 / p25 16705 / median 56560 / p75 175000 / max 181402320 — max is 3207× the median.
  • Currency is discoverable from: /meta.json (INR); JSON-LD (INR) — but NOT from /products.json itself, so an agent reading only the list feed has to guess.
  • Zero/invalid price, e.g.: Example Induction Heating System, EXAMPLE Air Series Induction Heati…, EXAMPLE HEAT D5 Series Industrial …, Example Multi-Colour Coin Pad Prin….
  • A 3207× span between the median and the most expensive item will distort any "cheapest" or budget-filtered agent query.

Fix: Fix zero-priced purchasable items and make the currency explicit

Set a real price on the 49 product(s) that are priced at 0 and still marked available, or set them to "quote only" / unavailable so no agent offers them for free. For currency, make sure every Product JSON-LD Offer carries priceCurrency as an ISO-4217 code and that it matches the store currency in /meta.json — the raw product feed carries no currency at all, so the markup is the only place an agent can read it reliably.

High impact Effort: Medium · about half a day
Problem

Products carry a barcode / GTIN

0.0% (0/5) of sampled products have a barcode/GTIN.

Why this matters: GTIN is the strongest signal Google and other shopping surfaces use to cluster your listing with the same product from other sellers; without it your item competes as an unknown.

What we found on your site

  • Sample: 5 products from the per-handle /products/{handle}.json sample.
  • Products with at least one variant barcode: 0.0% (0/5).
  • Variant-level: 0.0% (0/5) of variants carry a barcode.
  • The /products.json list feed omits the `barcode` key entirely, so agents reading only the list feed see no GTIN even where one exists.
  • Caveat: made-to-order, industrial and one-of-a-kind goods often have no GTIN assigned; the correct fix there is to declare identifier_exists=false rather than to invent one.

Fix: Populate barcodes for products that have one, and declare the ones that do not

For resold or branded goods, enter the manufacturer EAN/UPC in the variant Barcode field and emit it as gtin13/gtin12 in the Product JSON-LD. For own-manufactured or bespoke items where no GTIN exists, leave the field empty, set identifier_exists=false in any Merchant Center feed, and make sure brand + mpn are present instead — that pairing is the accepted substitute.

Medium impact Effort: Medium · about half a day
Problem

Products have images, and those images have alt text

10.5% (98/937) of sampled products have no image and only 16.8% (157/937) have two or more; alt text present on 60.0% (6/10) of sampled images.

Why this matters: A product with no image is skipped by visual shopping surfaces entirely, and alt text is the only description of an image a non-vision agent can read.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250).
  • Products with no image at all: 10.5% (98/937).
  • Products with 2 or more images: 16.8% (157/937).
  • Image alt text: 60.0% (6/10) of images across 3 products in the per-handle sample carry non-empty alt.
  • Example alt text found: "Example activity tags (pedometers) for Dairy Cows, Buffaloes & Goats - D…".
  • No image, e.g.: load-cells-rsl-410-750-kg, load-cells-rsl-601-20-kg, 0-73-carat-cvd-heart-diamond, 1-01-carat-cvd-heart-diamond-3.

Fix: Give every product at least two images with descriptive alt text

Upload imagery for the 98 product(s) that have none — they cannot appear in any visual shopping result. Add a second angle or in-use shot to the rest. Write alt text that describes the product and its use ("Example 240 cc milking claw for automated milking machines"), not the filename; alt is the only image description a text-only agent can read.

Medium impact Effort: Large · a few days
Good

Public product JSON endpoints are reachable and complete

Public product feed returned 937 products (100.0% of the 937 the store says it publishes).

Why this matters: A machine-readable product feed is how a shopping agent enumerates what you sell without scraping HTML, and it is the only source that carries structured price, stock and variant data.

What we found on your site

  • Platform: shopify. Feed probe: https://example.com/products.json?limit=250&page=1 → HTTP 200.
  • Products returned: 937 unique across 4 paginated request(s) of 250.
  • Per-handle /products/{handle}.json: 5/5 sampled products returned parseable JSON.
  • /meta.json declares published_products_count=937; feed coverage 100.0% (937/937).
Good

Products carry a SKU

100.0% (937/937) of sampled products have a SKU on their first variant.

Why this matters: A SKU is the key an agent uses to dedupe your product against the same item elsewhere and to hold a stable reference between search, cart and order.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250).
  • Non-empty SKU on the first variant: 100.0% (937/937).
  • Non-empty SKU on every variant: 100.0% (937/937).
Good

Products are categorized (product_type / taxonomy)

91.9% (861/937) of sampled products have a product_type; 24.5% (230/937) carry any tag.

Why this matters: Category is how an agent narrows a request like "milking machines under X" to candidates; untyped products fall out of every filtered query.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250).
  • Non-empty product_type: 91.9% (861/937) — 76 products sit in the untyped bucket.
  • Top categories in use: Lab Grown Diamond (480), Jewelry (77), Cow Comfort (34), Milking Machine Parts (22), Milking Machine (17).
  • Tag coverage (secondary retrieval signal): 24.5% (230/937), median 0 tag(s) per product.
  • Untyped, e.g.: metal-stair-with-cm-40-3-stair-an…, carrom-board, wire-rope.
Good

Vendor / brand is present and spelled consistently

100.0% (937/937) of sampled products name a vendor.

Why this matters: Brand is a primary facet in agent product indexes, and two spellings of the same brand split your catalog into two smaller, weaker brands.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250).
  • Non-empty vendor/brand: 100.0% (937/937).
  • Distinct vendor values: 1 — top: Example Group (937).
  • No near-duplicate vendor spellings were detected.
Good

Variant options are named and valued meaningfully

0.0% (0/71) of multi-variant products expose placeholder option names or values instead of a real choice.

Why this matters: Option names and values are how an agent answers "do you have it in 40 mm" — placeholder options like "Default Title" carry no size, colour or capacity signal at all.

What we found on your site

  • Sample: 937 products from /products.json (4 pages of 250); 1138 variants total (mean 1.21, max 22).
  • Single-variant products: 92.4% (866/937).
  • Products whose only option name is a platform placeholder ("Title"/"Default Title"): 91.2% (855/937).
  • Multi-variant products carrying placeholder option names or values: 0.0% (0/71) of the 71 multi-variant products.
  • A mostly single-variant catalog is normal and is not penalised here — only placeholder options on products that genuinely have a choice are.
Technical health91%6 Good3 Attention0 Problem

Is the site itself clean — no template errors, duplicate pages or dead links?

Attention

hreflang set is valid and free of nonsense locales

9 hreflang entries across 8 distinct locales and 3 languages; 0 malformed and 2 implausible pair(s) found (sample: 15 pages).

Why this matters: Implausible or duplicated locale pairs make a model see several near-identical documents for the same product and weaken every one of them.

What we found on your site

  • Sample: 15 of 15 pages carry hreflang; the reference page / declares 9 entries covering 8 distinct locales and 3 distinct languages.
  • Declared: x-default, en, it, es, it-IT, es-IT, en-IT, en-US, it-US
  • Implausible language/region pairs (verify intent): es-IT (es targeted at IT), it-US (it targeted at US)
  • x-default entries: 1 (exactly 1 is correct). Self-referencing pages: 15/15. Identical hreflang set across pages: 15/15.
  • 8 locale URLs collapse to only 3 language(s) — the extra market splits add duplicate URLs without adding content.

Fix: Prune the hreflang set to markets you actually serve

Keep one entry per language-market you genuinely localise (different currency, different copy, or different catalogue) plus exactly one x-default. Remove pairs where the language is not spoken in the target region — currently es-IT (es targeted at IT), it-US (it targeted at US). Every entry must be a valid BCP-47 tag, every page must include a self-referencing entry, and every listed URL must return 200 with the matching hreflang set pointing back.

Medium impact Effort: Medium · about half a day
Attention

Readable text is not buried in markup

Median text-to-HTML ratio is 6% across 15 sampled pages (median document 367 KB).

Why this matters: When a document is mostly markup and inline scripts, the extraction step that feeds an AI answer has to guess what the page is about, and it often guesses wrong.

What we found on your site

  • Sample: 15 pages — median text-to-HTML ratio 6%, median document 367 KB.
  • Worst page: / — 425 KB of HTML yielding 19 KB of readable text (4.5%).
  • Inline <script> accounts for a median 23.7% of document bytes across the sample.

Fix: Reduce markup and inline script around the content

Move inline scripts and JSON blobs into external files (keep JSON-LD, which is small and useful), remove duplicated markup rendered by the theme, and stop injecting full product data into every card on listing pages. Aim for at least 10% of the document being readable text so an extractor can find the content without heuristics.

Low impact Effort: Medium · about half a day
Attention

Canonical URLs resolve without redirect chains

6 of 6 probed URLs do not resolve directly (6 single-hop redirect, 0 with a chain of 2 or more).

Why this matters: AI crawlers waste a large share of their budget on redirects, and each extra hop is another chance for the fetch to be abandoned before your content is read.

What we found on your site

  • 1 hop(s): / -> https://example.com/it-it (final status 200)
  • 1 hop(s): /products/herringbone-parlor-swingover -> https://example.com/it-it/products/herringbone-parlor-swingover (final status 200)
  • 1 hop(s): /products/0-74-carat-cvd-heart-diamond -> https://example.com/it-it/products/0-74-carat-cvd-heart-diamond (final status 200)
  • 1 hop(s): /collections/volcano -> https://example.com/it-it/collections/volcano (final status 200)
  • Sample: 6 URLs probed with manual redirect following — 0 direct, 6 single-hop, 0 with a chain of 2+.

Fix: Collapse redirect chains to a single hop

Point every internal link, sitemap entry and canonical at the final destination URL so crawlers land in one request. Where a redirect must exist, make it a single 301 straight to the target — never http -> https -> www -> locale. Re-check that sitemap URLs return 200 directly.

Low impact Effort: Small · under an hour
Good

No accidental noindex on pages that should be found

No noindex directives found across 15 sampled pages.

Why this matters: A noindex directive removes the page from the search indexes that AI assistants retrieve from, so the content cannot be cited no matter how good it is.

What we found on your site

  • Sample: 15 pages checked for a robots meta tag (0 declare one; the rest inherit the default index,follow) and 5 live responses checked for an X-Robots-Tag header.
  • No noindex found on any sampled page via either mechanism.
Good

No template or render errors in the served HTML

No unambiguous template errors found across 15 sampled pages.

Why this matters: An error string sitting in the page text is ingested verbatim by AI crawlers even when CSS hides it from shoppers, and it reads as a broken, untrustworthy source.

What we found on your site

  • Sample: 15 pages scanned in visible text (scripts and styles removed first); 0 pages carried at least one error string.
Good

Internal links resolve

0 of 20 sampled internal links returned a 4xx/5xx status.

Why this matters: Assistants abandon a source that leads them to dead pages, and dead links burn the limited crawl budget AI bots spend on your site.

What we found on your site

  • Sample: 20 distinct internal links (from 192 found across 15 pages), tested with HEAD and a GET fallback; 0 returned 4xx/5xx.
  • All 20 tested links returned a 2xx/3xx status.
Good

Canonical tags are present, absolute and self-consistent

15 of 15 sampled pages (100%) carry a single absolute, self-referential canonical tag.

Why this matters: A missing or conflicting canonical splits a page across several URLs, so any authority it earns is divided instead of pointing at one citable address.

What we found on your site

  • Example: / -> canonical "https://example.com/it-it"
  • Sample: 15 pages — 15 have a canonical, 15 are absolute and self-referential, 0 issue(s) found.
Good

HTTPS everywhere with no insecure sub-resources

Site is served over HTTPS; 0 insecure http:// sub-resource reference(s) found across 15 sampled pages and the http->https redirect works.

Why this matters: Insecure resources and a broken http-to-https redirect make crawlers see two versions of the site and browsers flag it, which undermines the trust signals models lean on.

What we found on your site

  • Origin is https: https://example.com
  • http -> https redirect: works — http://example.com -> 301 -> https://example.com/ 302 -> https://example.com/it-it 200 (2 redirect hop(s))
  • Sample: 15 pages scanned for http:// sub-resources; 0 occurrence(s) across 0 distinct URL(s).
Good

Server responds quickly and pages are not oversized

Median TTFB 190 ms and median HTML weight 361 KB across 5 live fetches.

Why this matters: AI crawlers fetch with short timeouts and no JavaScript, so a slow first byte or a multi-megabyte document means your page is simply not read.

What we found on your site

  • Median time to first byte 190 ms, median full document 196 ms (n=5 live fetches, one run each).
  • Slowest sampled URL: /it-it/products/platform-scale-td-50 at 381 ms TTFB / 385 ms total.
  • Median HTML weight 361 KB; heaviest 425 KB — /it-it.
  • Across all 15 pages the auditor fetched, median HTML size is 367 KB.
  • Caveat: this is a single-run field measurement from one location with a cold client cache, not a lab benchmark — treat it as an order of magnitude, not a score.
Section 4

The facts we collected

Everything above is derived from these numbers. Nothing on this page is an opinion — each figure was read directly from your website on the date shown.

Who is allowed to read the site

robots.txt returned HTTP 200 and lists 1 sitemap(s).

AI crawler access, read from robots.txt
CrawlerWhat it doesAccess
Answer and citation crawlers — blocking one of these costs you mentions
ApplebotFeeds Siri and Apple IntelligenceAllowed
BingbotFeeds Bing and Microsoft CopilotAllowed
ChatGPT-UserFetches a page when a ChatGPT user asks about itAllowed
Claude-SearchBotBuilds the index Claude search quotes fromAllowed
Claude-UserFetches a page when a Claude user asks about itAllowed
DuckAssistBotFeeds DuckDuckGo AI answersAllowed
GooglebotFeeds Google Search, AI Overviews and AI ModeAllowed
MistralAI-UserFetches a page for a live Le Chat answerAllowed
OAI-SearchBotBuilds the index ChatGPT search quotes fromAllowed
Perplexity-UserFetches a page for a live Perplexity answerAllowed
PerplexityBotIndexes pages Perplexity links toAllowed
YouBotFeeds You.com answersAllowed
Training crawlers — blocking these is a normal business choice
AmazonbotFeeds Amazon products and may train Amazon modelsAllowed
anthropic-aiOlder Anthropic training tokenAllowed
Applebot-ExtendedTraining opt-out only — never crawls by itselfAllowed
BytespiderByteDance training crawlerAllowed
CCBotCommon Crawl, a public dataset many models train onAllowed
ClaudeBotCollects text to train Anthropic modelsAllowed
cohere-aiCohere training tokenAllowed
Google-ExtendedTraining opt-out only — does not affect Google SearchAllowed
GPTBotCollects text to train OpenAI modelsAllowed
meta-externalagentCollects text to train Meta modelsAllowed

"Not mentioned" means robots.txt says nothing about that crawler, so it is allowed by default. That is normal and not a fault. Three fetchers (ChatGPT-User, Perplexity-User and Meta-ExternalFetcher) state in their own documentation that they may ignore robots.txt, because a person asked for that page directly.

Machine-facing files

Files written for machines
FileStatusDetailWhat it is for
/robots.txtPresentHTTP 200Tells automated visitors which pages they may read.
/llms.txtPresent2.5 KBA short brief for AI assistants. Cheap to add, but very few AI services read it today.
/agents.mdPresent4.7 KBOperating instructions for AI shopping agents. Shopify stores get one automatically.
/.well-known/ucpPresentvalid JSONLets an AI agent search your catalog and complete a purchase.

Pages published in the sitemap

Total addresses found: 1397.

Sitemap addresses by type of page
Type of pageAddresses
products500
blogs266
collections107
pages85
other1

Machine-readable fact blocks found

Structured-data types across the sampled pages
Fact typeBlocks
ListItem36
ImageObject31
Question30
Answer30
Product16
Offer16
Brand16
Organization15
PostalAddress15
ContactPoint15
WebSite15
SearchAction15
EntryPoint15
BreadcrumbList14
FAQPage5
CollectionPage3
ItemList3
BlogPosting2
WebPage2
Person2
AggregateRating1

How much of the site we looked at

Sample sizes
Page typePages
Product pages5
Category pages3
Blog posts3
Other pages3
Total pages fetched15

Samples are spread evenly across the sitemap rather than taken from the top, so they represent the whole site. Any percentage in this report that comes from a sample is a rate measured on that number of pages, not a complete count.