Growth Command · Mr. Patio Cover

$2.89M contracted.
Here is which channel actually paid for it.

Window Jan 1 – Jul 31, 2026 Meta run by SPG all year Google + SEO taken over May 27, 2026 Gross margin 38% assumed
Meta return on ad spend
14.8×
$130,314 spent → $1,932,844 contracted
Gross profit per $1 of CAC
5.64:1
Healthy is 3–5:1. Above 5 means underspending.
Net gross profit after all Meta spend
$604,167
144 jobs · $905 CAC · $14,533 avg ticket

Channel board

Revenue is contracted value, attributed by GoHighLevel — not by the sheet's hand-typed channel column.

Meta

SPG-run · full year · 3,709 leads
$1,932,844
Scale it
Spend
$130,314
Cost per lead
$33
Booked
824
Jobs sold
144
Cost per job
$905
GP:CAC
5.64:1

Google PPC

Yours since May 27 · 143 leads since
$158
cost per lead, down from $325
Working, not yet paying
Spend since takeover
$22,545
Cost per lead
$158 ↓51%
Leads per day
2.2 ↑38%
Spend per day
$342 ↓33%
Attributed revenue
$55,460
GP:CAC (floor–ceiling)
0.93–1.94:1
64% of these leads are phone calls. They tap and dial — no form, no utm_content. GoHighLevel sees only 69 of the 143, so revenue here is a floor.

SEO / GEO / LLMO

Yours since May 27 · $0 media cost
52 leads in July
against a ~15/month baseline all year
Inflecting
Jan–Jun monthly average
15
July
52 ×3.5
Leads YTD
147
Booked → closed
7.8%
Average order value
$14,664
Media cost
$0
July's 37 extra leads at 7.8% close and $14,664 AOV are worth roughly $42K of contracted revenue a month — on zero media spend, if the lift holds.

The takeover

Lead counts are Google's own conversions on both sides, so the comparison is apples to apples. Deals cohorted by lead date, not close date — no credit for the old vendor's pipeline, no blame for yours not having closed yet.
Google PPC · before · Jan 1 – May 26
Spend$74,671 Conversions230 Cost per lead$325 Leads / day1.6 Spend / day$511 Attributed jobs1
CPL cut 51%
38% more leads
on 33% less/day
Google PPC · after · May 27 – Jul 31
Spend$22,545 Conversions143 Cost per lead$158 Leads / day2.2 Spend / day$342 Attributed jobs5
SEO / GEO / LLMO · baseline · Jan – Jun
Monthly leads15 · 23 · 15 · 13 · 15 · 14 Six-month average16 / mo Media cost$0
×3.5 in July
+37 leads / mo
SEO / GEO / LLMO · July
Leads52 vs baseline+37 / mo Worth at 7.8% × $14,664~$42K / mo

Contracted revenue by month

Hover any bar. Amber month marks the takeover.
Meta Google PPC SEO / organic Direct, referral & unattributed

Conversion rates by channel

Deduped to unique people — 5,885 opportunities collapse to 4,587 actual humans.
ChannelLeadsBookedLead → bookJobs Book → closeLead → jobRevenueAOV
Read the two columns differently. Book → close is comparable across every channel — the booking is the shared entry point, so those numbers are real. Lead → book is only trustworthy for Meta. Meta leads all enter the CRM as raw form fills, junk included, so its 22.2% is a true rate. Google, SEO and direct leads largely only create a record once they book — the ones that never booked were never written down. That is why they read 69–90% and Meta reads 22%. Those are not comparable and the gap is a measurement artifact, not performance.

Meta ads — ranked by gross profit per dollar

Ranked on cost per sold job. CPL is a decoy.
AdSpendCPLJobsRevenueCost / jobGP:CACCall

Sales reps

Avg ticket compared on Meta leads only, so nobody is rewarded for lead quality they didn't earn.
Hayden stopped closing on June 1. He wrote $679,134 — 23.5% of the year's revenue — then went to zero. That, not marketing, is what the May–June revenue dip was. Leads and appointments held flat through it.
RepJan–Jul trendAppts runJobs soldClose rate RevenueAOVMedianMeta-only AOVGP writtenShare
Closers are the one gap left. GoHighLevel has a Sales Person field — it is filled in on 19 of 1,408 contacts. assignedUserId on appointments is the calendar owner (1,033 Seth Engle / 79 Eric Engle / 533 nobody), not who ran the call. And the Weekly Numbers ledger stamps a rep only on jobs that sold. So you can see who writes bigger tickets; you cannot see who converts better. Fill in Sales Person at appointment time — the field already exists, and the setter board below proves the join works the moment it's populated.

Appointment setters

