Check C5, commerce actionability, is worth 4 points and applies only to shops. A software company, a publisher or a law firm has no product page, no cart and no checkout, and it would be absurd to mark them down for it. It would be nearly as bad to score them out of 96, because then a perfect SaaS site and a perfect shop would have different ceilings and the leaderboard could not compare them. The rubric's answer is to move C5's four points onto C1 to C4, in proportion to their weight, so every site type is scored out of the same 100. This post is the arithmetic, exactly as the scorer does it, and the reasoning behind it.
How the site type is decided
The crawler decides the type from the raw HTML of the homepage. The rules run in order and the first match wins.
- If the homepage's JSON-LD contains a
Product,OfferorOnlineStoretype anywhere, including nested inside another object or in an@graph, the site is e-commerce. - Otherwise, if the homepage HTML contains
/cartas a path, the phraseadd to cartoradd to bag, or the textshopifyorwoocommerce, case-insensitively, the site is e-commerce. - Otherwise, if the JSON-LD contains a
SoftwareApplication, the site is SaaS. - Otherwise, if the HTML contains
pricingfollowed later on the same line byper month, or the phrasefree trialorstart free, the site is SaaS. - Otherwise, if the JSON-LD contains an
ArticleorBlogPosting, the site is content. - Otherwise the site is "other", which the report labels general.
Only the homepage is consulted, and the type is recorded on the scan; reading your scan report shows where it appears. Three checks read it. B2 decides which schema types to expect from it, D3 decides whether to look for shipping and returns pages or a terms page, and C5 runs or does not run.
The distinction that matters for scoring is e-commerce against everything else. A SaaS site, a content site and a general site are treated identically by C5: not applicable.
What the check returns
For a non-commerce site the C5 check does not examine any page. It returns a result with status na, zero points earned out of the four possible, evidence of { "siteType": "saas" } or whichever type was detected, and the recommendation "Not a commerce site; these points are redistributed across C1–C4." On the report that renders as a row with a Not applicable pill and 0/4 beside it. The row is kept so every report lists all 27 checks.
The scoring step that follows is where the four points go.
The arithmetic
The scorer runs all 27 checks, then applies a redistribution table before adding anything up. The table has one entry.
const REDISTRIBUTION: Readonly<Record<string, readonly string[]>> = {
C5: ["C1", "C2", "C3", "C4"],
};
For each entry whose source check came back with status na, the scorer sums the points possible of the recipients, divides the source's points by that sum, and adds one to get a multiplier. It then multiplies both the points possible and the points earned of every recipient by that multiplier, rounding each to two decimal places.
C1 is worth 5, C2 4, C3 4 and C4 5, so the recipients total 18. C5's 4 points divided by 18 is 0.2222, and the multiplier is 1.2222. Applied to each check:
| Check | Points possible | After redistribution |
|---|---|---|
| C1 Form usability | 5 | 6.11 |
| C2 Navigable link graph | 4 | 4.89 |
| C3 Interactive element semantics | 4 | 4.89 |
| C4 Machine endpoints and agent manifests | 5 | 6.11 |
| C5 Commerce actionability | 4 | 0/4, not applicable |
| C6 On-site search | 3 | 3 |
The four recipients now total 22.00, C6 still contributes 3, and the pillar's ceiling is 25 again. Rounding happens per check, and with these numbers the rounded possibles add up to exactly 22.
Earned points scale the same way. A non-commerce site that scored 4 of 5 on C1 shows 4.89/6.11; one that scored 3 of 5 on C4 shows 3.67/6.11; a C2 at 3 of 4 shows 3.67/4.89. A full mark stays a full mark: 6.11/6.11 is what C1 looks like on a non-commerce report that passed it, and it looks odd until you know where it came from.
The pillar score is the sum of earned points across all six rows, rounded to two decimal places, with C5 contributing zero. The total is the four pillar scores added together and rounded to a whole number, and the grade is read from that.
For a shop none of this happens: C5's status is pass, partial or fail rather than na, no multiplier is built, C1 stays out of 5, and C5 is scored on the four signals guest checkout is an agent feature describes.
Why C1 to C4, and not the whole pillar
The rubric text for C5 says "redistributed across C1–C4", and the scorer's comment records that C6 is excluded deliberately. The effect is that the extra weight lands on the four checks every site has something to say about, forms, links, buttons and machine endpoints, rather than on search, which is itself a feature a site may or may not offer. A general site with no search box loses its 3 points on C6 whether or not it is a shop; not being a shop should not soften that.
Proportional rather than equal sharing matters too. A flat point each would take C2 and C3 from 4 to 5 and C1 and C4 from 5 to 6, and the published ratios would drift. Multiplying keeps them: C1 and C4 remain the heavier pair.
Why not score out of 96
Three reasons.
Grades are absolute. An A+ starts at 95. A site scored out of 96 that dropped a single point anywhere would fall out of the top band, and one that dropped two would be an A for reasons that had nothing to do with agents. Redistribution keeps the bands meaning the same thing for every type.
Comparison across types has to be possible. The leaderboard ranks sites within a category and across all of them, and a score that means "out of 100 if you sell things, otherwise out of 96" cannot be sorted honestly. Scaling every non-commerce site by a fixed factor on the same four checks keeps their scores on one axis.
Percentages would hide the mechanism. Reporting 92 out of 96 as 95.8% would produce the same ceiling, but the per-check rows would no longer add up to the total, and the whole point of the report is that they do. Showing 6.11/6.11 on C1 is slightly strange the first time; showing a total that does not match its rows would be strange every time.
There is a cost. On a non-commerce site each C1 point is worth 1.22 rather than 1, so an unlabelled input or a missing submit button costs a little more than it would on a shop. That is the price of the same ceiling, and it falls on checks every site can fix.
When the type is wrong
Because detection reads the homepage alone, a shop whose homepage carries no Product, Offer or OnlineStore schema, no add-to-cart text and no cart link can be typed general. It then has C5 redistributed rather than scored, which means it can neither earn nor lose those points on commerce signals, and B2 and D3 apply their non-commerce expectations. The cheapest correction is an OnlineStore or Product block in the homepage's JSON-LD, which is also what an agent wants to find there. The reverse mistake, a non-shop typed e-commerce because its homepage mentions a platform by name, is rarer but possible; the C5 evidence shows the type that was used.
Check your own site
The free scan records the type it detected at the top of the report and shows C5 either scored on its four signals or marked not applicable with the recipients rescaled. The definition of every check in the pillar is on the methodology page under actionability, and our own report at /site/agentfriendlyrank.com shows what the redistributed rows look like on a site that sells no products.