BSP Master Ads Playbook 2026
Revenue Pipeline War Room: Pre-Evelyn Sprint
🚀 The $6M Math: Weekly Revenue Targets
| Metric | Current | Target | Gap |
|---|---|---|---|
| Weekly Revenue | $57,700 | $115,000 | +$57,300/wk |
| Completed Jobs/Week | ~16 | 23+ | +7 jobs |
| Avg Ticket | $1,200 | $5,000 | Sewer-focused upsell |
| Booking Rate | 73% | 85% | +12% |
🎯 The Six Revenue Levers
| Lever | Current | Target | Revenue Impact | Who |
|---|---|---|---|---|
| 📞 Booking rate | ~73% | 85% | +$420K/year | Ashton |
| 💰 Average ticket | $1,200 | $1,800 | +$600K/year | Techs (upsell ID) |
| ✂ Cut bad ad spend | Voolt/SLP losing | Reallocate to LSA | +$180K/year | Stephanie + Robert |
| 🌐 Google organic leads | ~50/mo | 100/mo | +$720K/year | Robert |
| ⭐ Review velocity | 394+ reviews | 500+ | +$240K/year | Techs |
| 🔄 Repeat customer rate | 25% | 35% | +$360K/year | Everyone |
| TOTAL INCREMENTAL | +$2.52M | |||
🔥 Week of Mar 10: Top 5 Sprint Actions
LSA Strategy: Complete Rebuild for KC Metro
📊 LSA Performance Dashboard (9 months)
| Metric | Value | Notes |
|---|---|---|
| Total Leads | 674 | June 2025 to March 2026 |
| Charged Leads | 499 | Billable contacts |
| Credits Won | 41 | Disputes approved |
| Phone Calls | 605 | Primary lead type |
| Messages | 61 | GMB messaging |
| 90-Day Revenue | $175,809 | From ServiceTitan data |
| 90-Day Cost | $10,581 | Actual spend |
| ROAS | 16.6x | Best of all channels |
🔧 LSA Optimization Actions Completed (Mar 10)
LSA Optimization Log: March 10, 2026
📋 Completion Checklist
| Action | Status |
|---|---|
| Delete 64 duplicate service areas | DONE |
| Deactivate Handyman category | DONE |
| Deactivate Home Inspector category | DONE |
| Deactivate Kitchen Remodeling category | DONE |
| Deactivate Water Damage Service Provider | DONE |
| Deactivate Bathroom Remodeling (low margin) | DONE |
| Deactivate Drain Expert (landscaper work) | DONE |
| Remove 6 far service areas | DONE |
| Enable 24/7 availability | DONE |
| Confirm Maximize Leads bidding active | DONE |
| Set team rule: respond to overnight leads by 7 AM | PENDING |
| Add 4 LSA service categories (Evelyn call) | PENDING |
| Review lead dispute strategy with Evelyn | PENDING |
📈 Expected Impact
💰 Budget Efficiency: Same $4,000/month budget concentrates on higher-quality, serviceable leads. Removing 4 junk categories eliminates unserviceable lead types. Tighter service area stops paying for 40+ min drive-time leads.
🎯 Lead Quality: 100% budget on Plumber category (14/14 services), the highest-margin, highest-volume category. 24/7 availability captures Emergency Eric after-hours leads with less competition.
⭐ LSA Score: Tighter area = faster response = higher ranking. Fewer unserviceable leads = higher booking rate = higher ranking. 7 AM response rule protects responsiveness score.
Lead Source ROI Report: Every Dollar, Every Source
💰 The ROAS Table: 90-Day ServiceTitan Data
| Source | Jobs | Revenue | 90d Cost | Cost/Job | ROAS | Verdict |
|---|---|---|---|---|---|---|
| ⭐ Google LSA | 124 | $175,809 | $10,581 | $85 | 16.6x | 🚀 GROW |
| ✅ Service Direct | 79 | $112,047 | $24,320 | $293 | 4.6x | ✅ KEEP |
| 🌐 Google Organic | 68 | $78,903 | $0 | $0 | Free | 🚀 GROW |
| 🔄 Existing Customer | 95 | $293,075 | $0 | $0 | Free | ✅ KEEP |
| 🟡 Service Local Pro | 25 | $25,567 | $19,500 | $780 | 1.3x | 👀 WATCH |
| 🔴 Networx | 8 | $20,494 | $12,999 | $1,625 | 1.6x | ✂ CUT |
| 🔴 Voolt | 3 | $3,975 | $9,750 | $3,250 | 0.4x | ✂ CUT |
| 🟠 Goodzer | 0 | $0 | $13,000 | ∞ | 0.0x | ⏰ 30-DAY TRIAL |
💰 Budget Reallocation Plan
| Source | Current/Mo | New/Mo | Change |
|---|---|---|---|
| ⭐ Google LSA | $3,527 | $7,000 | +$3,473 |
| 🎯 Google Ads Search (NEW) | $0 | $3,000 | +$3,000 |
| ✅ Service Direct | $8,667 | $8,667 | No change |
| 🟡 Service Local Pro | $6,500 | $6,500 | Under review |
| 🟠 Goodzer | $4,333 | $4,333 | 30-day trial |
| 🔴 Voolt | $3,250 | $0 | -$3,250 ✂ |
| 🔴 Networx | $4,333 | $0 | -$4,333 ✂ |
| TOTAL | $30,610 | $29,500 | -$1,110/mo savings |
If Goodzer fails trial: savings jump to $5,443/mo. If SLP also cut: total savings $11,943/mo.
🚨 Service Direct Deep Dive: Fixing the Waste
791 leads analyzed. 602 were BSP leads. 55% of billable cost ($27,935) goes to leads that never book:
- 78 missed calls = $11,105 wasted. SD billed for leads BSP never answered.
- 105 "Couldn't Service" = $14,890 wasted. SD sends HVAC, backflow, out-of-area leads.
Fix: (1) Enable SD "business hours only" filter or set overflow routing. (2) Remove non-plumbing categories in SD dashboard. (3) Tighten zip codes. (4) Email SD rep about campaign filters.
👉 Click-by-Click Action Steps
Google Ads Conversion Tracking Fix Plan
🏢 Account Structure
| MCC ID | 8449092450 |
| Active Account | 7269555791 |
| Canceled | 5822122013 (CANCELED, ignore) |
| Deactivated | AW-404985988, AW-242993149 (both deactivated) |
🔴 Phase 0: Conversion Action Cleanup DONE Mar 9
Cleaned 34 conversion actions. Removed duplicates (5 "Calls from ads" variants, 2 "Clicks to call"). Fixed values from $1 to real amounts. Set primary vs secondary goals.
⏱ Phase 1: Offline Conversion Pipeline NOT STARTED
Build: GCLID capture via GTM cookie + hidden form fields, matching script connecting ad clicks to ServiceTitan booked jobs, automated upload to Google Ads API.
⏱ Phase 2: GTM Tag Verification + GCLID NOT STARTED
Verify GTM container GTM-M3L9374 tags fire correctly. Add remarketing tag. Publish as "Nexus v2" version.
⏱ Phase 3: Enhanced Conversions for Leads NOT STARTED
Enable Enhanced Conversions in Google Ads. Configure GTM tag with hashed email/phone. Target 60%+ match rate.
🔄 Phase 4: 3CX Phone Call Integration IN PROGRESS
Stephanie approved Enterprise 3CX upgrade Mar 6 (+$30/mo). LawnPhone (David Kite) processing. API access enables call-to-ad matching.
⏱ Phase 5: Search Campaign Relaunch AFTER TRACKING CLEAN
Create NEW campaigns (not un-pause old): BSP: Sewer Repair, BSP: Water Heater, BSP: Drain Cleaning, BSP: Emergency, BSP: Gas Line. Manual CPC first, switch to Maximize Conversions after 15 conversions, then Target CPA.
Negative keyword list: DIY, how to, jobs, salary, wholesale, parts, training, school, YouTube, reddit, amazon, home depot, lowes, rental.
📊 Expected Timeline
| When | Milestone |
|---|---|
| Week 1 ✅ | Conversion values corrected, auto-tagging confirmed |
| Week 2 | Offline conversion pipeline live, GCLID capture deployed |
| Week 3 | Enhanced Conversions live, form submissions traced to keywords |
| Week 4 | New Search campaigns launched with clean tracking |
| Month 2 | 15+ conversions, switch to Maximize Conversions bidding |
| Month 3 | Target CPA active, $75-150 CPA, full attribution, 5-8x ROAS |
Attribution Forensic Audit: The $248K Black Hole
🔍 Root Causes Identified
- No GCLID capture: Website forms don't capture the Google click ID, so form leads can't be matched to ad clicks.
- 3CX disconnected: Phone system has no integration with Google Ads. Phone call leads (the majority) are invisible to ad attribution.
- ServiceTitan campaign tagging: Dispatch tags "Google" for both organic and paid. No distinction between LSA, Search, and organic.
- Multiple deactivated accounts: AW-404985988 and AW-242993149 may have been running parallel campaigns, fragmenting data.
- Conversion action mess: 34 actions with duplicates, wrong values, removed actions still polluting. (Phase 0 FIXED this.)
🎯 The Fix: Nexus Attribution Engine
Automated script running daily at 6:00 AM CT that: (1) Scans every new ServiceTitan job, (2) Cross-references with Google Ads call/click data, (3) Auto-tags the correct lead source, (4) Uploads offline conversions to Google Ads with real revenue values.
Result: Every dollar maps to a booked job. Smart Bidding gets real data. CPL drops 30-50% within 90 days.
Project BRIGHT LIGHT: Change History Investigation
👤 Actions by User (Last 30 Days)
| User | Actions | Creates | Updates | Removes | Top Resources |
|---|---|---|---|---|---|
| kalen@callbrightside.com | 3,836 | 3,654 | 1 | 181 | CAMPAIGN_CRITERION (3,835) |
| russell.satterfield@callbrightside.com | 3,527 | 126 | 7 | 3,394 | CAMPAIGN_CRITERION (3,505) |
| robert.dove@callbrightside.com | 105 | 10 | 2 | 93 | CAMPAIGN_CRITERION (103) |
| audrey.grant@callbrightside.com | 101 | 33 | 68 | 0 | ASSET (101) |
| ashton.king@callbrightside.com | 47 | 42 | 5 | 0 | ASSET (41) |
| stephanie@callbrightside.com | 28 | 11 | 8 | 9 | CAMPAIGN_CRITERION (20) |
| Recommendations Auto-Apply | 2 | 1 | 0 | 1 | AD_GROUP_CRITERION (2) |
❓ Questions for Evelyn (Mar 11 Meeting)
- Full Change History: Pull complete history going back to account creation.
- User Email Attribution: Has russell.satterfield@outlook.com or any unknown email made changes?
- Deactivated Accounts: AW-404985988 and AW-242993149, were these under the same MCC?
- Canceled Account 5822122013: Who created/canceled it? Running parallel campaigns?
- The "3,000+" Figure: Where did this number come from? Confirm count and date range.
- MCC Access History: Which MCC accounts have ever linked to 7269555791?
- Admin Access Timeline: When was each admin added/removed?
⚡ Bulk Operations Detected
Feb 17-21 shows massive bulk activity: 1,933 actions on Feb 20 alone, with batches of 130-142 actions at single timestamps. Suggests automated tools (Google Ads Editor or API scripts). Russell Satterfield removed 3,394 items. Kalen created 3,654 items.
🎯 Conversion Actions (69 Total, Current State)
The account currently has 69 conversion actions. Many are duplicates, REMOVED, or HIDDEN. Phase 0 of the Conversion Fix Plan addressed the most critical ones. Full cleanup requires Evelyn's guidance on which to permanently delete vs archive.
Lead Integrity Investigation: Project BRIGHT LIGHT
🔍 Investigation Tracks
🔴 Track 1: Mystery Phone Numbers
Two unidentified phone numbers (913-358-0252 and 913-358-0380) appear in account history. Origin unknown. Could be old tracking numbers, could be redirecting leads. Ask Evelyn to check if these appear in LSA or Google Ads call forwarding configuration.
🟡 Track 2: Russell Satterfield Activity
3,527 changes in 30 days, primarily 3,394 REMOVES of CAMPAIGN_CRITERION items. This is the second-highest activity user. Who is Russell? When was access granted? What was being removed and why?
🔵 Track 3: Deactivated Google Ads Accounts
AW-404985988 and AW-242993149 are both deactivated. Were they running campaigns in parallel with the active account? Were leads flowing to these accounts instead of BSP? Evelyn can access internal tools to check history.
🔷 Track 4: Canceled Account 5822122013
A separate Google Ads account 5822122013 was CANCELED. Who created it? When? Was it running campaigns that should have been in the main account? Could it have been billing BSP?
🛡 Immediate Protection Actions
Brand Asset Living System: Audrey's Design Intelligence Hub
🎨 Brand Identity Quick Reference
| Element | Value | Usage |
|---|---|---|
| Business Name | Bright Side Plumbing | Full name on all official materials |
| Website | callbrightside.com | All CTAs and references |
| Phone | (913) 963-1029 | Primary booking line (Ashton) |
| Address | 12022 Blue Valley Pkwy, Overland Park, KS 66213 | CORRECT address (not 12022 Blue Valley Pkwy) |
| Google Rating | 4.9 stars, 394+ reviews | Social proof in all ads |
| Heritage | 5th-generation master plumber | CORRECT: fifth (not fourth) |
| Owner | Kalen Barker, President/Owner | Trust element in content |
📸 Photo Guidelines for Ads
- Before/after photos: Techs should capture on every sewer, water heater, and unusual job
- Team photos: Uniformed techs with branded trucks for LSA and GMB
- Equipment shots: Camera equipment, hydro jetting, trenchless tools
- Customer testimonials: Video clips from satisfied customers (with permission)
- Avoid: Stock photos, competitor imagery, low-resolution images
📝 Ad Copy Guidelines
- Always lead with sewer services: "Sewer Repair Specialists" not "General Plumbing"
- Include trust signals: "5th-Generation Master Plumber" | "4.9 Stars, 384+ Reviews"
- Emergency language: "Same-Day Service" | "24/7 Emergency Response" | "We Come When Others Won't"
- Revenue-focused CTAs: "Call Now for Free Estimate" | "Book Online, Save $50"
- No em dashes: Use commas, periods, colons, semicolons instead
- Service area: "Serving Johnson County, KC Metro, and surrounding areas"
✅ DO:
• Every ad mentioning "camera inspection" pairs with "understand your options" language
• Use "save" instead of "spend" in description copy
• Position BSP as diagnostic advisor, not repair vendor
• Include "repair, trenchless, or replacement" as a standard phrase in descriptions
• Lead with education: "Free inspection shows the real problem"
❌ DON'T:
• Generic "Call now for sewer repair" with no diagnostic angle
• Fear-based urgency without an educational counterpoint
• Positioning as "we fix things" without "we help you decide"
"Don't wait, call today."
"Early diagnosis saves thousands. Schedule your free inspection."
Monday Standup Playbook: Week of March 10
📊 Revenue Sources (6-Month ServiceTitan Data)
| Source | Jobs | Revenue | Avg Ticket |
|---|---|---|---|
| 🔄 Existing Customers | 157 | $293,075 | $3,085 |
| 📍 Google LSA | 200 | $175,809 | $1,418 |
| 📢 Service Direct | 106 | $112,047 | $1,418 |
| 🔎 Google Organic | 96 | $78,903 | $1,160 |
| 📢 Service Local Pro | 39 | $25,567 | $1,023 |
💡 Existing customers average $3,085/job, the highest of any source. Every great job creates the next big-ticket referral.
🛠 Action Items by Role
🛠 Technicians: The Secret Weapon
- Write detailed job notes after EVERY job: What did you find? What did the customer say? Even 2-3 sentences is gold. These notes become blog content, training material, and competitive intelligence.
- Take before/after photos: Especially sewer lines, water heaters, unusual finds. Photos increase Google review conversions by 40%.
- Look for the REAL problem: Customer calls for slow drain? Check the main line. $300 job becomes $3,000+ job.
- Ask every happy customer for a Google review: "If you were happy with the work, would you mind leaving us a Google review?" Every 10 reviews = ~5% more calls.
💰 Math: 3 extra detailed notes/week per tech = 2 more Google leads/month = $28,800 more revenue/year PER TECH.
📞 Ashton, Dispatch: The First Impression
- Ask every new caller: "How did you hear about us?" Then pick matching campaign in ServiceTitan. This saves $2,000+/month by cutting ads that don't work.
- Write detailed booking notes: More detail = better tech prep = bigger tickets (+$200 avg).
- Fill every open slot: 1 extra job/day = $6,000/week = $312K/year.
- Follow up on missed/abandoned calls within 1 hour: 110 abandoned inbound calls in 6 months. Recovering 20% = ~22 extra jobs.
🤖 Robert: Digital Intelligence & Automation
- Build and deploy the Attribution Engine: Automated nightly scan solving the $248K attribution black hole.
- Launch Field Notes Intelligence Engine: Turn tech notes into content, training, competitive intel. 10x content output, zero extra work from anyone.
- Deliver weekly intelligence reports: Automated Nexus reports: revenue by source, booking trends, content performance, competitor movements.
📈 Kalen & Stephanie: Strategy & Growth
- Review lead source ROI weekly: Dashboard is live. Cut what's losing money (Voolt 0.4x). Double down on winners (LSA 16.6x).
- Google Ads call tracking: Set up forwarding numbers to unlock real ROAS data.
🔮 Field Notes Intelligence Engine: The Special Sauce
Every tech's job notes become four things automatically:
| Output | Without Intel | With Intel |
|---|---|---|
| Blog posts/month | 0-1 (generic) | 8-12 (from real jobs) |
| Google organic traffic | Growing slowly | 2-3x within 6 months |
| Content creation cost | $500-2,000/post | $0 (AI + field notes) |
| Ad copy relevance | Generic industry language | Real KC customer language |
| New tech training | Weeks of shadowing | Structured guides from real jobs |
| Competitive moat | None (anyone can copy) | Impossible to replicate |