ScanifyLtd
Shopify storefront audit

Can AI read your store?

ChatGPT, Claude and Perplexity reach a store through crawlers your robots.txt can turn away, and answer from structured product data your store may not publish. 5 of our 38 checks measure exactly that. The other 33 are the search, conversion and technical ground underneath.

What is actually different

An assistant does not browse your shop. It reads it.

Three things happen before it has anything to say about you, and each one is a place a Shopify store quietly stops being readable.

It reads robots.txt first. A rule disallowing those crawlers from your product URLs is your own store telling them not to fetch it.

Then your product data. A product page whose data endpoint returns nothing is a product with nothing in it to quote.

Then the Offer in your markup. Product markup that declares no Offer describes a thing rather than something purchasable.

None of the three shows up in your admin. They are properties of what your store serves, not of what it displays.

See all 5 AI-search checks And the 33 underneath them.
The rest of it

Your storefront is mostly written by things you cannot see.

Your theme decides your titles, your headings and your alt text — on every page it renders, not one.

Apps inject markup after the page has loaded, so the source you can view is not the page anyone reads.

A change made once in a template is live across a catalogue, correct or not.

Have us look at your store One-off. No retainer.
How it works

Four steps, and you are in none of them.

01

We crawl a sample

Your homepage, up to 10 product pages and up to 5 collection pages, taken in order from your own sitemap — at most 16 pages.

02

We render every page

In a real browser, because a Shopify theme writes half the page after the HTML arrives.

03

We run 38 checks

Each a fixed rule over what was measured. Severity comes from the catalog, not from a model.

04

You get a PDF

With the check id, what it matched, and the URLs on your store where it was true.

What a finding looks like

Every line is one you can go and check.

No summary scores, no traffic-light dashboard. A finding is a sentence with a number, the set that number came out of, and where to look — which is what makes it something you can hand to a developer without translating it first.

high

Missing H1

{n} of {total} pages measured have no H1 heading.

Check
ONPAGE.H1.MISSING
Matched
<h1> on the rendered page
Pages
the URLs it was true of, from your store

The placeholders are ours, not a redaction — your numbers go there, and the denominator is part of the sentence rather than something we remembered to add.

The whole document

Read one before you ask for one.

What arrives is one PDF. A cover, then every area including the ones that came back clean, each finding with its severity, the check id behind it, the set it was counted over and the URLs it was true of — then a last section the report itself labels as general guidance rather than measurement.

It is a demonstration, not a typical result. The store in it is invented — orchard-lamp.example is a reserved address that cannot exist — and every figure in it was constructed to fill the page. The document says as much on its own first page, because a file gets forwarded away from the page that introduced it.

A real audit reports what the checks find on the store in front of them, and a shorter report is a better store rather than a worse audit. The findings in it are the same kind as these, carry the same evidence, and cost the same thing left alone: a page an assistant cannot parse stays unparsed for as long as nobody changes it.

Download the sample report — PDF, 39 KB
The catalog

38 checks, across 7 areas.

Each check is a fixed rule with a permanent identifier, and how serious it is comes from that catalog rather than from anything that reads your store. 17 of the 38 are conversion, ecommerce mechanics and AI search — they start with AI search below, because it is the block least like traditional SEO and the one least likely to have been looked at already.

5 checks

Being findable by an AI assistant

An assistant reads your catalogue through a machine interface: your robots rules first, then your product data, then the Offer inside your markup. We check all three — if it cannot read yours, there is nothing there to recommend.

8 checks

What a shopper sees while deciding

Price on the product and collection page, product images, reviews, returns and shipping wording, and a way to reach a person. A returns policy nobody can find is one nobody is reassured by.

3 checks

The machine-readable layer

Product, BreadcrumbList and Organization markup. Without it a page is prose to a machine: nothing tells it this is a product, at this price, with this rating.

4 checks

Ecommerce mechanics

Thin and duplicated descriptions, out-of-stock products left indexable, filters generating duplicate URLs of one collection — the state in which your own pages compete with each other.

8 checks

Technical foundations

robots.txt, sitemaps, HTTPS, canonical tags, stray noindex. A page carrying noindex is a page asking to be left out, and it asks quietly.

8 checks

What is on the page

Titles, meta descriptions, H1s and image alt text — including two of your products competing under one title, which makes them each other's problem.

2 checks

Internal linking

Product pages nothing links to, and pages very few internal links reach. A product only the sitemap knows about is one a shopper has to already be looking for.

One-off

A report, not a retainer

The audit and what to change, once. Nothing to cancel.

Who it is for

A live Shopify storefront. That is the whole requirement.

No app to install, no staff account, no theme access, no change made to your store. We read the same public pages a shopper does, chosen from your own sitemap.

Any catalogue size. With 10 products we read all of them. With two thousand we read 10 products and 5 collections, and every count in the report names the set it came from.

Built on a theme somebody else wrote. A Shopify theme renders every product page from one template, so what a sample finds on the pages we read points at the template rendering the rest.

Not on Shopify? Then this is not for you, and we would rather say so here. The checks read Shopify's sitemap layout, its product endpoints and its theme behaviour.

That is my shop — go and read it Two fields. A person answers.
With and without

The difference is knowing which of the 38 is true of you.

Without an audit

  • You are guessing which of the 38 apply to you.
  • A missing heading looks the same as a page nobody checked.
  • "Some pages have long titles." Which pages?
  • You fix in whatever order occurs to you.

With one

  • A measured answer for each of the 38.
  • We loaded the page, so absent means absent.
  • "2 of 9 crawled pages" — and here are the URLs.
  • You fix in severity order, from a list a developer can act on.
Ask us to run it A person reads every request.
How it is measured

Measured, not guessed at.

A finding means we looked.

Each check separates what it measured from what it could not reach, so what you read is an observation.

Every count says what it was counted out of.

Not "2 pages have long titles", which reads as your whole shop, but 2 of the pages we crawled — with the number said.

We load your pages in a real browser.

Shopify themes add headings, alt text and structured data after the HTML arrives. We read what a visitor sees.

Severity is fixed, not generated.

A person sets it in the catalog, in a commit. A language model writes the wording, not the findings.

If we write to you first, the audit is already done.

A message from us cannot exist before the audit it quotes: every sentence in one has to resolve against a finding, or it is not sent.

Contact

Ask us to look at your store.

Two fields, because two is all we need to run it and write back. A person reads this — no automatic reply, no chatbot, no newsletter. Anything that is not a storefront is better sent to contact@mail.scanify.ltd.

A person reads this. What we keep, and the terms.