Features

Every check we run. Every fix we ship.

Read straight from the engine, so this list is the list. Nothing here is a roadmap.

On Shopify, we ship the fixes for you. Any other site gets the full report and the to-do list, not just a score.

Site-wide checks (14)

What the free audit reads from your public pages: structured data, crawlability and the head tags an assistant parses before it reaches a product.

Every site-wide check the free audit runs
CheckCategorySeverityPasses with
structured_dataStructured datahighat least one JSON-LD structured-data block agents can parse
product_schemaStructured datahigha Product entity in JSON-LD (this is what shopping agents shop from)
organization_schemaStructured datamediuman Organization, OnlineStore, or LocalBusiness entity that names the brand
breadcrumb_schemaStructured datalowa BreadcrumbList entity so agents understand site hierarchy
sameas_linksStructured datalowa sameAs array on the Organization (social/authority links agents use to confirm identity)
aggregate_ratingStructured datalowan AggregateRating (only meaningful if it reflects real, verifiable reviews)
not_noindexDiscoverabilityhighthe page must NOT be marked noindex (noindex tells agents to ignore you)
canonicalDiscoverabilitylowa <link rel="canonical"> so agents know the primary URL
og_tagsDiscoverabilitymediumog:title, og:description, and og:image (assistants and link unfurlers read these)
meta_descriptionContentmediuma meta description of at least 50 characters
page_titleContentlowa descriptive <title> of at least 10 characters
single_h1Contentlowexactly one <h1> so the primary topic is unambiguous
image_altContentmediumat least 80% of images carry alt text (agents and screen readers rely on it)
lang_attributeContentlowa <html lang="..."> attribute so assistants answer in the right language

Product checks

The per-category checklist, run against every product once the app is installed. Each category registers its own, between 7 and 10 checks.

No schema.org product markup

schema

Schema.org Product and Offer markup is how an agent reads what this is, what it costs and whether it can be bought. Without it your page is prose an agent has to guess at.

Passes with valid schema.org Product plus Offer JSON-LD

Code fix

Missing or invalid GTIN

gtin

GTINs let agents match your product across feeds and marketplaces.

Passes with a valid GTIN

You supply this

Offer missing price and currency

price

Without a price and currency, an agent cannot quote what this costs or confirm it is in stock.

Passes with a price and currency

You supply this

Missing conversational attributes

conversational_attributes

Agents ask the same question of every product on the shelf (what form is it, what is the serving size, what is actually in it). One product answering in its own words is no more useful than none answering at all, so the answers have to sit under the same keys across the catalogue.

Passes with conversational attributes under the canonical keys (form, servingSize, activeIngredients), each with a real value

AI copy fix

Description too short to be useful

description

A short description gives agents little to quote or compare against competitors.

Passes with a description of at least 50 characters

AI copy fix

No product image

images

Agents and shoppers rely on images to confirm what they are buying.

Passes with at least one image

You supply this

Title too short or generic

title

A vague title makes it harder for an agent to match the product to a shopper's request.

Passes with a descriptive title

You supply this

SEO agent (3)

Search gets its own score, kept separate, so a search problem never quietly changes your readiness number.

Image alt text is missing or unhelpful

image_alt_text

Search engines and AI shopping agents cannot see a photograph. Alt text is the only description of the image they can read, so a filename or a repeated line leaves them with nothing.

Passes with distinct, descriptive alt text on every image

You supply this

Meta description is missing or the wrong length

meta_description

The meta description is the snippet under your result. Without one, the search engine picks a sentence from the page for you.

Passes with a meta description between 50 and 160 characters

AI copy fix

SEO title is missing or the wrong length

seo_title

The SEO title is the clickable headline in search results. Past 60 characters it is cut off mid-phrase.

Passes with an SEO title between 15 and 60 characters

AI copy fix

GEO agent (8)

Whether AI can open your store, read it, and tell that what it found is yours.

The description never names the brand

brand_named_in_copy

