Case 02 · Home improvement · Website leads

Cost per lead from $95 to $27 on the same monthly budget

A window and shutter company in Dallas that sells through in-home quotes. The account was buying leads at close to $100 each. Eleven months later it buys three times as many for a quarter of the price.

ClientWindow treatments and shutters · Dallas-Fort Worth. Named on request.
ChannelMeta Ads · website leads optimized on the pixel lead event
PeriodOctober 2025 to today · 11 months
My roleMedia buyer inside an agency team: structure, creative rotation, weekly optimization, audits

The results

  • 3.5xCost per lead went from $95 in October 2025 to $27 in August 2026. July closed at $23 and the best month, March, at $14.
  • 3xMonthly leads went from 99 to 372 at the peak, with a budget that stayed between $8,000 and $9,500 most months.
  • 2,200+Website leads in eleven months, on $76,000 of ad spend. A blended cost per lead of $34 across the whole period, including the expensive start.
Before · October 2025
$95
99 leads$9,400 spendcost per lead
After · August 2026
$27
295 leads$8,000 spendcost per lead
Bars of leads per month from October 2025 to August 2026, from 99 to a peak of 372, with a line of cost per lead falling from $95 to $14 at the low and $27 in August.
Account-level monthly insights from the Meta Marketing API. Leads are pixel lead events on the client's website form.

The context

Home improvement in Texas is a crowded auction. Everyone targets homeowners in the same zip codes with the same before-and-after photos, and CPMs sit between $40 and $50 for most of the year. A lead is a quote request that a salesperson calls back, so the business cares about two things: how many, and how much each one costs.

When I joined the account it ran on a new pixel that had only been firing since August, with campaigns split by theme and a cost per lead near $100. The monthly budget was fixed. The only lever was efficiency.

What I did

Stage 1: audience-based structure on the new pixel

October 2025 to January 2026

  • Reorganized the account so ad sets are audiences, not creative themes: a broad set, an interest set, and two retargeting sets (site visitors 90 days, social engagers 180 days). Every new creative goes into every set, so the auction decides where it works.
  • Optimized everything on the pixel's lead event with lowest-cost bidding, no caps. The old pixel's ad sets were paused, not deleted.
  • Launched the December and January test ad sets that would become the account's workhorses. Cost per lead went from $86 in December to $37 in January to $14 in March.

Stage 2: creative rotation with a kill rule

March to September 2026

  • Ten new videos went live in June into all four active ad sets, forty ads, inside the existing budgets. No new money, just new creative.
  • Every batch gets its own ad set with a budget, so it can be judged on its own cost per lead against the incumbents, not blended away.
  • The August batch is the example I show agencies. It had the best click-through rate in the account, rising week over week, and the cheapest CPM. Its cost per lead went from $28 to $190 in three weeks. Cheap clicks without intent. It was paused on September 1 and its budget moved to the next batch.
The lesson: click-through rate is not the KPI. On a lead-gen account the only number that decides whether a creative lives is cost per lead against the other ad sets in the same week.

Stage 3: catching a billing outage in three days

August 29 to September 1, 2026

The account stopped delivering on a Friday. Meta reported it as a permissions error. It was an unsettled balance on the payment method. Because I check account status before I check anything else, the client had the exact cause the same day and the account was back on Tuesday. Three days lost, not three weeks.

What did not work

  • February. Spend dropped to under $2,000 for the month and the lead count with it. The account lost most of a month of learning and took March to recover.
  • May and June. Cost per lead climbed back to $42 and $46 as the winning creatives aged past three months. The July batch brought it back to $23. Rotation has to start before the winner fatigues, not after.
  • The account under-spends its approved budget by about 30%. There is room to scale, but only when a batch proves itself. Scaling on top of a fatigued creative would buy more of the same expensive leads.

What this looks like for an agency partner

This account gets a weekly look at cost per lead by ad set, one creative batch per month briefed from what won last month, and a monthly report the account manager forwards as-is. The client never sees a creative pausing decision. They see the cost per lead going down.

$350 per account, per month, fixed. No minimums.