How We Score the CRO Audit for Shopify Stores

How Ninety9 scores the CRO Audit: a public product-page rubric applied the same way every time — not a conversion forecast or a law.

How Ninety9 scores the CRO Audit for Shopify stores — a rubric, not a conversion forecast

Key takeaways

  • The audit scores a live product page against Ninety9’s rubric. It is a point of view applied consistently, not a conversion-rate prediction.
  • Buy path outranks basket growth, which outranks page hygiene. The status word follows the 0–100 score: 85+ is positive, a 65 is Thin — not a win.
  • Defaults (a cart drawer after add, an offer at intent) are what we treat as good for most Shopify PDPs. Your niche, brand, or market can disagree, and that can be right.
  • A miss means this page does not match the rubric. Theme work stays on the theme. An app name is a suggested owner, not a required install.

The CRO Audit for Shopify stores returns a number and a status. Those are easy to read as a verdict on the shop. They are not.

They are a read of this product page against a rubric we wrote. We apply it the same way every time. That is the whole claim.

It is not a conversion-rate prediction. It is not an official Shopify grade. It is not a law for every brand. A miss means this URL does not match the rubric. Your niche, market, or taste can disagree — and that can be the right call for that store.

Who wrote the rules

Ninety9 builds Shopify apps for average order value. We also built this audit. That is a conflict of interest if the score only passed our installs.

It does not. What the audit checks is a class of behaviour: a real add-to-cart, a way to grow the basket, a buy box that is not fighting itself. A theme cart drawer passes. Another vendor’s popup passes. Native Shopify passes. Fix with names a suggested owner after a miss so you can act today. You can use the theme or a different app.

If a row only existed to sell Addy, the audit would be a demo. It is a checklist we are willing to put on a page you did not build.

What we can actually see

Public product HTML. Catalogue JSON (/products/{handle}.js). The cart page. When Chromium can run, a real add-to-cart click and a short wait for a drawer or popup.

We cannot see checkout, discounts, customers, orders, or your analytics. We cannot see whether the offer is good. Password-protected shops work if you paste the storefront password; we use it to open the shop and we do not keep it.

So the score answers a narrow question: on this URL, is the page able to take money, and does it ask for more of it, without the buy box getting in the way.

Why the order is A, then B, then C

Rubric A — can they buy? If add-to-cart is missing, variants dead-end, stock lies, or the price is fake, later CRO is theatre. Those rows weigh most.

Rubric B — does the basket grow? Once they can buy, we look for the defaults that keep intent on the page: a product-page offer, quantity breaks, a cart goal, proof, a drawer after add, an offer at add or exit.

Rubric C — is the page fighting itself? Stacked widgets, too many primaries, JSON-LD that disagrees with the catalogue. Hygiene at the buy box.

Post-purchase is Next, not a fail. We never reach the thank-you page.

The status next to the score is a label for that number, not a pep talk. A 92 is Strong. A 65 is Thin. The short line beside it still names which rubric missed (Fail in Rubric A). How to read the health score is the short version of the number. This page is the basis.

The word follows the score

Health starts at 100. Each scored fail subtracts a weight: −6 for a Rubric A miss, −4 for B, −2 for C. Skip and Next do not deduct. The floor is 23.

The title next to that number is a score band, so the word is not kinder than the number:

ScoreStatus
94–100Solid
85–93Strong
77–84Uneven
70–76Patchy
62–69Thin
50–61Friction
38–49Leaky
23–37Drop-off

Solid and Strong are the positive titles — 85 and up. Uneven and Patchy mean it sells, but it is not a flex. Thin is 62–69: a working page with real gaps, not a good score. Below that the word gets harsher.

Unreadable theme HTML → Partial, even if catalogue rows passed.

Two basket-growth misses are −8, so 92. That is Strong. A 65 is Thin. The punch list still tells you what to fix; the word tells you how hard we are willing to praise the number.

Defaults, not laws

A few rows are opinions we still score, because a rubric that only scored “is there a button” would not be useful. The honest ones:

A cart drawer after add, not a dump to /cart. Intent is hottest on add. A full-page cart refresh spends that moment on a reload. Most Shopify PDPs we care about keep the product behind a drawer and upsell there. When a cart page is still the right tool — large B2B baskets, heavy configuration, some luxury and gift flows — you can take the miss and keep the page. The rubric will still flag the pattern.

An offer at intent (add, exit, or checkout), not only a silent cart. The assumption is that the shopper who just added is the one most likely to add one more thing. Subscription-only, single-SKU, or “we do not upsell” brands can ignore that row.

A product-page offer (bundle, frequently bought together, add-on). Impulse and routine stacks benefit. A one-size digital download may not.

We do not pretend those defaults were proven in a paper we are citing. We publish them so you can see the assumption.

What a miss is not

It is not “your store is broken.”

It is not “install this app or the number is fake.”

It is not a forecast of conversion rate after you fix the row.

Treat the score as a before/after on this product URL. If the screenshots do not look like the page a shopper should see — popup, age gate, overlay — pause those and run it again. The tool can be wrong.

Paste a store or a product URL when you want the rubric applied to a live page. Read the top miss. Decide if it applies. That is the use of a scored opinion.

Frequently asked questions

Is this an industry standard?

No. It is Ninety9’s product-page rubric. We score the same defaults on every public Shopify PDP we can read. Other audits will rank other things.

Is a full cart page always a miss?

In this rubric, yes — a dump to /cart after add fails the “something happens on add” row, because intent is still on the product page. Luxury, wholesale, gift, and some high-consideration carts reasonably keep a cart page. Read the miss, then decide if it applies.

Do I have to install a Ninety9 app to pass?

No. The score looks for a class of storefront behaviour. A theme drawer, another app, or native Shopify can pass. Fix with names a suggested owner after a miss.

Can a high score still convert poorly?

Yes. The audit cannot see ads, offer, brand, or checkout. A page can pass every row and still fail in analytics.

Why don’t you publish studies for each check?

We are not claiming a lab result. We are publishing the defaults we score, in a fixed order, so you can agree or disagree with the rubric instead of treating the number as law.

Ninety9 Team

We build 5 conversion apps used by Shopify merchants in Bulgaria and beyond. Everything we write here comes out of what we see in real store data.

Keep reading

Related articles