This is about passage attribution, not the local-search folklore about repeating your name and address everywhere. A generative engine retrieves a passage, not a whole page: if the passage it lifted never names the brand, there is nothing in it to attribute the product back to you, whatever the rest of the page said.

Passes with the vendor name appearing at least once in the product description

AI copy fix

robots.txt blocks a crawler that retrieves pages for AI answers

ai_crawler_access

Retrieval crawlers and training crawlers are different jobs, and one robots.txt line often stops the wrong one. OpenAI states that a site blocking OAI-SearchBot will not be shown in ChatGPT search answers, while GPTBot only gathers training data. Blocking the training set is a fair choice and costs a store nothing here; blocking the retrieval set shuts an engine out of the storefront altogether.

Passes with robots.txt must not disallow OAI-SearchBot, PerplexityBot, Claude-SearchBot, Googlebot, Bingbot

You supply this

The storefront tells search engines to withhold its text

snippet_eligibility

Google requires a page to be indexed and eligible for a snippet before it can be used in its AI features. A noindex or nosnippet directive is the page asking to be left out, and it applies whether or not anyone meant it to: these tags survive theme changes and staging launches, so they are usually left over rather than chosen.

Passes with no noindex, nosnippet, max-snippet:0 or data-nosnippet on the storefront

You supply this

The page's text is assembled by JavaScript rather than served in the HTML

server_rendered_content

Retrieval crawlers do not reliably execute JavaScript. When the copy is written into the page after load, what the crawler fetched is an empty shell with a navigation bar in it, and the product text was never there to read.

Passes with at least 200 characters of text in the HTML itself

You supply this

The storefront declares no organization identity

organization_identity

This is identity hygiene, not a lever: it is how a machine reading the page knows which company it is reading about, and it is what a knowledge panel is built from. We do not claim it produces a mention in any engine, because the two controlled tests that looked for that effect did not find one.

Passes with an Organization entity in the storefront head carrying both a name and a url

You supply this

The organization declares no sameAs targets, or declares malformed ones

sameas_links_resolve

sameAs is the list of other places the same company is: a social profile, a directory entry, a Wikipedia page. It is how two records about one brand get tied together. A half-written entry ties nothing to anything, which is why the shape is checked and the far end is not.

Passes with every declared sameAs target present and written as a full https address

You supply this

A declared profile link no longer exists

sameas_targets_reachable

sameAs is the list of other places the same company is, and link rot is what happens to lists nobody re-reads: a profile gets deleted or renamed, and the storefront keeps pointing at nothing, or at whoever took the handle after you. Only a definitive answer counts here: a profile that refused our request is recorded as unknown, never as gone, because social platforms wall off automated traffic routinely and a refusal is not evidence of anything.

Passes with every declared profile link answering when fetched, none of them gone

You supply this

One brand is written several different ways

vendor_consistency

Anything reading the storefront treats "Acme", "ACME Inc." and "acme inc" as three names until something tells it otherwise, so what one brand did gets split three ways. This is about the store being legible as one company, and we make no claim about what any engine does with it.

Passes with one spelling of each brand name across the storefront's structured data

You supply this

AEO agent (10)

Whether your store answers the questions shoppers ask before they buy.

The description states no measurable fact

quantified_facts

A physical product described without a single measurement, weight, duration or quantity gives an answer engine nothing concrete to repeat. This is scored on answerability alone: the one controlled re-test of adding statistics to retail pages measured no reliable benefit, so the value of a number here is that it can be repeated accurately, not that it moves any outcome. A price does not count, because every product has one. The automated fix may only surface or restructure numbers already in your product data; a figure that is not in the source is refused, never invented.

Passes with at least one number bound to a unit in the description

AI copy fix

The description is one unbroken block of text

answer_shaped_copy

An extractor lifts a block, not an essay: a heading, a list, a table, or a paragraph short enough to stand alone. The evidence is correlational and we say so: Semrush measured section structure (+22.9 percent) and lists (+21.6 percent) as correlates of appearing in AI answers, across other people's pages. What this check measures is only whether your copy has a liftable shape.