From contact.appointment_set_by — 98% populated, 1,383 appointments.
SetterAppts setShare of allSoldClose rate RevenueAOVRevenue per appt set
Ariana sets 54% of every appointment in the business and closes them at 16.6%. Noah sets 8% and closes at 23.3%. Noah and Stefy each generate about double the revenue per appointment set that Denise does ($2,036 and $2,312 vs $1,093). Lift Ariana alone from 16.6% to 20% and that is +25 jobs a year, roughly $358,000 contracted, with no extra ad spend and no extra appointments. Noah is your training asset — he is doing something on the phone the other two aren't.
Strategic brief · 6M constraint diagnostic

The diagnosis

Ran all six. Five are fine.

Model is fine — $14,533 average ticket on a product people finance. Market is fine — Southern California, and you're at 5,885 leads without touching the ceiling. Manpower got hit when Hayden walked, but the bench rebuilt in 60 days and July was the best job month of the year. Manager has real gaps — nobody dispositions appointments, so show rate does not exist as a number. Fix it, but it is not what's costing you the most today.

The constraint is Money. Specifically: capital allocation.

Why that's the one

A dollar into Meta returns $5.64 of gross profit. Healthy is 3:1. You are at 5.64:1. That is not a trophy — that is a channel screaming that it is starved. When the ratio is that far above the line, the market is telling you it will absorb more money than you are giving it.

Meanwhile $22,545 went into Google since May 27. You cut CPL from $325 to $158 in nine weeks while pulling more leads per day on a third less daily spend. That is genuinely excellent work. But it is returning somewhere between 93 cents and $1.94 of gross profit per dollar — the range is that wide because two-thirds of those leads phone in and nothing records where they came from. Even at the top of the band it is under 3:1, and 93% of the spend still sits in a campaign you inherited and did not build.

The correction doesn't change the call. Google is better than it looked and still not the place to add the next dollar. Meta is.

Meta July spend$20,937
Raise 50% → new monthly$31,400
Added spend per month$10,463
÷ proven CAC of $905+11.6 jobs / mo
× $14,533 average ticket+$168,583 / mo
Added gross profit per month+$64,062

You get that by moving money you are already spending. No new offer. No new ad. No new rep. Ride the ratio down to 3:1 and stop. That is where the money stops being free.

The moves

  1. Raise Meta budget 50% on the four proven ads. Nothing else.

    PC | 1001-1a, LP_OG-Offer_R2-VID_C001-PT_01, …PT_01 | OT1, PC | 1002-1a_6. Those four carry 6.7:1, 8.4:1, 6.7:1 and 21.5:1. Everything else holds flat.

    Then kill the four ads with spend and zero jobs — $4,564 gone, nothing lost.

    Next 48 hours · watch GP:CAC weekly · stop raising the week it touches 3:1

  2. Plug the two holes you're flying blind through.

    Calls. 64% of Google leads tap-to-dial. No form, no utm_content, so GoHighLevel sees 69 of 143. That is why 657 leads sit in "direct / no marker" and why 39 closed jobs worth $500,530 have no source at all. Put dynamic number insertion on the landing pages so a call creates an attributed contact. Until then every Google and SEO number on this page is a floor and you are under-billing your own results.

    Appointments. 1,646 this year: 94% "confirmed," 6% "cancelled," zero showed or no-showed. Your 13.6% appointment-to-sale is show rate and close rate fused into one useless number. If they show at 60%, reps close at 23%. At 90%, reps close at 15%. Opposite problems, opposite fixes — you're guessing which business you own.

    Call tracking live this week · appointments dispositioned within 24h of the slot · re-diagnose in 3 weeks

  3. Put Sam's pitch in the other reps' mouths.

    Same channel, same offer, same city: Sam writes $17,587 per Meta job. Seth writes $13,310. John writes $10,613. That is a $4,000–$7,000 gap per job on identical leads.

    Sam's insulated-roof mix is the lowest on the team at 44% — he isn't winning on product mix, he's winning on how he sells. Record him. Three ride-alongs. Steal the language.

    Closing half that gap across the other reps' Meta jobs is roughly $130,000 a year with zero added ad spend.

    This week · record 3 of Sam's appointments · build the objection library from the tape

What I'd tell you straight

You took a Google account at $325 a lead to $158, and pulled more leads per day while spending a third less per day doing it. You tripled organic off a flat six-month baseline on zero media spend, and Google leads now close at 19.8% once booked — the best of any channel you run. That work is real and it is not in dispute.

But you're managing three channels and only one of them is making money right now. Google is break-even and young. SEO is free and young. Meta is proven, mature, and hungry — and it is the only one you can move today. Feed the winner. Let the other two mature on their own clock.

The reason this is hard is that scaling the thing already working feels less impressive than fixing the thing that's broken. Do it anyway. $64,062 a month is sitting in a budget line, not in a new idea.