One paid channel is generating 80% of all leads at a fair price — and then 7 out of 8 of those leads die in follow-up. Meanwhile 124 organic posts bought 26 followers, the Google Business Profile is invisible, and the referral channel that closes 9 of 10 has no system behind it. The plan isn't thin because it lacks channels — it's thin because everything after the lead is unmanaged.
Meta delivers volume at a fair cost per lead — then loses almost all of it. The referral/word-of-mouth path is tiny but nearly perfect. The gap between these two funnels is the single most expensive fact in this report. (Referral leads enter the CRM at estimate stage, so their close rate is flattered by selection — but a 79-point gap is not a selection artifact.)
$773 ad cost per won job against a $1,641 average ticket. The CPL is fine — the close rate is the leak. Closing just 4 more of the same 43 leads would have halved acquisition cost to ~$429.
71% of all revenue came from the channel with no system behind it. No referral ask, no program, no reseal database. This is the engine that already works — unbuilt.
One video ad — before/after + "$200 off" — carried 66% of all spend. Cost per click climbed from $0.38 in week one to $3.26 last week, the worst of the entire run. Frequency is only ~2.3 total, so this is not audience burnout; it's the Florida summer off-window plus a one-note message, priced weekly by Meta's auction. Two live integrity problems: the "$200 off" offer may have expired ~June 30 and is still running, and Ad 09 (the joint-sand differentiator test) has delivered zero impressions since launching July 28.
| Ad | Angle | Spend | CTR | CPC | |
|---|---|---|---|---|---|
| IF Ad 01 · Video | Before/after + $200 off | $2,557 | 2.06% | $2.26 | 66% of spend |
| Ad 08 · Video | B&A drive & deck | $372 | 1.47% | $2.37 | |
| Ad 02 · Static | B&A driveway | $193 | 1.89% | $1.78 | |
| Ad 02 · Villages | B&A driveway | $157 | 2.64% | $1.47 | |
| IF Ad 02 · Video | B&A + $200 off (copy) | $150 | 1.51% | $3.12 | |
| Ad 01 · Cinematic | "It's not ruined, it's buried" | $104 | 3.25% | $0.37 | Best CTR + CPC |
| Ad 09 · Video | Joint-sand differentiator | $0 | — | — | Not delivering |
Every funded ad makes the same argument: dirty → clean → discount. The one ad with a different voice (story-led "buried") posted the best click economics in the account on a $104 test — under a traffic objective, so treat as a strong hint, not proof.
Right now 11 open leads are sitting in "New Lead" or "Follow-Up Needed" during the exact window when fall booking decisions get made. Twelve more completed jobs are parked in "Review Requested" — reviews that were never harvested into Google, where the profile is starving (section 5). Home-service instant-form leads decay in hours, not days: whoever calls first, wins.
The content engine is real — 124 posts in 90 days, on calendar, on brand. The distribution is not: a Facebook post averages ~127 impressions, Instagram logged 40 interactions in 90 days, TikTok and YouTube round to zero. Followers: FB 16 · IG 8 · YT 2. This isn't a content-quality problem — it's broadcasting to empty rooms while the rooms that are full (local Facebook groups, Nextdoor, Scott's personal network, Google Business Profile) get nothing. The library being built has real value for ads, the website, and the fall push — but as a reach strategy, organic posting is currently buying nothing.
For a local service company, Google Business Profile is usually the highest-intent free channel that exists. Restore Paver's logged 183 impressions in 90 days — 0 calls, 0 direction requests. That's not underperforming; that's unplugged. Organic search shows the same shape with real cracks of daylight: the site ranks page 1 for "paver sealing" (position ~2.6) with zero clicks (weak title/snippet), owns the Odessa suburb terms at position 2–3, and sits one push from page 1 on "paver cleaning lutz" with 645 impressions waiting. And a structural alarm: search impressions collapsed ~93% at the end of June — that's an indexing/site event to investigate, not seasonality.
| Query | Impressions | Position | Clicks | The move |
|---|---|---|---|---|
| paver cleaning lutz | 645 | 10.7 | 0 | Dedicated Lutz cleaning page → page 1 |
| paver sealing | 110 | 2.6 | 0 | Rewrite title/meta — ranking, not clicked |
| paver sealing / cleaning odessa | ~160 | 2.5–3.0 | 0 | Snippet + GBP tie-in, own the suburb |
| "cost to seal pavers" cluster | 324 | 57–72 | 0 | One honest pricing-guide page |
| paver company | 42 | 1.0 | 1 | Already #1 — protect it |
Ordered by dollar impact, sized for one operator plus one owner-operator, refined by a five-model council review (all five independently ranked the conversion leak #1). Effort rebalance for the next 45 days: 40% lead conversion · 25% referrals + reviews · 20% GBP + local search · 15% paid. The standing gate: do not raise ad spend until median first-touch is under 5 minutes and paid close rate holds ≥ 20%.
43 paid leads → 5 wins is the leak that costs more than any ad, and 11 open leads sit unworked right now. Scott can't answer a 1 PM lead from a job site — so the operator takes first touch: instant auto-SMS on form submit ("Scott's on a job, he'll call you by 5 — meanwhile here's why our joint sand outlasts polymeric"), operator qualifies and books the estimate window, Scott closes warm. Behind it, an 8-touch / 14-day GHL cadence (call, SMS, email, then day 2×2, 4, 7, 10, 14), lost-reason tagging, and a twice-weekly 15-minute pipeline sweep. Referral leads forgive slow follow-up because they arrive pre-sold; paid leads don't.
paid close rate 12% → 20–28% in 60 days = 3–7 extra jobs ($5–11K) on unchanged spend; CAC $773 → $300–450. (Niche ceiling may be ~20% — sealing is discretionary; even that doubles output.)
weekly: median minutes-to-first-touch, contact rate, close rate on paid leads, lost reasons, open-lead age.
Three defects compound: (a) the main ad may promise an expired "$200 off" — a stale discount attracts price-shoppers and burns trust on the first call, and with the discount honored a $1,641 job nets almost nothing after the $773 CAC; (b) Ad 09's zero delivery is likely CBO starvation — the campaign budget keeps feeding the proven ad, so the test never breathes. Move it to its own test campaign with a $15–25/day floor; (c) the lead page engages only 14% of visitors — rebuild it around the differentiator with proof, reviews, and 2–3 qualifying questions (suburb, sq ft, fall timeline). Fewer, better leads beats more, worse leads.
CPL may rise toward $90–110 on smaller volume, but qualified-lead cost and close rate improve; the differentiator angle finally gets a real test.
judge on cost per booked estimate and per won job — never CTR/CPC alone; Ad 09 delivery within 72h of the restructure.
183 impressions/90d with 0 calls is an unplugged channel with the highest buyer intent in local services — a healthy suburban profile does 500–2,000+ impressions a month. Verify categories (Paver/Concrete Contractor primary), fill every service with suburb language, 20+ geotagged before/after photos, weekly job-completion posts — and ask all 15 won customers for a Google review this month (12 already sit in "Review Requested"; personal text from Scott + GHL automated ask). Reviews are the ranking lever AND the trust signal the paid funnel is missing.
8–12 reviews in 30 days; GBP impressions ×10–20 by Oct; first 2–8 calls/month from Maps — leads that historically close at 30–50%.
GBP impressions, calls, directions, website clicks weekly; review count; GBP-source opportunities in GHL.
The 91%-close channel has no system. Add a referral step to the post-job workflow: Scott hands every customer a card — "$200 off for your neighbor, $100 credit toward your reseal" — plus door hangers on the 5 nearest homes after each job ("We just restored your neighbor's pavers"), a yard sign week, and a reseal-due date tagged on every won customer (3–5 yr cycle = the 2029 pipeline). Paver jobs cluster by subdivision; one finished driveway is a neighborhood ad.
2–6 referral leads/quarter at ~80–90% close ≈ $3–8K/quarter at under $150/job acquisition cost, compounding.
referral-source opportunities in GHL per month; card/hanger redemptions.
15 posts/week across five near-zero-reach platforms is production without distribution. Council consensus: stop TikTok and YouTube as destinations (repurpose-only), cut FB/IG to 2–3 strong posts/week anchored on real job completions, add the missing weekly GBP post, and spend the freed hours where Tampa homeowners actually are: local Facebook groups, Nextdoor, and Scott's personal profile — the network that already produced 71% of revenue. The content library keeps its value in ads, the site, and follow-up sequences.
same production cost buys real local reach; measurable within 30 days via GHL source tracking.
leads by source; reach on shared/group posts vs page posts.
Not an SEO campaign — three fixes: (a) investigate the ~93% GSC impression collapse first (Coverage report, sitemap, noindex/canonicals on the GHL page builder — GHL sites are a known SEO weak point; if the site got deindexed, nothing else matters); (b) a dedicated Lutz paver-cleaning page with real content to convert 645 waiting impressions at position 11; (c) rewrite the "paver sealing" title/meta ranking ~#3 with zero clicks — and if that snippet is broken, all 33 page-1 snippets probably underperform. Then one honest cost-guide page for the 324-impression pricing cluster.
first meaningful organic lead flow: 20–60 clicks/month by Oct (from ~6 today); indexing fix could restore visibility in 2–4 weeks if technical.
GSC Coverage status now; clicks and page-1 query count monthly.
Sealing can't cure in summer humidity — Aug–Oct is when fall gets booked and fall books the spring. Replace the dead discount with "reserve your fall sealing date" across ads, GBP, and the calendar's planned Aug 19+ escalation; take deposits under clear written terms; and run a 3-email reactivation on every lead since May (38 unclosed) — "October slots are opening." Set the ceiling with Scott first: how many jobs can he actually complete Sept–Oct? Marketing past capacity is waste.
a booked fall pipeline — 8–12 jobs scheduled by Oct 1 (≈$13–20K) including 3–6 reactivated from the dead-lead pool — instead of a quiet-quarter scramble.
jobs in "Scheduled Job" with fall dates; deposit invoices sent; reactivation reply rate.
Baseline checked live: the site has zero schema markup, zero FAQ content, and no city names in crawlable text — and "best paver sealing company Lutz Land O' Lakes FL" surfaces 8 competitors with Restore Paver nowhere in the result set AI assistants retrieve and cite. The fix rides the plan you're already running: items 3 + 6 (GBP, reviews, SEO pages) are ~80% of local AEO. The marginal layer: LocalBusiness + Service + FAQPage schema on the GHL site, FAQ pages built from the verified Educational Library (already question-formatted), a Bing Places listing (ChatGPT retrieves via Bing), citation build-out (Yelp, BBB, Angi, Thumbtack, Houzz — one name, ONE phone number everywhere; the 2551/3444 conflict actively breaks machine entity-matching), and a Nextdoor presence.
within 90 days: appear in the retrieval set for the money queries; first AI-assistant mention for "paver sealing near Lutz"-class prompts; compounding as reviews build.
monthly prompt panel — ask ChatGPT/Perplexity/Gemini the 5 money questions, log mentioned-or-not, position, accuracy; citation count; schema validation.
Prepared by Rod & Staff Media · data pulled live 2026-07-30 from Meta Ads, GoHighLevel, GA4, Google Search Console, Google Business Profile and platform organic APIs. Known gaps: Meta lead counts are Meta-reported (37 instant-form) cross-checked against 43 Meta-attributed CRM opportunities; referral close rate is selection-flattered (entered at estimate stage); GSC query-level rows are sampled by Google. Multi-model council review incorporated. Internal working document — not for client distribution without review.