Method

How this leaderboard is scored

Every criterion, every weight, every source, and the things this method cannot tell you. Reviewed 12 September 2026.

The axis

This ranks disclosed practice, not results

There is no lawful way to obtain a third party's real cost per lead, managed spend or return on ad spend. Every performance figure any agency publishes about itself is self-reported and unaudited, and most of them are missing the attribution window that would make them mean anything. Building a ranking on those numbers would mean laundering marketing claims into a scoreboard.

So the axis is what each agency publicly documents about how it runs and measures Meta spend, checked against a named source with the date we read it. Every criterion either reads a public register, which is Meta's Ad Library or its partner directory, or reads the agency's own published words and attributes them as the agency's own words.

One consequence is worth saying before a competitor says it for us: an agency can run excellent Meta campaigns and score badly here, because it never wrote down how it measures them. This measures disclosed method. That is the only thing about a third party anyone can check.

Weights
CriterionWeightWhat it measures
Causal measurement25Whether they can show the ads caused work, or only report what Meta claims credit for. Scored against the largest account scale they say they serve, so a single-market shop is not marked down for a test it could never power.
Conversions API and event quality20Whether the signal Meta optimises against is real. Sending a booked job back to Meta scores. Delivering a lead into your CRM does not, and the two get described in the same words.
Objective coverage18Which campaign objectives they actually run and whether they say why they choose one over another. Instant forms, calls, site conversions, Advantage+, warm audiences.
Creative iteration15Whether creative is produced fast enough to outrun fatigue. Half from their documented cadence, half from what the Ad Library shows running on their own Page.
Spend band, published12What size of account they serve and whether they publish it. This scores the published figure, because the real one cannot be obtained about a third party.
Claim hygiene10Whether their own published numbers carry an attribution window, a denominator, a date range and a note that results are not typical. Publishing no number at all scores the midpoint.

Causal measurement and tracking together carry 45 of the 100 points. That is deliberate. In a market where every agency homepage carries a lead generation promise, what separates them is whether anyone can tell if the promise was kept.

Bands

Causal measurement, 25 points

Meta counts what it claims credit for, and it over-counts its own contribution. A homeowner who was already going to replace a condenser, who scrolled past a tune-up ad three days earlier, lands in that report as a conversion.

The scale adjustment, which keeps this fair

A randomised conversion lift study needs roughly two hundred thousand users per cell to be powered, and a geo holdout needs four to eight weeks and enough separate markets to absorb local noise. A single-site contractor spending five thousand dollars a month cannot run either, and marking an agency down for not doing an impossible thing would be a strawman. So this criterion is scored against the largest account scale the agency claims to serve. A firm advertising portfolio work across thirty locations is judged on whether it ran a geo holdout. A firm serving one contractor in one metro is judged on whether it closed the loop to booked jobs.

PointsBandEvidence required
25ExperimentalPublicly documents a randomised or quasi-experimental test actually run on a home service Meta account: conversion lift, geo holdout, matched market, or a scheduled blackout. The design has to be described, including what was randomised, for how long, and what was measured.
18Closed loop, verifiedReconciles Meta-attributed leads against booked jobs and revenue for the same period, with the revenue side verified against accounting or third-party software, and reports cost per booked job.
12Closed loop, CRM onlyTracks lead outcomes in the CRM and feeds lead quality back into the account, without reconciling spend against verified revenue.
8Downstream eventOptimises toward and reports on a downstream business event such as a booking completion rather than a form fill. Still entirely platform-attributed.
5Disclosed platform reportingReports Ads Manager numbers only, but publishes a disclaimer stating the figures are platform-attributed and not typical.
0Undisclosed platform reportingPresents Meta-attributed conversions, return on ad spend or revenue as business results, with no attribution window and no disclaimer.

Nothing in this set reaches the top band. Not one of the nine documents a holdout, a geo test or a conversion lift study. The ceiling reached is closed-loop reconciliation. That is the most useful single thing this directory can tell an HVAC owner.

Conversions API and event quality, 20 points

Browser pixels lose events to ad blockers, consent gating and cookie loss. Server-side events recover the signal, and the signal is what Meta optimises against.

PointsBandEvidence required
20FullServer-side Conversions API, plus offline or CRM upload of booked-job events back to Meta, plus event match quality managed as a named number. Deduplication by event ID referenced.
14StrongConversions API and offline booked-job events. No event match quality management named.
9PartialConversions API, or a named CRM-to-Meta conversion integration, without booked-job events going back.
4BasicPixel and standard events, native lead forms delivered into a CRM. Lead delivery only.
0NoneNo documented tracking beyond installing a pixel.

Lead delivery and offline conversion upload get conflated constantly in this market's marketing copy. "Leads go straight to your CRM" is the 4-point band. Sending the booked job back to Meta so the auction learns which form fill became a customer is the 14-point band.

Objective coverage, 18 points

Five objective families, 3.6 points each. Full marks where the objective is named and a rationale is given for choosing it over the alternatives, half where it is named with no rationale, nothing where "social media advertising" appears with no objective named at all.

  • Instant forms. Leads objective, on-Meta lead form.
  • Calls. Leads objective with a call performance goal, or click to call.
  • Site conversions. Leads objective routed to a landing page.
  • Advantage+. Advantage+ audience or campaign, run as a deliberate choice.
  • Warm audiences. Retargeting, customer lists, seasonal re-engagement.

Creative iteration, 15 points