Passes with a heading, list, table, or short self-contained paragraphs an extractor can lift

AI copy fix

The description praises without evidence

unsupported_superlatives

A superlative with nothing behind it is a sentence no answer can safely repeat and no shopper can check. This measures copy quality only: it is not a compliance ruling and it makes no claim about how any engine treats the words. A claim standing next to its evidence, like a strength beside its milligram figure or a material beside its certification, passes untouched.

Passes with no superlative left standing without a number or a named certification near it

AI copy fix

The store publishes no substantive returns policy

returns_policy

Returns terms are what a shopping assistant needs to answer "can I send it back" before a purchase. OpenAI's Agentic Commerce Protocol feed spec lists return_policy as a recommended field and requires seller policies when checkout is enabled, and Google consumes MerchantReturnPolicy markup for its shopping surfaces. A two-word placeholder answers none of it, which is why presence alone does not pass this check.

Passes with a returns policy of at least 200 characters of real text

You supply this

The store publishes no substantive shipping policy

shipping_policy

"When does it arrive" is asked before almost every purchase, and the shipping policy is the store-level text that can answer it. OpenAI's Agentic Commerce Protocol requires seller policies when checkout is enabled, and Google consumes shipping markup for its shopping surfaces. A policy too short to state a delivery window answers nothing, which is why presence alone does not pass.

Passes with a shipping policy of at least 200 characters of real text

You supply this

The returns policy never states how long a buyer has

stated_returns_window

"Can I send it back, and for how long" is the question returns terms exist to answer, and the window is the half a length check cannot see: a policy long enough to pass the substance floor can still name no deadline. Stated as a figure, the window is a fact an assistant can repeat exactly; left unstated, there is nothing exact to pass on.

Passes with a returns timeframe stated as a figure, such as 30 days, in the returns policy

You supply this

The shipping policy never states when orders arrive

stated_delivery_window

"When does it arrive" is asked before almost every purchase, and a shipping policy can clear the substance floor on carrier prose alone without ever stating a timeframe. A window stated as a figure, per region if they differ, is the one sentence that answers the question; without it, an assistant reading the policy has nothing to quote.

Passes with a delivery timeframe stated as a figure, such as 3-5 business days, in the shipping policy

You supply this

The returns and shipping terms are not published as structured data

policy_markup

Google's shopping surfaces consume MerchantReturnPolicy and OfferShippingDetails for the return and shipping details shown beside product listings, which makes this one of the few places structured data has a documented effect. It is one of two routes, not the only one: Merchant Center account settings can supply the same information, so absent markup is a gap in one route rather than a disqualification. What the markup adds is that the terms are readable at the page itself, beside the offer they govern.

Passes with MerchantReturnPolicy and OfferShippingDetails structured data on the storefront page

You supply this

No page on the store answers support questions

support_content

A support page is where a question meets its answer in one liftable block. The evidence for this factor is correlational and we say so: Semrush measured question-and-answer format as a positive correlate of appearing in AI answers (+25.5 percent), across other people's pages, and a correlation is not a promise about yours. What the check measures is only whether such a page exists and has substance.

Passes with at least one page of support content with 200+ characters of real text

You supply this

Several products share one near-identical description

duplicate_descriptions

When several products carry the same paragraph, nothing ties an answer to one product rather than another, and whatever an engine lifts describes all of them equally, which is to say none of them. This check reads the product descriptions visible in the storefront page's structured data, so it sees a sample of the catalogue rather than all of it.

Passes with each visible product description distinct from the others

No automated fix yet

We sell the fix, not the finding.

Other tools hand you a score and a list of problems. Where a lane exists, we ship the change itself, ready to review or publish. Where one does not, the card above says so instead of offering you a button.

Read-only, public pages only, about 2 minutes. One free audit per store, so we ask for an email and keep it with your result.

Already convinced? Install Agentible on your store