We scored 16 well-known pages on how well they ask a visitor to take the next step. Fifteen loaded. Our own homepage came 14th of the 15, with 77.9 out of 100. A national plumbing brand scored 98.3 and a house-cleaning brand 97.3.
The reason is plain once you read the output. Our homepage has a clear headline and a signup button beside it, and then it asks a stranger to trust it with nothing to go on: no customer quote, no review count, no named customer, no way to reach a person. The plumbers' page has all of that.
That is what the new GET /conversion endpoint measures. An SEO audit tells you whether a page can be found. This tells you whether the page asks for anything once someone is on it.
What we ran
On 2026-10-05 we ran the scorer against 16 public pages we picked by hand: five national home-service brands, four product pages from large online stores, five software homepages, and two of our own sites (this one and 45squared.com, the agency behind it). This is a hand-picked sample of big brands, not a survey. It says nothing about the average small-business site, which we expect to score far lower.
| Group | Pages scored | Range |
|---|---|---|
| Home-service brands | 5 | 82.3 to 98.3 |
| Online store product pages | 3 (one refused, see below) | 91.0 to 95.9 |
| Software homepages, ours included | 6 | 72.0 to 98.3 |
| Our agency site | 1 | 91.4 |
Across the 15 pages the scorer raised 43 findings, none of them high severity. The average score by area:
| Area | Average | What it checks |
|---|---|---|
| Headline | 97.3 | One H1 that says what the page offers, with a sentence under it |
| Call to action | 95.2 | A button or phone link near the top, worded as an action, repeated down the page |
| Forms | 87.8 (10 pages had a form we could read) | How many fields, whether each has a label, what the button says |
| Trust | 82.0 | Testimonials, ratings, guarantees, contact details, credentials |
| Objections | 75.7 | A price or a way to get one, an FAQ, what happens next, shipping and returns |
Big brands get the headline and the button right. Where they differ is in what comes after. The two most common findings, on 6 pages each, were no credentials we could find and no explanation of what happens after you get in touch. Two of the five home-service sites had a form asking for 8 and 10 fields.
What comes back
curl "https://seoscoreapi.com/conversion?url=https://seoscoreapi.com" \
-H "X-API-Key: YOUR_KEY"
This is the real response for our homepage, trimmed:
{
"score": 77.9,
"grade": "B",
"page_type": "saas",
"categories": {
"headline": {"score": 100.0, "weight": 0.2},
"cta": {"score": 100.0, "weight": 0.3},
"trust": {"score": 35.0, "weight": 0.25},
"forms": {"score": 86.7, "weight": 0.1},
"objections": {"score": 70.0, "weight": 0.15}
},
"priorities": [
{
"severity": "medium",
"category": "trust",
"issue": "No testimonials, reviews or ratings found on the page",
"fix": "Add two or three real customer quotes with names, or your review rating and count, near the call to action.",
"plain_english": "The page shows no customer reviews or ratings, so a new visitor has only your word that you are good.",
"who_fixes_it": "marketing"
}
]
}
Every finding has the same fields as our audit fixes: a technical issue and fix, one plain_english sentence you can paste into a client report, and who_fixes_it. Where there is something to point at, evidence holds it: the headline text, the phone number, the button labels.
signals lists what we found, so you can check our work: the H1, the first call to action and how far down it sits, every button label, and the sentence that counted as each trust signal.
It is built for more than software pages
Many conversion checklists are written for software signups. Ours treats these as calls to action too:
- A phone link. For a plumber,
tel:is the conversion. If we find a phone number printed as plain text with no link, that is a finding, because a visitor on a phone has to copy it by hand. Thetel:scheme is defined in RFC 3966 and mobile browsers hand it to the dialer. - Add to cart. On a product page the one-word H1 is the product name, and that is correct. We only ask a shop page about shipping and returns.
- No form at all. A page that sells by phone or by cart has no form to judge. The forms area comes back
nulland its weight goes to the other four. It is never scored as a zero.
The page type (local_service, ecommerce, saas, general) is detected from the page. Pass ?page_type= when we get it wrong.
Where the rules come from
We did not invent the checklist. Google's web.dev guidance on forms says to "ask for as little as possible" and to avoid "vague wording" on the button that starts the process. The W3C's forms tutorial says "placeholder text is not a replacement for labels", which is why a field with only a placeholder is flagged.
One thing worth knowing about reviews: testimonials on your own site help the visitor, but Google's review snippet rules only show stars for a local business or organization on sites that collect reviews about other businesses. We count your testimonials as trust evidence for people. We do not suggest they will earn you stars in search.
What it gets wrong, and what it can't see
We would rather you hear this from us.
It reads source order, not pixels. We do not lay the page out. "Near the top" means the first call to action starts within about 800 characters of text after the headline in the HTML. A page that reorders content with CSS can pass or fail unfairly. This is why we do not call it an above-the-fold check.
Trust and objections are word matches. We look for the words people use: "guarantee", "licensed", "4.8 out of 5". A wall of client logos with no text is invisible to us. Legal boilerplate can count when it shouldn't; we filter "cannot guarantee" and "certified mail", and there will be others.
Testing on real pages found three false alarms, which we fixed before shipping. A large retailer served a "hang tight" waiting-room page with a 200 status, and the first version scored it an F with eight findings, most of them things it called missing. It now returns an error with reason: "blocked" and reports nothing. Product names were flagged as vague headlines. And a headline printed twice, once for desktop and once for mobile, was counted as two competing headlines.
Two we have not fixed. Menus built from plain div elements inflate the "competing buttons" count, and hidden text in a pop-up counts toward the length of the page.
It does not measure your conversion rate. Only your analytics can. This scores what is on the page.
The rule we hold to is that a page we could not read gets no findings. A blocked page, a JavaScript shell that did not render, or a page cut off at our 3 MB limit will not be told it is missing a headline.
Our position: read the list, ignore the number above 90
Nine of our 15 pages scored 90 or higher, and the differences among them are mostly noise from the limits above. The score is good at separating a page that asks from a page that doesn't. It cannot rank two good pages, and nobody should spend a week moving a page from 91 to 96.
The fix list is the product. For our own homepage it says: add customer quotes, say who is behind this, and tell people what happens after they sign up. All three are fair.
Using it
GET /conversion?url= works on every plan and counts as one audit. Free keys get the scores and the first two fixes; paid plans get the full list. A page we can't load or read returns a 422 with a reason and is not counted.
On paid plans you can add it to a normal audit at no extra charge:
curl "https://seoscoreapi.com/audit?url=https://example.com&include=conversion" \
-H "X-API-Key: YOUR_KEY"
If you don't have a key yet, get a free one and run it on your own homepage first. Ours was humbling.