Case Study — Pest Control · Closed-Loop Attribution

How a Texas pest control company nearly doubled new customer acquisition — and built a system that tells them exactly where every customer came from.

Three markets. Four ad channels. Zero visibility into which one was producing customers worth keeping. We built a closed-loop attribution system from scratch. No enterprise software. No data team. Q1 2025 to Q1 2026: 112 new customers became 222.

+98.2%

New customers added — Q1 YoY

+56.2%

Revenue billed — Q1 YoY

$40

Cost per acquired customer

$718

Average LTV — 2024 cohort (mature)

The Client

A Texas pest control company with a genuinely differentiated product

No contracts. Month-to-month service. Transparent pricing. Three markets — Houston, Fort Worth, and Granbury — with a growing fleet of technicians and a culture that treats every customer like a neighbor.

When I came on as CMO, the business was growing. The owner is a natural operator — sharp instincts, relentless energy, genuinely cares about his team and his customers. The product was excellent. The reviews were strong. Word of mouth was working.

But the marketing was running on gut feel. Money was going into Google, Facebook, and Bing. Leads were coming in. And nobody — not the owner, not the team, not the agency that had been running the campaigns — could tell you which dollar of ad spend was producing which customer. The dashboard was green. The revenue was growing. The attribution was a guess.

The Problem

Three specific gaps were costing money the business didn't know it was losing

No closed-loop attribution. The contact form captured a name, email, and phone number. That's it. No UTM parameters. No session data. No channel tagging. Every lead that came in looked identical regardless of whether it came from a Facebook ad, a Google Business Profile click, or a neighbor's recommendation. Of 771 new customers acquired in the prior year, 99.4% had no lead source logged in the CRM — sales reps weren't filling in the source field.

No lead-to-revenue connection. The field service software held all the actual revenue data — jobs invoiced, payments collected, customer subscriptions. But it was completely disconnected from the marketing data. Nobody was matching leads to customers to revenue. The business knew it was making money. It didn't know which marketing decisions were producing that money.

Budget going to the wrong channels. One Facebook campaign was running at 1.04× ROAS — spending $100 to make $104. Barely profitable, not obviously broken, easy to ignore in a green dashboard. Meanwhile a Bing campaign was running at 10× ROAS and being starved of budget because nobody knew it was performing. Same total spend. Wildly different returns. No system to see the difference.

What We Built

A closed-loop attribution system built from scratch — no enterprise software, no data team

01

Instrumented the website

Rebuilt the contact form to capture 39 data points with every submission. Visible fields plus hidden attribution fields that auto-populate before the user hits submit: UTM source, medium, campaign, term, content. Google Click ID. Facebook Click ID. Microsoft Ads Click ID. Landing page. Referrer. Session duration. Pages viewed. Device type. AI source detection for traffic from ChatGPT, Claude, Perplexity, and Gemini. Geographic data from IP. Every form submission fires three integrations simultaneously: creates a lead in BirdEye CRM, appends a row to the attribution database, and sends an email notification to the team.

02

Connected leads to real revenue

Built a Python script — revenue_sync.py — that runs automatically every morning at 6am. It reads every unmatched lead from the attribution database, queries the field service CRM by phone number and name, and writes actual revenue data back to the lead record: customer ID, match confidence, first service date, service type, total revenue collected, subscription status, projected lifetime value. For the first time, every lead record showed not just where the lead came from but whether they became a customer, what they paid, and what they're worth over their lifetime. The loop was closed.

03

Dual attribution: system vs. self-reported

Every lead form includes a 'How did you hear about us?' dropdown. The dashboard compares this against the UTM system attribution. Where they disagree — Facebook Ads claiming a lead the customer says came from a yard sign, Google Business Profile credited to word of mouth — is where the real attribution investigation begins. 168 of 240 all-time leads answered voluntarily. That's a 70% response rate. Word of mouth, yard signs, and Nextdoor — channels completely invisible to digital attribution — account for a meaningful share of self-reported acquisition.

04

Three revenue horizons

Most attribution systems stop at the first transaction. This one tracks three: initial price (first invoice), annual contract value (year 1 recurring services), and projected LTV. Every channel is evaluated across all three. A channel with low initial ROAS might have excellent LTV — or vice versa. Mature customer LTV (2024 cohort): $718 average. A $15 blended customer acquisition cost against $718 LTV is a 47× return — and that number only exists because the database connects spend to revenue.

05

Upsell intelligence

Built an Upsell Opportunities dashboard that cross-references active customer subscriptions against service history to identify which customers are strong candidates for additional services. 406 upcoming appointments in the next 30 days. 300 upsell opportunities identified. 286 unique customers flagged. The system surfaces customers with 12+ months of pest service as termite protection candidates, 6+ month customers for rodent exclusion, 3+ month customers for mosquito program add-ons. The field ops team now walks into every appointment knowing exactly which conversation to have.

