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 (5)

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
organization_identityAttributionmediuman Organization entity in the storefront head carrying both a name and a url
meta_descriptionContentmediuma meta description of at least 50 characters
policy_markupAnswersmediumMerchantReturnPolicy and OfferShippingDetails structured data on the storefront page
sameas_links_resolveAttributionlowevery declared sameAs target present and written as a full https address

Product checks

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

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 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

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

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 (6)

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

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 (11)

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

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

Your blog answers no questions

blog_answer_content

Blog articles are where answer content usually lives: long enough to state a real answer, stable enough to be retrieved. This factor reads your blog through an optional, read-only permission you grant separately and can revoke; until you do, we simply report that we could not look, and nothing counts against you. What it measures is the same shape the support-content check measures on pages: a question a shopper would ask, answered directly under it, in text long enough to mean something.

Passes with at least one blog article organised around answering a question

You supply this

Questions buyers ask that no page addresses

buyer_question_coverage

Every kind of store has a handful of questions shoppers ask an engine before buying, and we keep a small, published panel of them per store category: the same five questions our weekly visibility sample asks. This flag names the panel questions none of your pages or articles addresses in a heading. It is a coverage note, deliberately the lightest flag on this checklist: a question you cannot be quoted on is a question somebody else answers, and each one this names is one piece of content away from covered.

Passes with a page or article heading addressing each of the vertical's buyer questions

You supply this

Ads agent (3)

Whether your product pages would survive the checks Google runs before showing a Shopping ad.

Your robots.txt switches off Shopping ads by name

adsbot_access

AdsBot is the crawler Google uses to check the pages your ads point at, and it plays by its own rule: it ignores a blanket 'block everything' line and obeys only a rule that names it. So a store that blocked 'all bots' has not blocked AdsBot and is fine here. This flag fires only when your robots.txt names AdsBot-Google in a Disallow, which is usually a copy-pasted blocklist, and it means Google cannot verify your landing pages: ads get disapproved for reasons that look like a mystery.

Passes with robots.txt must not name AdsBot-Google in a Disallow group

You supply this

A product page disagrees with its own product data

product_page_parity

Price and availability mismatches are the two most common reasons Merchant Center disapproves a product: Google compares the page it fetches against the data it was given, and a disagreement reads as unreliable. We probe a small sample of your product pages and compare each page's own structured data against your product record. A page whose offer states a different price, or no availability at all, is what this flag names. We only ever compare a page against your own data, and a page we could not read or parse is reported as unknown, never as wrong.

Passes with each probed product page's Offer stating the record's price and an availability

You supply this

Google estimates your shipping and returns instead of reading them

ads_policy_markup

The same MerchantReturnPolicy and OfferShippingDetails markup the AEO agent checks has a second, separately documented consumer: Google's shopping surfaces use it to show shipping cost and return windows on ads and free listings. Without it, Google falls back to account-level settings in Merchant Center, or estimates, and an estimate that disagrees with your checkout is a disapproval risk. This is the one place structured data has a documented commercial effect, which is why two agents check it: AEO for answers, this one for ads. Fixing it once satisfies both.

Passes with MerchantReturnPolicy and OfferShippingDetails structured data on the storefront page

You supply this

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