Rising frequency with falling link click-through and rising cost per thousand impressions is creative fatigue, and it is one of the few places in a Meta account where the numbers genuinely point at the ad. The defence is new creative at a sustained rate.

Split in two. Up to 6 points from the Meta Ad Library, scored on how many ads the agency has running under its own Page and how recently the newest one started. Up to 9 points from documented cadence: a stated number of new creatives per account per month scores full, a described testing structure with no number scores about half, a bare mention of A/B testing scores little.

A limitation we will not bury

The Ad Library shows ads under the Page that runs them. For commercial ads it does not name the agency behind a client's account. So the first half of this criterion measures the agency's own advertising and stands as a proxy for how it treats creative volume. It is labelled a proxy everywhere it appears. An agency producing prolific client creative while advertising itself lightly scores low here, and that is a known weakness of the measure rather than a hidden one. How we ran it, and the false zero it nearly produced, is written up on the Ad Library check.

Spend band, published, 12 points

Read the name carefully. This scores the published band, because the real one is unobtainable about a third party and inventing it would be a legal problem rather than an editorial one.

Twelve points for publishing a minimum monthly ad spend and documenting accounts at twenty-five thousand a month or above, or multi-location portfolio work. Nine for a published minimum in the five to twenty-five thousand range. Six for a published minimum below five thousand. Three where no minimum is published but a budget range appears somewhere. Nothing where no spend information is published at all.

This is deliberately a transparency measure. An agency running ten million a year that publishes nothing scores below one running two million that publishes its floor. A reader who thinks this column measures agency size has been misled, so we are saying plainly that it does not. Management fees are recorded separately and are not scored, because fee and ad spend are different money.

Claim hygiene, 10 points

Every performance claim an agency publishes about its own work is checked against four things, worth 2.5 points each:

  1. The attribution window is stated: seven-day click, one-day view, or unified.
  2. The denominator is stated: link clicks rather than all clicks, leads rather than booked jobs, and which one the cost figure divides by.
  3. The date range and the number of accounts behind the figure are stated.
  4. There is a statement that the figures are platform-attributed and not typical.
The neutrality rule

An agency publishing no performance numbers at all scores 5 of 10, not zero. Saying nothing is not dishonest, and only a published claim can be a bad one. Without this rule the criterion would punish the transparent and reward silence, which inverts what it is for.

Tie-break

Two companies finished within half a point of each other. A margin that small on a rubric carrying this much judgement is a tie, and presenting it as a finding would be dishonest, so the order between them is settled by a rule stated in advance and applied to every pair:

Where two companies finish within 2 points of each other, the one publishing more of its own commercial terms ranks higher.

RS Gonzales publishes a three thousand dollar monthly minimum ad spend and its fee bands. TradeOps Consulting publishes fee tiers and no ad spend figure. Both facts sit on public pages a reader can open, which is the point of resolving it this way.

An earlier draft of this rule had a first clause resting on Meta Business Partner status. It was removed, because Meta's partner directory sits behind a login and a tie-break resting on evidence no reader can inspect is not a tie-break. Two agencies here state partner status on their own sites; those claims are recorded on their profiles, marked as unverified with the reason, and carry no weight in the score.

Applying it to ourselves

The standard caught us once already

While building this site we wrote down two colour contrast figures, 7.0 to 1 and 5.9 to 1, calculated from the hex values rather than measured on the page. Measured properly they are 6.60 and 5.17. Both still pass the accessibility threshold, so nothing forced the correction except noticing that an estimated number had been written where a measured one was implied.

That is the same failure this leaderboard docks agencies points for under claim hygiene: a figure presented with more authority than its source supports. It cost us nothing to fix and it is recorded here because a standard you only apply outward is not a standard.

What would change a score
  • Publishing a documented holdout, geo test or lift study, with its design, moves an agency to the top band on the heaviest criterion and would make it the first here to reach it.
  • Documenting offline booked-job events going back to Meta moves tracking from 4 to at least 14.
  • Publishing a minimum ad spend moves the spend band criterion off its floor.
  • Adding an attribution window, a denominator, a date range and a not-typical statement to an existing published claim can move claim hygiene from 0 to 10 without changing a single thing about how the agency operates.
  • Naming a campaign objective that is genuinely run, with a rationale for choosing it, adds 3.6 points per family.

Scores are restated quarterly and carry the date they were read. If you are listed and something here is wrong or out of date, the corrections page has a named contact and our commitment to recheck and republish.

Scored set

Nine companies. Eight scored, one listed but not scored.

AgencyCausalConversionsObjectiveCreativeSpendClaimTotal
RS Gonzales23 / 2518 / 2016 / 1812 / 1511 / 129 / 1089.0
Clicks Geek19 / 2519 / 2015 / 1812 / 1510 / 129 / 1084.0
TradeOps Consulting18 / 2516 / 2014 / 1813 / 1510 / 128 / 1079.0
LMH Agency12 / 254 / 209 / 183 / 150 / 125 / 1033.0
Service Allies12 / 254 / 203.6 / 185 / 153 / 125 / 1032.6
Foxxr12 / 254 / 203.6 / 182 / 153 / 125 / 1029.6
Contractor Dynamics5 / 254 / 205.4 / 187 / 150 / 120 / 1021.4
Built-Right Digital0 / 254 / 205.4 / 185 / 153 / 120 / 1017.4
AscendittListed but not scored. Its HVAC case study is dated 1 August 2024, every case study on the site is dated 2024, and the footer reads 2022. Scoring a real business off evidence that old would measure the website rather than the agency.