06

Live analytics dashboard — 8 views

A multi-tab Streamlit dashboard hosted at a private URL pulls live data from the field service CRM across all three offices, Meta Ads API, Google Analytics 4, Google Search Console, Google Business Profile, CallRail, and the attribution database. Eight tabs: Overview, Advertising, Business Operations, Lead Tracking, Marketing KPIs, Web Analytics, Google Business Profile, Upsell Opportunities. The business owner opens it on his phone. The COO uses it to reconcile her books. The Chief Field Ops Officer texts into it from the field to get operational data in real time.

The Numbers

Year-over-year growth — Q1 2025 vs Q1 2026

All figures pulled directly from FieldRoutes API and Meta Graph API. Not estimates.

MetricQ1 2025Q1 2026YoY Change
Revenue billed $116,805 $182,426 +56.2%
Revenue collected $126,431 $188,951 +49.4%
Invoices processed 902 1,443 +60.0%
Unique customers billed 605 958 +58.3%
New customers added 112 222 +98.2%
Meta ad spend $595 $5,870 +886%

Customer lifetime value by acquisition cohort

2026 cohort is incomplete — most customers haven't reached 12-month mark yet.

CohortCustomersAvg 12-mo LTVMedian LTVStatus
2023 287 $509 $513 Mature
2024 584 $718 $592 Mature
2025 665 $555 $416 Mostly complete
2026 294 $316 $152 Incomplete
Overall 1,830 $562 $419
Attribution Performance

The channels performing best weren't the ones getting the most budget

Google Business Profile converted leads to customers at 66% — 35 converted out of 53 total GBP leads all-time. Organic and direct traffic converted at 63%. Paid Facebook converted at 25%. These numbers don't appear in any platform dashboard. They only exist when you connect form submissions to CRM subscription records.

Meta's self-reported ROAS from customers who said Facebook brought them in: 2.57×. Meta's system-attributed ROAS via UTM/FBCLID: 1.70×. The gap between what customers say and what the pixel says is a 51% difference in attributed revenue. Both numbers matter — and they tell different stories about how Meta should be managed.

One signal nobody expected: AI-ChatGPT is already appearing as a lead source. Real people, real form submissions, traceable back to AI-generated referrals. The channel is small. It won't stay that way.

ChannelAll-Time LeadsConvertedConv. Rate
Organic / Direct 100 63 63%
Google Business Profile 53 35 66%
Facebook Ads 63 16 25%
Email 4 4 100%
AI — ChatGPT / Claude 2 0 In pipeline
The Outcome

Same ad budget. Nearly double the new customers.

The same ad budget that was producing 112 new customers in Q1 2025 produced 222 new customers in Q1 2026. Nearly double. Not by spending more on the same channels. By knowing which channels were working and concentrating resources there.

The 1.04× ROAS Facebook general pest campaign was paused. The Bing campaign at 10× ROAS had its budget tripled. The Google Business Profile — a zero paid acquisition cost channel — was UTM-tagged across all three offices and now converts at 66% all-time, with review automation driving velocity on the Houston listing.

The 2026 business is on pace for approximately $780,000 in billed revenue — up from $650,979 in full year 2025. A 20% year-over-year growth trajectory built on the same operational team, the same service quality, and a marketing system that finally knows what's working.

+98.2%

New customers added Q1 YoY

112 new customers in Q1 2025 → 222 in Q1 2026

+56.2%

Revenue billed Q1 YoY

$116,805 → $182,426 — pulled from FieldRoutes API

$40

Cost per acquired customer

vs. industry average of $150–$300+ for pest control

66%

GBP lead-to-customer conversion

35 converted of 53 GBP leads — highest channel all-time

13×

Annual value ROAS on Meta spend

$1,738 Meta spend → $12,687 year-1 contract value

$718

Average LTV — 2024 cohort (mature)

$15 blended CPA vs. $718 LTV = 47× return

"Waking up to 6 leads gave me about 4 minutes of zero anxiety. It was amazing. Looking at the lead source they seem to be all from Facebook. Stellar job Cameron."

The client — owner, Texas pest control company

What This Means for Your Business

This is a local service business. Not a tech company.

Three markets. A fleet of trucks. A team of technicians. A COO managing the books and a field ops officer running routes. If a pest control company in Texas can build a closed-loop attribution system that connects every Facebook ad click to every invoiced job — your business can too.

The system described in this case study required no enterprise software, no dedicated data team, and no six-figure agency retainer. It required a clear methodology, the right technical architecture, and a CMO willing to do the work of connecting the dots between marketing and revenue.

That's what I build.

This case study is the central example in The Attribution Trap — a book about building closed-loop marketing systems for service businesses. Coming Q4 2026.

Want this built for your business?

The same system that connected every ad dollar to every booked job is available for your service business. It starts with a two-week audit.