Methodology

What is measured, how, from which sources, and on what date.

What a score here measures

Publicly verifiable demonstrated depth in a discipline. Not client outcomes. An agency can be excellent and publish nothing, and it will score badly here. We would rather print that limit than imply a measurement we cannot make.

We have no access to any listed agency’s analytics, client list or results. Everything scored on this site is something any reader can go and check from outside, and the about page lists the things this site will not claim to know. Every measured figure appears on the agency scorecards with its date.

The five criteria

Each discipline is scored out of 100 from five criteria. Four are shared across disciplines so they are comparable: a dedicated surface, method specificity, published depth, and a named practitioner. The fifth is specific to each discipline, and that fifth criterion is what makes the five rankings genuinely differ rather than being one ranking shown five times.

The minimum-evidence gate

An agency is ranked on a discipline only when at least two of the five criteria have returned evidence. Otherwise it publishes as unranked with the reason in words. That is a statement about what an agency publishes, never about what it can do, and the pages say so in those terms.

Scores are never imputed. A missing discipline is not filled with an average, and an unmeasured column is not a column of zeros.

Confirming an absence

Stating that something is missing from a named company’s website is the claim most likely to be wrong, so it carries the strictest rule on this site. Presence is accepted from either detection path. Absence is stated only where both paths agree and nothing is actively gating detection.

Neither path is reliable alone. A tag manager that injects its tags late is invisible to the direct fetch; a page that exceeds the browser’s load cap is invisible to the rendered read. Presence is therefore accepted from either path, and absence is only stated where both agree and nothing is gating the scripts.

This rule changed a published finding. An earlier pass reported one agency as running no analytics, on a single detection path. A second path found a tag manager and an analytics property that the first could not see. That correction is on the corrections page with its date.

The weights

The overall leaderboard is a weighted roll-up of the five discipline scores. Here is the whole calculation.

Weights applied to each discipline in the overall roll-up, with the reason for each.
DisciplineWeightWhy
Local SEO30%For a service-area business the commercial query resolves in the map pack. It is where the money is decided.
Content25%Non-brand demand across services and service areas is captured by the page inventory, and it is the largest controllable surface.
Technical SEO20%Mostly a gate rather than a lever. It stops you ranking when broken; fixing it does not by itself make you rank.
Tracking and attribution15%Decides whether any of the above can be proved. Weighted below the work itself because it measures rather than produces.
Link building10%The slowest and least controllable in the trades, and the discipline where claims and evidence diverge most.

Overall = 0.30 × Local + 0.25 × Content + 0.20 × Technical + 0.15 × Attribution + 0.05 × Links, each out of 100, reported to one decimal.

Re-weighting changes the order, and we would rather print that than pretend the weighting is objective. A reader who thinks links matter most should read the link building page and ignore our roll-up. Every discipline score is published beside the overall figure precisely so that is possible.

These weights were set from the argument above and not from a target. A version of this site derived different weights from measured discriminating power across the field; that derivation was withdrawn before use and is noted on corrections.

Data sources

  • Referring domains and Domain Rating. Ahrefs. Third-party estimates of that vendor’s index, never Google signals, never a target.
  • Measurement stack. The agency’s own homepage, read twice: once as delivered HTML and once as a rendered page in a real browser.
  • Published corpus. The XML sitemap each site declares in its own robots.txt. Counts what a site declares, not what Google indexes.
  • Live results. Serper, for the landscape research that produced the company set.
  • Not connected. We have no Search Console access to any listed agency, and never will. Nothing on this site depends on first-party data we could not have.

Scope: who is eligible

Three questions, asked identically of every company.

  1. Readable. We can retrieve their pages. Three agencies fail this and are not listed, because scoring a site we cannot read would mean inventing the score.
  2. Separable SEO surface. At least one page on their own domain whose subject is SEO, carrying named method.
  3. HVAC-declared practice. The trades are a declared primary market. This sorts into tiers rather than excluding.

Restricting the field to practices that publish their method is the only scope under which a comparison of published depth is valid at all.

No company is excluded for being bad. There is no editorial blacklist. Every exclusion on this site is a statement about what we could measure or what is in theme, and each one is published with its reason.

Review cadence

Everything here was measured on 12 Sep 2026 and is re-measured quarterly. Every score change is published on corrections with its date and its cause, and the previous value is kept so movement is visible.

What would move a company up or down

  • Publishing a dedicated page for a discipline it currently has none for, with named deliverables rather than outcome language.
  • Attaching a named practitioner to that discipline through a byline, a talk or a video.
  • For attribution specifically, running the measurement stack it sells on its own website. Agencies that publish a full stack on their own site rank at the top of that column; ones that still ship without analytics, call tracking or consent fall to the bottom.
  • Becoming readable. The three agencies excluded for bot-walling every route would be scored the day we can read them.

An agency that disagrees with a score can say so. The editorial policy sets out how, and what we will do about it.