Bright Side Plumbing is a $3M/year company spending $35,000/month on marketing at $200 cost per lead. The target is $6M. With an 80% booking rate, the constraint is lead volume, not close rate.
At $200 CPL, doubling revenue to $6M through brute force requires doubling marketing spend to $70,000/month ($840,000/year). That puts marketing at 14% of revenue -- unsustainable and fragile.
This strategy delivers $6M through channel diversification, CPL reduction, conversion optimization, and compounding organic growth. The target: 350+ leads/month at $75-90 blended CPL on $35,000-$45,000/month in marketing spend.
| Metric | Current State | 6-Month Target | 12-Month Target |
|---|---|---|---|
| Annual Revenue | $3,000,000 | $4,500,000 | $6,000,000+ |
| Monthly Revenue | $250,000 | $375,000 | $500,000+ |
| Marketing Spend | $35,000/mo | $38,000/mo | $42,000/mo |
| Cost Per Lead (Blended) | $200 | $120-140 | $75-90 |
| Total Leads/Month | ~175 | ~285 | ~350+ |
| Booking Rate | 80% | 80% | 82% |
| Jobs/Month | ~140 | ~228 | ~287 |
| Average Ticket | ~$1,786 | ~$1,900 | ~$2,000 |
| Organic Share of Leads | ~2% | 12-15% | 30-40% |
| Google Reviews | 384+ | 450+ | 500+ |
| Website Conversion Rate | ~3% (est) | 5-6% | 7-9% |
| LSA Cost Per Lead | Unknown | $55-70 | $50-65 |
| Quarter | Projected Revenue | Cumulative | Marketing Spend | ROAS |
|---|---|---|---|---|
| Q1 2026 (Apr-Jun) | $825,000 | $825,000 | $111,000 | 7.4x |
| Q2 2026 (Jul-Sep) | $1,050,000 | $1,875,000 | $114,000 | 9.2x |
| Q3 2026 (Oct-Dec) | $1,200,000 | $3,075,000 | $120,000 | 10.0x |
| Q4 2027 (Jan-Mar) | $1,500,000 | $4,575,000 | $126,000 | 11.9x |
Note: Quarterly projections are conservative estimates. Monthly milestone targets (Section below) are stretch goals. The quarterly table accounts for seasonality dips and ramp-up time.
Bright Side can reach $6M annualized revenue by Q1 2027 through:
| Line Item | Estimated Monthly Spend | CPL | Leads/Mo | Revenue Generated |
|---|---|---|---|---|
| Google Ads (PPC) | $18,000-22,000 | $180-220 | 85-100 | $121,000-$143,000 |
| Local Services Ads (LSA) | $3,000-5,000 | $80-120 | 30-50 | $42,840-$71,400 |
| Lead Gen Platforms (Angi, etc.) | $5,000-8,000 | $250-350 | 15-25 | $21,420-$35,700 |
| Social/Other | $2,000-3,000 | N/A | 5-10 | $7,140-$14,280 |
| ClickCease (fraud protection) | $500-800 | N/A | N/A | Waste prevention |
| Metricool (social tool) | $50-100 | N/A | N/A | Social analytics |
| Total | ~$35,000 | $200 | ~175 | ~$250,000/mo |
What is working:
What is leaking:
The gap from $3M to $6M requires an additional $250,000/month in revenue. Here is exactly where it comes from:
| Metric | Current | Optimized |
|---|---|---|
| LSA Monthly Spend | ~$4,000 | $12,000 |
| LSA CPL | ~$100 | $60 |
| LSA Leads/Month | ~40 | 200 |
| LSA Jobs (at 80% booking) | ~32 | 160 |
| LSA Revenue (at $1,786 avg ticket) | $57,152 | $285,760 |
| Net Revenue Gain | +$228,608 |
Adjusted for ticket mix (offline conversions weight toward sewer/water heater): +$85,000-$100,000/month conservatively.
| Timeline | Organic Leads/Mo | Revenue at $1,786 avg ticket |
|---|---|---|
| Month 1-3 | 0-5 | $0-$7,140 |
| Month 4-6 | 15-35 | $21,420-$50,050 |
| Month 7-9 | 40-70 | $57,200-$100,100 |
| Month 10-12 | 80-120 | $114,400-$171,600 |
Conservative month 12 target: 80 organic leads = $114,400/month in attributed revenue.
Current: ~1,000 visitors/month at ~3% conversion = 30 leads from website
Target: ~1,500 visitors/month at 6% conversion = 90 leads from website
Net gain: 60 additional leads/month x 80% booking x $1,786 = +$85,728/month
Conservative estimate accounting for overlap with organic gains: +$50,000/month.
Offline conversion tracking prioritizes high-ticket sewer/water heater leads. Service agreement upselling adds recurring revenue. Technician cross-selling increases per-job revenue.
Target: Average ticket from $1,786 to $2,000 (+12%)
At 250 jobs/month: +$53,500/month
Conservative estimate: +$30,000/month.
Review acceleration generates referrals. Service agreement holders become repeat customers. Win-back email campaigns reactivate dormant customers.
Target: 15-20 additional referral/repeat jobs per month at $2,000 avg ticket.
Conservative estimate: +$20,000/month.
| Source | Monthly Revenue Gain | % of Gap |
|---|---|---|
| LSA Expansion | +$85,000 | 34% |
| Organic/SEO Growth | +$75,000 | 30% |
| CRO (Conversion Optimization) | +$50,000 | 20% |
| Average Ticket Increase | +$30,000 | 12% |
| Referral/Repeat Reactivation | +$20,000 | 8% |
| Total | +$260,000/month | 104% |
Target gap: +$250,000/month. This model over-delivers by 4% to provide buffer for seasonality.
| Channel | Monthly Spend | CPL | Leads/Mo | Booking Rate | Jobs/Mo | Revenue/Mo |
|---|---|---|---|---|---|---|
| LSA (optimized) | $12,000 | $60 | 200 | 80% | 160 | $320,000 |
| Google Ads (PPC) | $10,000 | $130 | 77 | 75% | 58 | $116,000 |
| Organic/SEO | $5,000 | $35 | 100 | 82% | 82 | $164,000 |
| Referral/Repeat | $2,000 | $25 | 60 | 90% | 54 | $108,000 |
| GBP/Maps | $3,000 | $45 | 50 | 80% | 40 | $80,000 |
| Social/Content | $2,000 | $75 | 20 | 70% | 14 | $28,000 |
| Lead Gen (Angi etc.) | $3,000 | $200 | 15 | 65% | 10 | $20,000 |
| Service Agreements | $1,000 | $15 | 30 | 95% | 29 | $58,000 |
| Total | $38,000 | $69 | 552 | 81% | 447 | $894,000 |
$894,000/month x 65% realization (seasonality, cancellations, callbacks) = $581,000/month = $6.97M annualized.
Even at 60% realization: $536,400/month = $6.44M annualized.
| Month | Target Revenue | Target Leads | Target CPL | Key Milestone |
|---|---|---|---|---|
| 1 | $270,000 | 185 | $190 | Diagnostic complete, LSA budget shifted |
| 2 | $290,000 | 200 | $175 | Offline conversions flowing, review program live |
| 3 | $320,000 | 220 | $160 | First organic leads, CRO quick wins deployed |
| 4 | $350,000 | 245 | $145 | LSA ranking improved, 450+ reviews |
| 5 | $380,000 | 270 | $130 | SEO breakeven (organic leads > SEO cost) |
| 6 | $410,000 | 295 | $120 | Blog producing 25+ organic leads/month |
| 7 | $430,000 | 310 | $110 | CRO doubling site conversion, 550+ reviews |
| 8 | $450,000 | 330 | $105 | Google Ads CPL reduced 35% via offline conversions |
| 9 | $470,000 | 340 | $100 | Organic share at 20%+ |
| 10 | $490,000 | 350 | $95 | Service agreement revenue compounding |
| 11 | $510,000 | 360 | $90 | All channels optimized, $6M run rate in sight |
| 12 | $530,000+ | 375+ | $85 | $6M+ annualized. Mission accomplished. |
Local Services Ads is the single most cost-effective paid channel for plumbing companies. The math:
| Channel | Avg CPL (Plumbing) | At $12,000/month spend | Leads Generated |
|---|---|---|---|
| LSA | $50-75 | $12,000 | 160-240 |
| Google Ads (Search) | $130-180 | $12,000 | 67-92 |
| Google Ads (PMax) | $150-250 | $12,000 | 48-80 |
| Angi/HomeAdvisor | $200-350 | $12,000 | 34-60 |
LSA generates 2-4x more leads per dollar than any other paid channel.
Based on the interview discussions, Bright Side's LSA is likely:
| Metric | Estimated Current | Optimized Target |
|---|---|---|
| Monthly Budget | $3,000-5,000 | $12,000 |
| Cost Per Lead | $80-120 | $50-65 |
| Leads Per Month | 30-50 | 185-240 |
| Responsiveness Score | Unknown | 95%+ |
| Review Velocity | ~3-5/month | 10-15/month |
| Service Categories | ~5-8 | 15+ |
| Bidding Strategy | Manual/Maximize | Target CPA (data-driven) |
| Offline Conversions | Not enabled | Enabled via ServiceTitan |
| Reserve with Google | Not enabled | Enabled (instant booking) |
Google's LSA algorithm determines ad placement. Budget is NOT the primary factor. Here are the ranking factors in order of weight:
Google tracks whether calls are answered LIVE when they come in. Not return calls. Live answer rate.
Action items (microsteps):
| Step | Action | Owner | Time | Verification |
|---|---|---|---|---|
| 1 | In ServiceTitan: Settings > Phone Integration > create a new tracking number for LSA calls | Robert + Kalen | 15 min | New number appears in ServiceTitan call log |
| 2 | Set routing: LSA number > ring CSR team (group ring) > if no answer in 10 sec > overflow to dispatch > if no answer in 10 sec > overflow to Kalen's cell | Robert | 20 min | Test call: call the LSA number, verify routing sequence |
| 3 | Research after-hours answering services: get quotes from AnswerConnect, Ruby, and MAP Communications. Compare: cost/month, plumbing experience, script customization, ServiceTitan integration | Robert | 2 hrs | 3 quotes received, comparison table created |
| 4 | Select answering service, set up account, provide custom script: "Thank you for calling Bright Side Plumbing. This is [Name]. How can I help you today?" > capture: caller name, phone, address, service needed, urgency level | Robert + Kalen | 1 hr | Test after-hours call, verify lead appears in ServiceTitan |
| 5 | In LSA Dashboard: check Settings > find "Business Hours" and "Phone Settings" > verify the LSA number matches the new tracking number | Robert | 10 min | LSA dashboard shows correct number |
| 6 | Create weekly monitoring reminder (calendar event): every Monday, check LSA Dashboard > Performance tab > Responsiveness metric. Target: 95%+ | Robert | 5 min | Calendar event created |
Not just total count. RECENCY and CONSISTENCY matter more.
Review Acceleration Program:
| Month | Target New Reviews | Cumulative Total | Method |
|---|---|---|---|
| 1 | 12 | 396 | ServiceTitan auto-request + tech in-field ask |
| 2 | 15 | 411 | Same + QR code on invoices |
| 3 | 18 | 429 | Same + post-job text message with direct link |
| 4 | 20 | 449 | Same + monthly review contest for techs |
| 5 | 22 | 471 | Compounding: more jobs = more review asks |
| 6 | 25 | 496 | 500 reviews within reach by month 6 |
| 7-12 | 25-30/mo | 650+ | 500+ reviews hit month 5-6, compounding beyond |
Technician Review Request Script:
ServiceTitan Automated Review Workflow:
Response Protocol:
While proximity still plays a role, it is no longer the dominant factor:
Every empty field costs ranking:
| Profile Element | Status | Action |
|---|---|---|
| Business name | Complete | Verify exact match: "Bright Side Plumbing" |
| Address | Complete | Verify: 12022 Blue Valley Pkwy, Overland Park, KS 66213 |
| Phone number | Complete | Verify dedicated LSA number routing |
| Service categories | Partial | Expand to 15+ categories (see below) |
| Business hours | Complete | Extend to include emergency/after-hours if applicable |
| Bio/description | Unknown | Rewrite to include all trust signals |
| Photos | Unknown | Upload 10+ professional photos |
| Headshot | Unknown | Professional headshot of Kalen required |
| License verification | Complete | Verify "Google Verified" badge active |
| Insurance verification | Complete | Verify current |
| Background check | Complete | Verify current |
Budget matters only AFTER the above factors are optimized. Higher budget increases impression frequency but cannot override poor responsiveness or stale reviews.
Expand LSA to include every service Bright Side offers, prioritized by revenue:
Priority 1 -- Highest Revenue (allocate 50% of LSA budget):
Priority 2 -- Medium Revenue (allocate 30% of LSA budget):
Priority 3 -- Entry-Level Services (allocate 20% of LSA budget):
Each additional category = more keyword matches = more impressions = more calls.
| Month | LSA Budget | Rationale |
|---|---|---|
| January | $15,000 | Peak: frozen pipes, water heater failures |
| February | $14,000 | Peak: winter demand continues |
| March | $13,000 | Transitioning from peak to shoulder |
| April | $12,000 | Shoulder season |
| May | $10,000 | Slow season (but NEVER pause) |
| June | $9,000 | Slow season |
| July | $10,000 | Summer pickup |
| August | $11,000 | Building toward fall |
| September | $12,000 | Shoulder season |
| October | $13,000 | Pre-winter prep |
| November | $14,000 | Peak: winterization demand |
| December | $15,000 | Peak: holiday emergencies, frozen pipes |
| Annual | $148,000 | $12,333/month average |
Current Core Zone (maintain):
Overland Park, Olathe, Lenexa, Shawnee, Leawood, Prairie Village, Merriam, Mission
Phase 1 Expansion (month 2-3):
Lee's Summit, Blue Springs, Independence (Missouri side -- less competition)
Phase 2 Expansion (month 4-6):
Spring Hill, Gardner, Raymore, Belton (south metro -- growing suburbs)
Phase 3 Expansion (month 7-12):
Evaluate based on data. Expand to zip codes with best ROAS from offline conversions.
This is a competitive differentiator most plumbers do not have enabled.
How it works:
Setup requirements:
Google removed manual disputes in mid-2024 and replaced with an automated credit system.
Protocol:
Common dispute reasons:
| Element | Current State | Impact |
|---|---|---|
| Blog/Learning Center | 21 posts, dead since Nov 2023 | Zero organic lead generation |
| Service pages | ~99 pages (service x location matrix) | Good coverage but quality issues |
| Service area pages | 15 cities covered | Missing 7+ key cities |
| NAP consistency | Schema shows 8110 Carter St, footer shows 12022 Blue Valley Pkwy | Hurting local pack rankings |
| FAQPage schema | Missing on /faqs/ page | Leaving free rich snippets on the table |
| Review schema | Missing AggregateRating on /reviews/ page | Stars not showing in search results |
| Water heater cannibalization | 3 URLs competing: /water-heaters-installation/, /water-heaters/, /water-heater-installation-repair/ | Splitting authority, all 3 rank poorly |
| Homepage title tag | "Bright Side Plumbing Kansas City" (weak) | Poor CTR in search results |
| Meta description | Typo: "Brightside" vs "Bright Side" | Brand inconsistency signal |
| sameAs schema | Only lists Facebook | Missing IG, LinkedIn, Yelp, BBB, YouTube |
| Logo URL | HTTP instead of HTTPS | Mixed content signal |
| 253 posts, 39 followers | Content not distributed or promoted | |
| Technical | 8+ CSS files from Oxygen, HubSpot loads from 5 domains | Potential CWV issues |
Problem: Schema markup shows 8110 Carter St, Overland Park, KS 66204. Footer shows 12022 Blue Valley Pkwy, Overland Park, KS 66213.
Fix: Update the JSON-LD LocalBusiness schema to match the correct address (12022 Blue Valley Pkwy). Verify the same address appears in:
Estimated impact: Local pack ranking improvement within 2-4 weeks.
Problem: Three URLs all targeting water heater keywords:
/water-heaters-installation//water-heaters//water-heater-installation-repair/Fix:
Estimated impact: 50-100% ranking improvement for water heater keywords within 4-8 weeks.
Microsteps: Water Heater URL Consolidation
| Step | Action | Owner | Time |
|---|---|---|---|
| 1 | In Google Search Console: go to Performance > filter by query containing "water heater" > check which of the 3 URLs gets the most clicks and impressions | Robert | 15 min |
| 2 | In Screaming Frog (or Ahrefs/Semrush): check which of the 3 URLs has the most backlinks | Robert | 15 min |
| 3 | The page with most traffic + most backlinks = the KEEPER. Document this decision. | Robert | 5 min |
| 4 | Expand the keeper page to 2,000+ words: add installation costs, repair vs replace guide, tankless vs tank comparison, brand recommendations, FAQ section (6-8 questions), CTA with phone number | Robert | 3 hrs |
| 5 | In WordPress admin: for each of the 2 retiring URLs, install Redirection plugin (or use Rank Math's redirect feature): go to Rank Math > Redirections > Add New > Source URL = retiring page slug > Target URL = keeper page slug > Type: 301 (Permanent) > Save | Robert | 15 min |
| 6 | Find all internal links pointing to the retired URLs: use Screaming Frog's "Inlinks" report or Ctrl+F in WordPress. Update each link to point to the keeper URL | Robert | 30 min |
| 7 | Verify: visit each retired URL in an incognito browser. Confirm it redirects to the keeper page (no 404 errors) | Robert | 5 min |
| 8 | In Search Console: submit the keeper URL for re-indexing via URL Inspection > Request Indexing | Robert | 5 min |
| Total | ~4.5 hours |
Problem: Existing FAQ accordion with real questions but no structured data.
Fix: Implement FAQPage JSON-LD schema wrapping every Q&A pair on the page.
Estimated impact: Rich snippet eligibility within 1-2 weeks. 15-30% CTR increase on FAQ-targeting queries.
Microsteps: Adding FAQPage Schema
| Step | Action | Owner | Time |
|---|---|---|---|
| 1 | In WordPress admin: go to Pages > find the FAQs page > click Edit | Robert | 1 min |
| 2 | In the Oxygen editor: find or add a Code Block at the bottom of the page | Robert | 2 min |
| 3 | Paste the FAQPage JSON-LD script tag (full code provided in Appendix G of this document). Update each question/answer pair to match the actual FAQ content on the page | Robert | 30 min |
| 4 | Save + publish the page | Robert | 1 min |
| 5 | Verify: go to search.google.com/test/rich-results > enter the FAQ page URL > run test > confirm "FAQPage" is detected with green checkmark | Robert | 5 min |
| 6 | If test fails: check for JSON syntax errors using jsonlint.com, fix, re-test | Robert | 10 min |
| Total | ~50 min |
Current: <title>Bright Side Plumbing Kansas City</title>
Recommended: <title>Bright Side Plumbing | Kansas City's Top-Rated Plumber | 24/7 Emergency Service</title>
Current meta description: Contains typo "Brightside"
Recommended: "Bright Side Plumbing serves Overland Park & the KC metro with 24/7 emergency plumbing, sewer repair, and water heater installation. 4.9 stars, 384+ reviews. $50 on-time guarantee."
sameAs to include all social profiles (Instagram, LinkedIn, Yelp, BBB)Service schema to each service pageBreadcrumbList schema site-wideThe Learning Center published ~21 posts, mostly in bulk in mid-2023 and late 2023, then went completely dark until a single post in October 2025. Google rewards consistent freshness signals. A dead blog tells Google this site is not actively maintained.
Publishing cadence: 4-6 blog posts per month (1-2 per week)
Word count target: 1,800-2,500 words per post
Structure: Problem-first content that matches search intent
Content pillars (aligned with customer personas):
| Pillar | Persona Target | Post Frequency | Example Topics |
|---|---|---|---|
| Emergency/Sewer | Emergency Eric/Erica | 2x/month | Sewer backup, burst pipes, emergency response |
| Water Heaters | Renovation Rachel/Ryan | 2x/month | Costs, maintenance, signs of failure, brands |
| Seasonal/Maintenance | Maintenance Mike/Maria | 2x/month | Winter prep, DIY vs pro, maintenance tips |
| Commercial | Business Owner Bob/Barbara | 1x/month | Commercial plumbing, zero-disruption repair |
| Cost Guides | All personas | 2x/month | "How much does X cost in Kansas City?" |
| KC Local | All personas | 1x/month | Local water quality, KC-specific plumbing issues |
Every post includes:
Month 1: Foundation
Month 2: Architecture
Month 3: Content Velocity
Months 4-6: Authority Building
Months 7-12: Compounding
| Action | Frequency | Impact |
|---|---|---|
| GBP posts (completed jobs, tips, offers) | 2-3x/week | Engagement signals, local visibility |
| Photo uploads (team, trucks, before/after) | 4-8/month | Profile freshness, trust |
| Q&A responses | Within 24 hours | Engagement, keyword signals |
| Review responses | Within 24 hours | Review engagement signal |
| Service category updates | Monthly review | Relevance alignment |
| Hours verification | Monthly | Accuracy signals |
| Attribute updates (payments, amenities) | As needed | Completeness signals |
Target 50+ directory listings with consistent NAP:
| Month | Organic Sessions (est) | Organic Leads | Organic CPL | Organic Revenue |
|---|---|---|---|---|
| Baseline | ~200/month | ~2 | $2,500 | $2,860 |
| Month 3 | ~350 | 5-8 | $625-$1,000 | $7,140-$11,424 |
| Month 6 | ~600 | 25-40 | $125-$200 | $35,700-$57,120 |
| Month 9 | ~900 | 55-70 | $71-$91 | $78,540-$99,960 |
| Month 12 | ~1,200+ | 80-120 | $42-$63 | $114,240-$171,360 |
300% growth baseline: 200 sessions to 800+ = 300% achieved by month 8-9.
At $35K/month total marketing spend with an estimated $18,000-22,000 going to Google Ads PPC, the $200 blended CPL suggests significant optimization opportunities.
The problem: If brand and non-brand campaigns run together, blended CPA looks artificially good because brand converts cheaply:
| Scenario | Brand CPA | Non-Brand CPA | Blended CPA | Reality |
|---|---|---|---|---|
| Combined | -- | -- | $45 | "Our CPA is great" (misleading) |
| Separated | $12 | $78 | $45 | "Non-brand needs landing page work" (accurate) |
Action: Separate brand and non-brand into distinct campaigns. Measure each independently.
Recommended structure:
| Campaign | Type | Budget/Month | Target CPA |
|---|---|---|---|
| Brand - Bright Side Plumbing | Search | $1,500 | $15 |
| Emergency Plumbing | Search | $4,000 | $100 |
| Sewer Repair/Installation | Search | $3,000 | $120 |
| Water Heater Install/Repair | Search | $2,500 | $100 |
| Drain Cleaning | Search | $1,500 | $60 |
| General Plumbing | Search | $1,500 | $70 |
| Performance Max (if viable) | PMax | $2,000 | $90 |
| Remarketing | Display | $500 | $40 |
| Total | $16,500 | $82 avg |
Most plumbing Google Ads accounts waste 15-25% of budget on irrelevant queries. Common waste:
Action: Weekly search term report review. Add negatives for any non-converting query spending over $50.
Every ad group should point to a dedicated landing page, not the homepage.
Landing page requirements:
Service-specific landing pages to build:
| Service | Landing Page URL | Primary Keyword |
|---|---|---|
| Emergency Plumbing | /emergency-plumber-overland-park/ | emergency plumber overland park |
| Sewer Line Repair | /sewer-line-repair-kansas-city/ | sewer line repair kansas city |
| Water Heater Install | /water-heater-installation-overland-park/ | water heater installation overland park |
| Drain Cleaning | /drain-cleaning-overland-park/ | drain cleaning overland park |
| Sump Pump | /sump-pump-installation-kansas-city/ | sump pump installation kansas city |
Current gap: Without call tracking, 40-60% of conversions are invisible.
Implementation:
Cost: CallRail starts at $45/month for 5 numbers, $145/month for advanced features.
This is the highest-leverage change for Google Ads performance.
The concept: Feed closed-job revenue data from ServiceTitan back to Google Ads. Google's algorithm then optimizes for leads that actually generate revenue, not just leads that call.
Impact at $35K/month spend:
ServiceTitan setup:
Audience segments:
| Segment | Trigger | Ad Message | Duration |
|---|---|---|---|
| Service page visitors | Visited any service page, no conversion | "Still need a plumber? Book today: $50 on-time guarantee" | 30 days |
| Form abandoners | Started form, didn't submit | "Finish booking: 24/7 emergency service, same-day response" | 14 days |
| Blog readers | Read 2+ blog posts | "Ready to talk to an expert? Free estimates: (913) 963-1029" | 60 days |
| Past customers | Customer list upload from ServiceTitan | "Time for your annual plumbing inspection? $49 special" | 365 days |
Budget: $500/month
Expected CPL: $25-40 (remarketing audiences convert at 3-5x higher rates)
| Channel | % of Budget | Monthly | CPL Target | Primary Role |
|---|---|---|---|---|
| LSA | 35% | $12,000 | $55-70 | Volume driver, lowest CPL |
| Search (Non-Brand) | 30% | $10,500 | $100-130 | High-intent capture |
| Search (Brand) | 4% | $1,500 | $10-15 | Brand protection |
| Performance Max | 12% | $4,000 | $80-100 | Broad reach + discovery |
| Remarketing | 4% | $1,500 | $25-40 | Re-engagement |
| SEO/Content | 15% | $5,000 | $30-50 (by month 12) | Organic growth engine |
| Total | 100% | $34,500 |
CRO makes every other channel more efficient. Every dollar spent on ads, every blog post published, every GBP click -- CRO makes all of it convert better.
Required elements:
Remove from above the fold:
Section 1: The 5 Bright Side Guarantees (with icons)
Section 2: Services Grid (with links to service pages)
Section 3: Before/After Gallery (3-4 project showcases)
Section 4: Review Widget (live Google reviews)
Section 5: Service Area Map (interactive)
Section 6: "Why Bright Side" (differentiators)
Section 7: Footer CTA (repeat)
Every service page should follow this conversion-optimized template:
Current state (estimated): Multi-field form with potential for high abandonment.
Optimized form:
Why this works:
For plumbing, phone calls drive 40-60% of leads. Every page needs:
click_tel)Tool: Microsoft Clarity (free)
Microsteps: Clarity Installation via GTM
| Step | Action | Owner | Time |
|---|---|---|---|
| 1 | Go to clarity.microsoft.com > Sign up (free) > Create project named "Bright Side Plumbing" > URL: callbrightside.com | Robert | 5 min |
| 2 | After project creation: click "Setup" > select "Google Tag Manager" > copy the Clarity Project ID | Robert | 2 min |
| 3 | Log into GTM (container GTM-W8DXXJLT if using existing) > Tags > New | Robert | 1 min |
| 4 | Tag Configuration: select "Custom HTML" > paste the Clarity tracking script (Clarity provides this) | Robert | 2 min |
| 5 | Triggering: select "All Pages" (fire on every page) | Robert | 1 min |
| 6 | Name the tag: "Clarity - Heatmap Tracking" > Save | Robert | 1 min |
| 7 | Click "Submit" in the top right > name the version "Added Clarity Heatmap" > Publish | Robert | 2 min |
| 8 | Verify: visit callbrightside.com > right-click > View Source > Ctrl+F "clarity" > confirm script is present | Robert | 2 min |
| 9 | Wait 24 hours > log into Clarity > confirm sessions are recording (should see 10+ sessions within first day) | Robert | 1 min |
| Total | ~17 min |
What to look for:
Review cadence: Weekly, minimum 20 session recordings reviewed.
| Test # | Month | Element | Hypothesis | Expected Lift |
|---|---|---|---|---|
| 1 | 1 | Homepage headline | "5th-Gen Master Plumber" vs current headline | 15-25% CTR |
| 2 | 1 | Form fields | 3-field vs current form | 30-50% completions |
| 3 | 2 | CTA button copy | "Get Free Estimate" vs "Call Now" | 10-20% clicks |
| 4 | 2 | Trust bar placement | Above fold vs below fold | 10-15% conversion |
| 5 | 3 | Phone number size | Current vs 2x larger | 15-25% call volume |
| 6 | 3 | Service page layout | Current vs optimized template | 20-30% conversion |
| 7 | 4 | Sticky mobile CTA | Current vs sticky bottom bar | 25-40% mobile calls |
| 8 | 4 | Before/after gallery | With gallery vs without | 10-20% engagement |
| 9 | 5 | Review widget | Static text vs live widget | 10-15% conversion |
| 10 | 5 | Pricing transparency | Hidden pricing vs ranges shown | 15-25% conversion |
| 11 | 6 | Chat widget | With chat vs without | 20-40% total leads |
| 12 | 6 | Exit-intent popup | With popup vs without | 5-10% lead recovery |
253 posts, 39 followers. That follower-to-post ratio (0.15 followers per post) is one of the worst possible signals. Content exists but reaches nobody.
Week 1-2: Profile Overhaul
Week 3-4: Content Cadence Established
Month 2: Engagement Machine
Month 3: Growth Amplification
Target: 39 followers to 500+ in 90 days, 1,500+ in 6 months.
| Pillar | Post Type | Frequency | Goal |
|---|---|---|---|
| Before/After | Carousel or Reel | 2x/week | Showcase quality work |
| Tips & Education | Reel or Static | 2x/week | Build authority |
| Team & Culture | Story or Post | 1x/week | Humanize the brand |
| Reviews & Testimonials | Story or Post | 1x/week | Social proof |
| Behind-the-Scenes | Story or Reel | 1x/week | Transparency |
Facebook remains the #1 social platform for homeowner demographics (35-65 age range).
Posting cadence: 3-4x/week
Content mix:
Facebook-specific tactics:
YouTube is the second largest search engine. Plumbing is inherently visual.
Content types:
Target: 1-2 videos per month, optimized with keywords in title and description.
Nextdoor is the most underutilized channel for home services. Neighbors recommend plumbers to neighbors.
Business page optimization:
Organic strategy:
Paid strategy (Nextdoor Ads):
Connect blog content to social distribution using Metricool:
This ensures every blog post gets 5+ social touchpoints without manual posting each time.
ServiceTitan is the central nervous system for Bright Side's operations. Connecting marketing to ServiceTitan creates closed-loop attribution.
| Source | Tracking Number | ServiceTitan Campaign Tag |
|---|---|---|
| Google Ads | (913) XXX-0001 | google_ads_ppc |
| LSA | (913) XXX-0002 | google_lsa |
| Organic | (913) XXX-0003 | organic_seo |
| GBP | (913) XXX-0004 | google_business_profile |
| (913) XXX-0005 | facebook_social | |
| Direct/Website | (913) XXX-0006 | website_direct |
| Referral | (913) XXX-0007 | referral |
ServiceTitan Review Management:
Target: Capture reviews from 8-12% of completed jobs (industry best practice).
Microsteps: ServiceTitan Review Automation Setup
| Step | Action | Owner | Time |
|---|---|---|---|
| 1 | In ServiceTitan: navigate to Settings > Communications > Customer Notifications | Robert + Kalen | 5 min |
| 2 | Find "Review Request" notification type > click Edit (or create if not existing) | Robert | 5 min |
| 3 | Set Trigger: "Job Status changed to Completed" | Robert | 2 min |
| 4 | Set Delay: "2 hours after trigger" (gives customer time to inspect work) | Robert | 2 min |
| 5 | Set Channel: SMS (primary). Check "Send email if SMS fails" | Robert | 2 min |
| 6 | Customize template text: "Hi {customer_first_name}, thanks for choosing Bright Side Plumbing! {technician_name} mentioned everything went well today. Would you take 30 seconds to share your experience? Your feedback helps other KC homeowners find reliable plumbing: {google_review_link}" | Robert | 10 min |
| 7 | Set Follow-up: "If no review after 48 hours, send reminder email" with same link | Robert | 5 min |
| 8 | Set Limit: "Maximum 2 messages per job" | Robert | 2 min |
| 9 | Get the Google review direct link: search "Google Place ID finder" > enter "Bright Side Plumbing" > copy Place ID > construct link: https://search.google.com/local/writereview?placeid={PLACE_ID} | Robert | 10 min |
| 10 | Paste the Google review link into the template {google_review_link} field | Robert | 2 min |
| 11 | Send test notification to your own phone to verify formatting and link | Robert | 5 min |
| 12 | Activate the notification | Robert | 1 min |
| Total | ~50 min |
Service agreements create predictable recurring revenue and reduce seasonal valleys.
| Tier | Price | Includes | Target Persona |
|---|---|---|---|
| Basic | $149/year | Annual whole-house plumbing inspection, 15% off all repairs, priority scheduling | Maintenance Mike/Maria |
| Plus | $299/year | Everything in Basic + water heater flush, drain camera inspection, 20% off all repairs | Renovation Rachel/Ryan |
| Premium | $499/year | Everything in Plus + sewer line camera inspection, priority emergency dispatch (2-hour window), 25% off all repairs | Emergency Eric/Erica |
| Month | New Members | Cumulative Members | Monthly Revenue | Annual Revenue |
|---|---|---|---|---|
| 1-3 | 15/month | 45 | $1,744 | $20,925 |
| 4-6 | 25/month | 120 | $4,650 | $55,800 |
| 7-9 | 35/month | 225 | $8,719 | $104,625 |
| 10-12 | 40/month | 345 | $13,369 | $160,425 |
Year 1 total membership revenue: ~$160,000+
ServiceTitan email/SMS blast to past customers:
Target audience: All past customers within 2 years
Estimated reach: 500-1,500 contacts
Expected response rate: 3-5% = 15-75 bookings
Revenue impact: $2,250-$11,250 per campaign
Email 1 (Month 18):
Email 2 (Month 20):
Email 3 (Month 24):
Based on Kalen's input, Bright Side's slow months are:
Channels: Google Ads, Facebook, Email, GBP posts
Offer: Full-house winterization inspection: $149 (normally $249)
Target: All past customers + homeowners in service area
Messaging: "Last year, Kansas City experienced [X] pipe bursts in December. Don't be next."
Projected response:
Timing: November (before holiday cooking season)
Offer: Water heater inspection + flush: $89
Upsell opportunity: 15-20% of inspections reveal units needing replacement ($3,000-$8,000 jobs)
Projected response:
Timing: November-December
Messaging: "Gift yourself peace of mind. Join the Bright Side Protection Plan before winter."
Channel: Email to all past customers + ServiceTitan in-app offer during completed jobs
Target: 50 new members x $225 avg plan = $11,250
| Campaign | Budget | Revenue | ROAS |
|---|---|---|---|
| Winterize Before It's Too Late | $3,000 | $22,350 | 7.5x |
| Water Heater Health Check | $2,000 | $67,120-$87,120 | 33-43x |
| Service Agreement Push | $1,000 | $11,250 | 11.3x |
| Total | $6,000 | $100,720-$120,720 | 16.8-20.1x |
Timing: May (before summer storms)
Offer: Sump pump inspection and testing: $79
Upsell: Backup battery installation, sump pump replacement
Projected response:
Timing: June
Offer: Outdoor faucet repair, sprinkler system check, hose bib inspection: $99
Target: Homeowners with irrigation systems
Timing: May-June
Offer: Whole-house drain cleaning: $249 (normally $349)
Messaging: "Summer barbecue season is coming. Make sure your drains can handle it."
Upsell: Camera inspection reveals sewer line issues ($3,000-$15,000 jobs)
Timing: June (slow month = time to build referral pipeline)
Offer: "Refer a friend, both get $50 off your next service"
Implementation: Unique referral codes in ServiceTitan
| Campaign | Budget | Revenue | ROAS |
|---|---|---|---|
| Sump Pump Season | $2,500 | $45,400-$57,900 | 18-23x |
| Outdoor Plumbing Tune-Up | $1,500 | $9,900 | 6.6x |
| Drain Cleaning Special | $2,000 | $24,900 + upsells | 12.5x+ |
| Referral Bonus Launch | $1,000 | $5,000-$15,000 (long-term) | 5-15x |
| Total | $7,000 | $85,200-$107,700 | 12.2-15.4x |
| Period | Without Campaigns | With Campaigns | Revenue Lift |
|---|---|---|---|
| Nov-Dec (early winter) | $400,000 est. | $500,720-$520,720 | +$100K-$120K |
| May-Jun (early summer) | $380,000 est. | $465,200-$487,700 | +$85K-$107K |
| Annual Valley Lift | +$185K-$228K |
Kalen's business coach is Tommy Mello, founder of A1 Garage Door Service ($200M+ company). This connection is an underutilized asset.
Target: Get Kalen on Tommy Mello's podcast "Home Service Expert" or featured in his content.
Pitch angle: "5th-generation master plumber overcomes nervous system disorder, builds $3M plumbing company from scratch during the pandemic, targeting $6M with zero outside financing."
That is a story Tommy's audience wants to hear. It aligns perfectly with Tommy's message of resilience and scaling home service businesses.
Action: Draft pitch email from Kalen to Tommy's content team. Reference coaching relationship.
If Bright Side hits $6M: Kalen becomes a Tommy Mello success story. Document the journey from day 1 of this strategy through revenue milestone. Package as a case study for Tommy's community.
Marketing value: Exposure to 100,000+ home service business owners who follow Tommy.
If approved: "Kalen Barker is building one of the best plumbing companies in America." - Tommy Mello, A1 Garage Door Service
Social proof from a $200M home services founder is worth more than any other endorsement.
This is Bright Side's single most powerful differentiator. No other plumber in Kansas City can claim 5 generations.
| Asset | Format | Placement |
|---|---|---|
| Homepage hero | Text + photo | Above the fold |
| About page | Full story (health crisis, comeback, founding) | Dedicated page |
| LSA bio | 3-sentence version | LSA profile description |
| Blog author bio | Byline on every post | "Written by Kalen Barker, 5th-Generation Master Plumber" |
| Google Business Profile | Description section | GBP profile |
| Social media bios | 1-line version | Instagram, Facebook, LinkedIn |
| Email signatures | 1-line version | All company emails |
| Vehicle wraps | Tagline | "5th-Generation Quality" |
| Print materials | Featured element | Business cards, door hangers, mailers |
| PR pitches | Lead angle | All media outreach |
| Video content | Origin story video | YouTube, homepage, social |
>
>
>
>
>
| Opportunity | Investment | Expected Return |
|---|---|---|
| Overland Park Chamber of Commerce (maintain membership) | $500/year | Networking, referrals, credibility |
| Local youth sports team sponsorship | $1,000-2,000/season | Brand visibility, community goodwill |
| Habitat for Humanity plumbing volunteer days | Time + materials | PR coverage, team building, community trust |
| KC home show booth | $2,000-5,000/event | Direct leads, brand awareness |
| Local radio spot (96.5 The Buzz or 98.9 The Rock) | $2,000-5,000/month | Broad reach during drive time |
| Partner Type | Value Exchange | Lead Potential |
|---|---|---|
| Real estate agents | Refer clients needing pre-sale inspections; agents refer new homeowners | 5-15 leads/month |
| Home inspectors | Cross-refer when inspections reveal plumbing issues | 3-8 leads/month |
| Insurance agents | Refer policyholders with plumbing claims | 2-5 leads/month |
| Property managers | Ongoing maintenance contracts for rental properties | 5-10 jobs/month |
| General contractors | Plumbing subcontractor for renovation projects | 3-8 jobs/month |
| HVAC companies | Cross-refer complementary services | 2-5 leads/month |
Program: "Bright Side Rewards"
| Referral Outcome | Referrer Gets | New Customer Gets |
|---|---|---|
| Referred customer books a job | $50 Bright Side credit | $25 off first service |
| Referred customer spends $1,000+ | $100 Bright Side credit | $50 off |
| Referred customer spends $5,000+ | $200 Bright Side credit | $100 off |
| 5 successful referrals in a year | Free annual plumbing inspection ($249 value) | -- |
Tracking: Unique referral codes generated in ServiceTitan. Automated email notification when credit is earned.
Marketing: Post-job email with referral offer. Business cards with referral code. "Leave an extra card for a friend" at checkout.
| Priority | Task | Owner | Impact | Hours |
|---|---|---|---|---|
| CRITICAL | Fix NAP inconsistency (schema vs footer address) | Robert | Local pack ranking improvement | 2 |
| CRITICAL | Fix business hours mismatch (schema vs footer) | Robert | Consistency signal | 1 |
| CRITICAL | Begin water heater URL consolidation (identify strongest page) | Robert | Stop keyword cannibalization | 4 |
| HIGH | Add FAQPage schema to /faqs/ page | Robert | Rich snippet eligibility | 2 |
| HIGH | Add AggregateRating schema to /reviews/ page | Robert | Star ratings in search results | 1 |
| HIGH | Fix homepage title tag and meta description | Robert | CTR improvement | 1 |
| HIGH | Fix logo URL (HTTP to HTTPS) | Robert | Mixed content fix | 0.5 |
| HIGH | Update sameAs schema (add all social profiles) | Robert | Brand entity signals | 1 |
| HIGH | Install Microsoft Clarity (heatmaps) | Robert | Begin collecting behavior data | 1 |
| MEDIUM | Fix "bak" typo on water heater page | Robert | Professionalism | 0.5 |
| MEDIUM | Set up GA4 event tracking (if not complete) | Robert | Conversion measurement | 4 |
| MEDIUM | Begin Screaming Frog full site crawl | Robert | Technical SEO baseline | 4 |
| Priority | Task | Owner | Impact | Hours |
|---|---|---|---|---|
| CRITICAL | Audit and expand LSA service categories to 15+ | Robert | More impressions = more calls | 3 |
| CRITICAL | Shift $7,000 from PPC to LSA budget | Robert + Russ | Lower CPL channel gets more budget | 2 |
| CRITICAL | Set up dedicated LSA call routing in ServiceTitan | Robert + Ops | Improve responsiveness score | 3 |
| HIGH | Launch ServiceTitan automated review request | Robert + Ops | Review velocity: target 12/month | 3 |
| HIGH | Create tech review request QR codes for invoices | Robert | Easy review collection in field | 2 |
| HIGH | Present technician playbook to crew | Robert | Review asks + before/after photos | 2 |
| HIGH | Rate all historical LSA leads in dashboard | Robert | Train Google's algorithm | 4 |
| HIGH | Complete water heater URL consolidation + 301 redirects | Robert | Consolidate authority | 4 |
| MEDIUM | Begin keyword baseline in Semrush/Ahrefs | Robert | Establish rankings baseline | 4 |
| MEDIUM | Set up call tracking (CallRail or CTM) | Robert | Channel attribution | 4 |
| MEDIUM | Begin Google Ads audit | Robert + Russ | Identify waste and opportunity | 8 |
| Week | Task | Deliverable |
|---|---|---|
| 5 | Complete Google Ads audit, present findings | Written audit document with recommendations |
| 5 | Publish first 2 blog posts | Posts optimized for target keywords + schema |
| 5 | Enable offline conversion tracking (ServiceTitan > Google Ads) | GCLID matching active |
| 6 | Implement Google Ads restructure (separate brand/non-brand) | New campaign structure live |
| 6 | Publish 2 more blog posts | 4 total posts month 2 |
| 6 | Begin building service-area pages for missing cities | Blue Springs, Independence pages live |
| 7 | Enable Reserve with Google (instant booking via ServiceTitan) | Booking flow active on LSA |
| 7 | Publish 2 more blog posts | 6 total posts month 2 |
| 7 | First offline conversion data flowing to Google | Algorithm learning revenue patterns |
| 8 | Review velocity check: target 12+ new reviews this month | Program working or adjusted |
| 8 | First full monthly report delivered | Dashboard baseline + 30-day comparison |
| 8 | LSA bidding strategy review: switch to Target CPA if data sufficient | Data-driven bidding active |
| Week | Task | Deliverable |
|---|---|---|
| 9 | CRO audit complete: heatmaps analyzed, forms audited | Prioritized fix list by revenue impact |
| 9 | Publish 2 blog posts + launch first A/B test (homepage headline) | Content velocity at 2/week |
| 10 | Implement CRO quick wins: form optimization, sticky mobile CTA | Conversion rate improvement measurable |
| 10 | Build 5 service-specific landing pages for Google Ads | Message match = lower CPC |
| 11 | Complete service area page buildout (all missing cities) | 7 new city pages live |
| 11 | Launch remarketing campaigns | Past visitors re-engaged |
| 12 | 90-day comprehensive report | Before/after proof on all metrics |
| 12 | Months 4-6 scaling plan delivered | Data-backed roadmap for next quarter |
| Effort Required | Low | Medium | High |
|---|---|---|---|
| High Impact | NAP fix, Schema fixes, Title tag fix, Review automation | Water heater consolidation, LSA category expansion, Offline conversions | Google Ads restructure, Blog content engine, CRO overhaul |
| Medium Impact | Typo fixes, sameAs update, Clarity install | Call tracking, Landing pages, Service area pages | Performance Max evaluation, YouTube launch, Membership program |
| Low Impact | Logo HTTP fix | Instagram profile overhaul | Nextdoor strategy, Partnership program |
Priority rule: Start top-left (high impact, low effort) and work toward bottom-right.
Every Monday, 5 numbers and 3 action items. Delivered via automated email and optional 5-minute Loom video walkthrough.
| # | Metric | Source | Why It Matters |
|---|---|---|---|
| 1 | Total leads this week (all channels) | ServiceTitan + Call Tracking | Pipeline health |
| 2 | LSA leads + LSA CPL | Google LSA Dashboard | Lowest-CPL channel performance |
| 3 | New Google reviews this week | GBP Dashboard | Review velocity (LSA ranking factor) |
| 4 | Website conversion rate | GA4 | CRO effectiveness |
| 5 | Blended CPL (total spend / total leads) | Manual calc (automated via dashboard) | Overall efficiency |
Each metric gets an arrow:
| Metric | This Month | Last Month | Change | Target |
|---|---|---|---|---|
| Total Revenue | $XXX,XXX | $XXX,XXX | +X% | $XXX,XXX |
| Total Leads | XXX | XXX | +X% | XXX |
| Blended CPL | $XXX | $XXX | -X% | $90 |
| Marketing Spend | $XX,XXX | $XX,XXX | +/-X% | $38,000 |
| ROAS | X.Xx | X.Xx | +X% | 10x+ |
| Channel | Spend | Leads | CPL | Jobs | Revenue | ROAS |
|---|---|---|---|---|---|---|
| LSA | ||||||
| Google Ads (Search) | ||||||
| Google Ads (PMax) | ||||||
| Organic/SEO | ||||||
| GBP/Maps | ||||||
| Social | ||||||
| Referral | ||||||
| Direct | ||||||
| Total |
| Metric | This Month | Last Month | Baseline | vs Baseline |
|---|---|---|---|---|
| Organic sessions | ||||
| Organic leads | ||||
| Organic CPL | ||||
| Keywords in top 10 | ||||
| Keywords in top 3 | ||||
| Blog posts published | ||||
| New backlinks | ||||
| Google reviews (total) | ||||
| New reviews this month |
| Page | Traffic | CVR Last Month | CVR This Month | Change | Tests Run |
|---|---|---|---|---|---|
| Homepage | |||||
| Emergency Plumbing | |||||
| Sewer Repair | |||||
| Water Heater | |||||
| Drain Cleaning |
3 bullet points maximum:
| Metric | Green | Yellow | Red |
|---|---|---|---|
| Monthly revenue vs target | Within 10% | 10-20% below | >20% below |
| Blended CPL | <$100 | $100-150 | >$150 |
| ROAS | >8x | 5-8x | <5x |
| Marketing spend vs budget | Within 5% | 5-15% over | >15% over |
| Metric | Green | Yellow | Red |
|---|---|---|---|
| Total leads/month | >300 | 200-300 | <200 |
| LSA leads/month | >150 | 100-150 | <100 |
| Organic leads/month (after month 6) | >40 | 20-40 | <20 |
| Booking rate | >78% | 70-78% | <70% |
| Metric | Green | Yellow | Red |
|---|---|---|---|
| Organic sessions growth (MoM) | >15% | 5-15% | <5% |
| Blog posts published/month | 4+ | 2-3 | <2 |
| New Google reviews/month | >15 | 8-15 | <8 |
| Keywords in top 10 | Growing | Stable | Declining |
| Metric | Green | Yellow | Red |
|---|---|---|---|
| Website conversion rate | >5% | 3-5% | <3% |
| Form completion rate | >40% | 25-40% | <25% |
| Mobile bounce rate | <55% | 55-70% | >70% |
| Page load time (LCP) | <2.5s | 2.5-4s | >4s |
Platform: Looker Studio (free)
Data sources:
Tabs:
| Tab | Contents |
|---|---|
| Executive Summary | Revenue, total leads, blended CPL, ROAS, review count |
| Paid Performance | Google Ads + LSA spend, CPL, ROAS by campaign |
| Organic Performance | Sessions, keywords, rankings, blog metrics |
| CRO & Conversion | Site CVR by page, form analytics, call-to-booking rate |
| ServiceTitan Revenue | Revenue by channel, avg ticket, booking rate |
| Weekly Digest | 5 key numbers with trend arrows |
| Channel | Current Spend | Current CPL | Current Leads |
|---|---|---|---|
| Google Ads PPC | $20,000 | $200 | 100 |
| LSA | $4,000 | $100 | 40 |
| Lead Gen (Angi etc.) | $8,000 | $300 | 27 |
| Social/Tools/Other | $3,000 | N/A | 8 |
| Total | $35,000 | $200 | ~175 |
| Channel | New Spend | Projected CPL | Projected Leads | Change |
|---|---|---|---|---|
| LSA | $12,000 | $70 | 171 | +131 leads |
| Google Ads PPC | $12,000 | $150 | 80 | -20 leads |
| SEO/Content | $5,000 | N/A (building) | 0-3 | New channel |
| GBP/Local | $2,000 | $60 | 33 | New tracking |
| Lead Gen (Angi) | $3,000 | $250 | 12 | -15 leads |
| Tools (Clarity, CallRail) | $500 | N/A | N/A | New tools |
| Social/Content | $500 | N/A | 2-5 | Organic focus |
| Total | $35,000 | $117 | ~300 | +125 leads |
Net zero budget change. +125 leads/month. CPL drops from $200 to $117.
The magic is simple: moving $8,000 from high-CPL channels (PPC at $200, Angi at $300) to the lowest-CPL channel (LSA at $70) generates dramatically more leads for the same dollar.
| Channel | Spend | CPL | Leads | Revenue | ROAS |
|---|---|---|---|---|---|
| LSA | $13,000 | $60 | 217 | $310,000 | 23.8x |
| Google Ads (Search) | $10,000 | $120 | 83 | $118,700 | 11.9x |
| Google Ads (PMax) | $3,000 | $100 | 30 | $42,900 | 14.3x |
| SEO/Content | $5,000 | $150 | 33 | $47,200 | 9.4x |
| GBP/Local | $3,000 | $50 | 60 | $85,800 | 28.6x |
| Remarketing | $1,500 | $35 | 43 | $61,500 | 41.0x |
| Social | $1,000 | $100 | 10 | $14,300 | 14.3x |
| Referral Program | $500 | $25 | 20 | $28,600 | 57.2x |
| Lead Gen (Angi) | $3,000 | $250 | 12 | $17,200 | 5.7x |
| Tools & Software | $1,000 | N/A | N/A | N/A | N/A |
| Total | $42,000 | $82 | ~508 | $726,200 | 17.3x |
| Channel | Spend | % of Budget | CPL Target | Expected ROAS |
|---|---|---|---|---|
| LSA | $14,000 | 30% | $55 | 25x+ |
| Google Ads (Search) | $10,000 | 22% | $110 | 13x |
| Google Ads (PMax) | $4,000 | 9% | $90 | 15x |
| SEO/Content | $5,000 | 11% | $40 | 30x+ |
| GBP/Local | $3,000 | 7% | $45 | 30x+ |
| Remarketing | $2,000 | 4% | $30 | 45x |
| Social (Paid + Organic) | $2,000 | 4% | $80 | 15x |
| Referral Program | $1,000 | 2% | $20 | 60x+ |
| Lead Gen (Angi) | $2,000 | 4% | $250 | 5x |
| Tools & Software | $1,500 | 3% | N/A | N/A |
| Seasonal Campaigns | $1,500 | 3% | Varies | 10-20x |
| Total | $46,000 | 100% | $73 | 18x |
| Channel | Monthly Spend | CPL | Jobs (80% booking) | Avg Ticket | Revenue | Break-Even? |
|---|---|---|---|---|---|---|
| LSA | $14,000 | $55 | 204 | $1,786 | $364,344 | YES (26x ROAS) |
| Google Ads | $14,000 | $100 | 112 | $1,786 | $200,032 | YES (14.3x ROAS) |
| SEO/Content | $5,000 | $40 (month 12) | 100 | $1,786 | $178,600 | YES (35.7x ROAS) |
| GBP/Local | $3,000 | $45 | 53 | $1,786 | $94,658 | YES (31.6x ROAS) |
| Remarketing | $2,000 | $30 | 53 | $1,786 | $94,658 | YES (47.3x ROAS) |
| Lead Gen (Angi) | $2,000 | $250 | 6 | $1,786 | $10,716 | YES (5.4x ROAS) |
Every channel breaks even. The question is not if, but by how much. LSA, SEO, and GBP deliver the highest return. Lead gen platforms deliver the lowest.
| Channel | 12-Month Spend | 12-Month Revenue | Net ROI |
|---|---|---|---|
| LSA | $148,000 | $3,500,000 | 23.6x |
| Google Ads | $144,000 | $1,800,000 | 12.5x |
| SEO/Content | $60,000 | $800,000 | 13.3x |
| GBP/Local | $36,000 | $600,000 | 16.7x |
| Remarketing | $18,000 | $400,000 | 22.2x |
| Referral | $9,000 | $300,000 | 33.3x |
| Social | $18,000 | $150,000 | 8.3x |
| Lead Gen | $30,000 | $120,000 | 4.0x |
| Tools/Software | $15,000 | N/A | Infrastructure |
| Seasonal | $12,000 | $200,000 | 16.7x |
| Total | $490,000 | $7,870,000 | 16.1x |
At 65% realization: $5,115,500.
At 70% realization: $5,509,000.
At 75% realization: $5,902,500.
The $6M target is achievable at 76% realization rate on a $490,000 annual marketing investment (8.2% of revenue).
Industry benchmark for home services marketing spend: 8-12% of revenue. This plan sits at the efficient end.
| Week | Title | Target Keyword | Persona | Hub |
|---|---|---|---|---|
| 1 | "What to Do When Sewage Backs Up Into Your Basement" | sewage backup kansas city | Emergency Eric | Sewer |
| 2 | "How Much Does Sewer Line Replacement Cost in Kansas City? (2026 Guide)" | sewer line replacement cost kansas city | Renovation Rachel | Sewer |
| 3 | "5 Warning Signs Your Water Heater Is About to Fail" | water heater failing signs | Maintenance Mike | Water Heater |
| 4 | "Emergency Plumber in Overland Park: What to Expect When You Call" | emergency plumber overland park | Emergency Eric | Emergency |
| Week | Title | Target Keyword | Persona | Hub |
|---|---|---|---|---|
| 5 | "Drain Cleaning Cost in Kansas City: What You'll Actually Pay in 2026" | drain cleaning cost kansas city | Maintenance Mike | Drain |
| 6 | "Why Is My Sewer Backing Up? 7 Common Causes" | why sewer backing up | Emergency Eric | Sewer |
| 7 | "Tankless vs Tank Water Heater: Which Is Right for Your KC Home?" | tankless vs tank water heater | Renovation Rachel | Water Heater |
| 8 | "Is It Time to Replace Your Sump Pump? 6 Signs to Watch For" | sump pump replacement signs | Maintenance Mike | Sump Pump |
| 9 | "How to Winterize Your Kansas City Home's Plumbing (Step-by-Step)" | winterize plumbing kansas city | Maintenance Mike | Seasonal |
| Week | Title | Target Keyword | Persona | Hub |
|---|---|---|---|---|
| 10 | "Trenchless Sewer Repair in Kansas City: Is It Worth the Cost?" | trenchless sewer repair kansas city | Renovation Rachel | Sewer |
| 11 | "Commercial Plumbing Services: What KC Business Owners Need to Know" | commercial plumber kansas city | Business Bob | Commercial |
| 12 | "Water Heater Installation Cost in Overland Park (2026 Price Guide)" | water heater installation cost overland park | Renovation Rachel | Water Heater |
| 13 | "How to Tell If You Have a Slab Leak (And What to Do About It)" | slab leak signs | Emergency Eric | Leak |
| 14 | "The Complete Guide to Garbage Disposal Repair and Replacement" | garbage disposal repair kansas city | Maintenance Mike | General |
Topics continue rotating through all content pillars:
Sewer hub (10 posts): Sewer camera inspection guide, sewer line materials comparison, signs of tree root intrusion, septic vs sewer system guide, sewer smell causes, when to replace vs repair sewer line, sewer line insurance coverage, sewer backup prevention tips, commercial sewer maintenance, emergency sewer repair response times
Water Heater hub (8 posts): Water heater maintenance schedule, anode rod replacement guide, water heater size guide for KC homes, hybrid water heaters explained, water heater noise diagnosis, how long water heaters last, water heater warranty guide, when to repair vs replace
Drain hub (6 posts): Kitchen drain maintenance, bathroom drain hair prevention, hydro jetting explained, drain cleaning frequency guide, natural vs chemical drain cleaners, commercial kitchen drain maintenance
Emergency hub (5 posts): Burst pipe emergency steps, gas leak signs and response, flooding from plumbing failure, emergency plumbing kit for homeowners, how fast should a plumber respond
Seasonal hub (5 posts): Spring plumbing checklist, summer plumbing tips, fall maintenance guide, holiday plumbing survival guide, KC weather and plumbing impact
Cost Guide hub (4 posts): Bathroom remodel plumbing costs, kitchen remodel plumbing costs, pipe replacement costs KC, leak repair costs KC
Local/Community hub (2 posts): Kansas City water quality report analysis, Johnson County plumbing code requirements
Total: 54 posts in year 1. At 1,800-2,500 words each, that is 97,200-135,000 words of original, SEO-optimized, KC-specific plumbing content.
| Attribute | Detail |
|---|---|
| Demographics | Homeowner, 35-60, Johnson County suburbs |
| Trigger | Sewage backup, burst pipe, no hot water, main line break |
| Emotional State | Panic. "This needs to be fixed NOW." |
| Search Behavior | "emergency plumber near me" -- clicks FIRST result, calls immediately |
| Decision Criteria | (1) Who answers? (2) Can they come today? (3) Do they seem trustworthy? |
| Revenue Profile | 25-30% of leads, 50-60% of revenue |
| Average Ticket | $5,000-$15,000 |
| Marketing Priority | #1 -- highest revenue per lead |
| LSA Message | "Same-Day Sewer Repair. 24/7 Emergency. Call Now." |
| Content Focus | Emergency response guides, sewer backup guides, burst pipe guides |
| Attribute | Detail |
|---|---|
| Demographics | Homeowner, 40-65, older home (1950s-1980s), Johnson County |
| Trigger | Whole-house replumb, sewer line replacement, aging infrastructure |
| Emotional State | Cautious. Researching. Big investment decision. |
| Search Behavior | Multiple searches over days/weeks. Reads reviews. Gets quotes. |
| Decision Criteria | (1) Trust/reviews. (2) Clear communication. (3) Licensed master plumber. (4) Warranty. |
| Revenue Profile | 10-15% of leads, 25-30% of revenue |
| Average Ticket | $5,000-$15,000 |
| Marketing Priority | #2 -- long sales cycle but high ticket |
| LSA Message | "5th-Gen Master Plumber. Warranty as Long as You Own Your Home." |
| Content Focus | Cost guides, signs of aging pipes, before/after case studies |
| Attribute | Detail |
|---|---|
| Demographics | Small business owner, 35-60, commercial property, KC metro |
| Trigger | Drain backup, sewer issue, plumbing failure threatening operations |
| Emotional State | Frustrated. Downtime = lost revenue. |
| Search Behavior | "commercial plumber overland park" -- may also ask network |
| Decision Criteria | (1) Work around business hours? (2) Speed. (3) Professional appearance. |
| Revenue Profile | 5-10% of leads, 8-12% of revenue |
| Average Ticket | $2,000-$8,000 |
| Marketing Priority | #3 -- leads to ongoing contracts |
| LSA Message | "Commercial Plumbing. Zero Business Disruption." |
| Content Focus | Commercial services, maintenance contracts, zero-disruption repair |
| Attribute | Detail |
|---|---|
| Demographics | Homeowner (first-time or long-time), 28-55, KC suburbs |
| Trigger | Clogged drain, dripping faucet, running toilet |
| Emotional State | Annoyed but not panicked. Nervous about being overcharged. |
| Search Behavior | "drain cleaning overland park" -- price-sensitive, reads reviews |
| Decision Criteria | (1) Transparent pricing. (2) Friendly. (3) Good reviews. (4) Extras/above-and-beyond. |
| Revenue Profile | 45-55% of leads, 10-15% of revenue |
| Average Ticket | $150-$500 |
| Marketing Priority | #4 -- pipeline feeder, highest lifetime value |
| LSA Message | "Flat-Rate Pricing. No Surprises. 4.9 Stars." |
| Content Focus | Cost guides, DIY vs pro, seasonal tips, first-time customer offers |
| Advantage | Competitors Have This? | Marketing Leverage |
|---|---|---|
| 5th-generation master plumber heritage | NO (extremely rare nationally) | Lead every piece of content with this |
| $50 on-time guarantee (dollar amount) | Rare (most say "prompt service") | Specific dollar amounts build trust |
| Flat-rate by task, not hourly | ~30% of competitors | Eliminates #1 customer fear |
| Lifetime work warranty | <10% of competitors | "Repairs warranted as long as you own your home" |
| $200 clean technician guarantee | Very rare | Specific, memorable, shareable |
| 4.9 stars, 384+ reviews | Some have more reviews, few have 4.9 | Quality > quantity signal |
| KickCharge branding | ~5% of local plumbers | Professional appearance builds trust |
| ServiceTitan operations | ~20% of local plumbers | Operational efficiency advantage |
| Tommy Mello coaching | <1% of local plumbers | National-caliber business strategy |
| Founded during pandemic on profits only | Unique | Authentic underdog story |
| Kalen's comeback story | Unique | Emotional connection no competitor can replicate |
| PHCC + ICC + IAPMO membership | ~15% of local plumbers | Industry credibility signals |
Emergency/Sewer:
Water Heater:
Drain Cleaning:
General:
Subject: It's been a while, [First Name] -- how's the plumbing?
Body:
>
>
>
>
>
>
>
Subject: Kansas City freeze warning: Is your plumbing ready?
Body:
>
>
>
>
>
>
Subject: Save 15-25% on every future repair, [First Name]
Body:
>
>
>
>
>
>
Subject: You saved. Now help a neighbor save too.
Body:
>
>
>
>
>
>
Subject: Quick favor, [First Name]?
Body:
>
>
>
>
>
Caption:
>
>
>
Caption:
>
>
>
>
Caption:
>
>
>
Caption:
>
>
>
Caption:
>
>
>
>
| Week | Post Type | Template |
|---|---|---|
| 1 | Completed project | "Just completed a [service] in [City]. [1-2 sentences about the job]. Call for your free estimate: (913) 963-1029" |
| 2 | Seasonal tip | "[Season] plumbing tip: [tip]. Need professional help? Schedule online or call (913) 963-1029" |
| 3 | Offer/promotion | "[Service] special this month: [offer]. Book by [date]: (913) 963-1029" |
| 4 | Review highlight | "Thank you [Name] for the 5-star review! 'Quote from review.' We're proud to serve KC homeowners." |
| Issue | Impact | Fix | Priority |
|---|---|---|---|
| 8+ CSS files from Oxygen Builder | Render-blocking, increased LCP | Combine/minify CSS, defer non-critical | HIGH |
| HubSpot loads from 5 domains | 5 additional DNS lookups + connections | Preconnect hints, evaluate necessity | HIGH |
| 7+ external script domains | Increased TBT, delayed INP | Defer non-critical scripts, load async | HIGH |
| Hero image via CSS background with JS injection | Delayed LCP | Switch to <img> with fetchpriority="high" | HIGH |
| No explicit image dimensions on some images | CLS shifts | Add width/height attributes | MEDIUM |
| Font loading without display:swap | FOIT causing CLS | Add font-display: swap | MEDIUM |
| Metric | Target | Tool |
|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5 seconds | PageSpeed Insights |
| INP (Interaction to Next Paint) | < 200ms | PageSpeed Insights |
| CLS (Cumulative Layout Shift) | < 0.1 | PageSpeed Insights |
| Total page weight | < 2 MB | Screaming Frog |
| Time to First Byte (TTFB) | < 800ms | WebPageTest |
| Total requests | < 60 | Chrome DevTools |
| Image Type | Format | Max Dimensions | Max File Size |
|---|---|---|---|
| Hero images | WebP (JPEG fallback) | 1920x1080 | 200 KB |
| Before/after photos | WebP | 1200x800 | 150 KB |
| Team photos | WebP | 800x800 | 100 KB |
| Blog images | WebP | 1200x675 | 120 KB |
| Thumbnails | WebP | 400x300 | 40 KB |
| Logo | SVG or PNG | N/A | 20 KB |
| ServiceTitan Status | Google Ads Conversion | Value |
|---|---|---|
| Lead Created | Lead (primary) | $0 (signal only) |
| Job Booked | Booking (secondary) | $0 (signal only) |
| Job Completed | Purchase (primary) | Invoice amount |
| Invoice Paid | Revenue (primary) | Payment amount |
| Week | What Happens |
|---|---|
| Week 1 | Integration enabled, data begins flowing |
| Week 2-3 | First offline conversions appear in Google Ads |
| Week 4-6 | Google algorithm begins learning revenue patterns |
| Week 7-12 | Algorithm optimization visible in lead quality |
| Month 4+ | Full optimization: Google targets high-revenue patterns |
| Metric | Without Offline Conversions | With Offline Conversions | Improvement |
|---|---|---|---|
| Average lead quality score | 6/10 | 8/10 | +33% |
| Revenue per lead | $1,786 | $2,200-2,500 | +23-40% |
| Sewer/water heater lead share | 30% | 45-55% | +50-83% |
| ROAS | 8x | 11-14x | +38-75% |
| Wasted spend on low-value leads | 25% of budget | 10-15% of budget | -40-60% |
At $35K/month: 30% ROAS improvement = $10,500/month in additional revenue from the same spend = $126,000/year.
| Attribute | Detail |
|---|---|
| Size | Large (multi-trade: plumbing, HVAC, electrical) |
| Reviews | 4,000+ Google reviews |
| Strength | Brand recognition, large fleet, 24/7 availability |
| Weakness | Corporate feel, higher prices, less personal |
| Opportunity | Bright Side can outperform on personal touch and master plumber quality |
| Attribute | Detail |
|---|---|
| Size | Medium-large (established KC plumber) |
| Reviews | 2,000+ Google reviews |
| Strength | Long history, strong local presence |
| Weakness | Older brand, less modern marketing |
| Opportunity | Out-content them (blog, social, educational content) |
| Attribute | Detail |
|---|---|
| Size | Franchise (national brand, local owner) |
| Reviews | Varies by location |
| Strength | National brand recognition, franchise marketing support |
| Weakness | Franchise model limits local authenticity |
| Opportunity | 5th-gen master plumber story is more authentic than any franchise |
| Attribute | Detail |
|---|---|
| Size | Small-medium (local) |
| Reviews | 500+ Google reviews |
| Strength | Strong local presence, good reviews |
| Weakness | Limited service range, smaller team |
| Opportunity | Out-scale them with ServiceTitan operations and content engine |
| Attribute | Detail |
|---|---|
| Size | Small-medium (local) |
| Reviews | 384+ Google reviews |
| Strength | Good reputation, reasonable pricing |
| Weakness | Limited online presence |
| Opportunity | Dominate SEO and content where they are absent |
| Factor | Bright Side | A.B. May | Anthony | Mr. Rooter | Ginnings |
|---|---|---|---|---|---|
| Google Rating | 4.9 | 4.7 | 4.6 | 4.5 | 4.8 |
| Review Count | 384+ (Google) | 4,000+ | 2,000+ | 500+ | 500+ |
| Blog Active | Dead (reviving) | Active | Moderate | Franchise content | Minimal |
| Schema Markup | Partial (fixing) | Basic | Basic | Franchise template | None |
| LSA Presence | Yes | Yes | Yes | Yes | Yes |
| 5-Gen Heritage | YES | No | No | No | No |
| Dollar Guarantees | YES ($50 + $200) | Vague | Vague | Franchise standard | None |
| Lifetime Warranty | YES | Limited | 1-year | Franchise standard | Limited |
| ServiceTitan | YES | Unknown | Unknown | HouseCall Pro | Unknown |
| Content Quality | Building | Generic | Generic | Franchise generic | Minimal |
Bright Side's path to dominance: You cannot out-review A.B. May on volume (4,000+ vs 301). But you can outperform them on review quality (4.9 vs 4.7), content depth, personal story, guarantees, and LSA optimization. The goal is not to beat every competitor on every factor -- it is to dominate the factors that actually drive conversions.
| Month | Leads | Jobs (80%) | Avg Ticket | Gross Revenue | Realization (70%) | Net Revenue |
|---|---|---|---|---|---|---|
| 1 | 200 | 160 | $1,786 | $285,760 | $200,032 | $200,032 |
| 2 | 220 | 176 | $1,800 | $316,800 | $221,760 | $221,760 |
| 3 | 245 | 196 | $1,820 | $356,720 | $249,704 | $249,704 |
| 4 | 270 | 216 | $1,850 | $399,600 | $279,720 | $279,720 |
| 5 | 295 | 236 | $1,880 | $443,680 | $310,576 | $310,576 |
| 6 | 320 | 256 | $1,900 | $486,400 | $340,480 | $340,480 |
| 7 | 335 | 268 | $1,920 | $514,560 | $360,192 | $360,192 |
| 8 | 345 | 276 | $1,940 | $535,440 | $374,808 | $374,808 |
| 9 | 355 | 284 | $1,960 | $556,640 | $389,648 | $389,648 |
| 10 | 365 | 292 | $1,980 | $578,160 | $404,712 | $404,712 |
| 11 | 370 | 296 | $2,000 | $592,000 | $414,400 | $414,400 |
| 12 | 380 | 304 | $2,000 | $608,000 | $425,600 | $425,600 |
| Total | $3,971,632 |
Annualized from month 12: $425,600 x 12 = $5,107,200 (conservative)
Month 12 annualized: $608,000 x 0.75 x 12 = $5,472,000
Month 12 annualized: $650,000 x 0.80 x 12 = $6,240,000 (target achieved)
| Scenario | Key Assumptions | 12-Month Revenue |
|---|---|---|
| Worst case | LSA CPL stays at $100, organic delivers only 40 leads/month, no CRO lift | $4,200,000 |
| Conservative | LSA CPL drops to $70, organic delivers 60 leads/month, 25% CRO lift | $5,100,000 |
| Base case | LSA CPL drops to $60, organic delivers 80 leads/month, 50% CRO lift | $5,700,000 |
| Optimistic | LSA CPL drops to $50, organic delivers 100+ leads/month, 100% CRO lift | $6,400,000 |
| Best case | All channels optimized + service agreements + referral program | $7,000,000+ |
The $6M target is achievable in the base-to-optimistic range. Even the worst case delivers 40% revenue growth.
For a plumbing company, the customer journey often involves multiple touchpoints:
Attribution model recommendation: Data-driven attribution (DDA) is now the default for all new Google Ads conversion actions. No minimum conversion threshold for most types. If DDA is unavailable for a specific conversion action, Last-click is the fallback (Position-based was deprecated for new conversion actions in 2023).
| Channel | How It's Tracked | Source/Medium in GA4 |
|---|---|---|
| Google Ads (PPC) | GCLID auto-tagging | google / cpc |
| LSA | LSA dashboard + call tracking | google / lsa |
| Organic Search | Google Search Console | google / organic |
| GBP | UTM on GBP links + GBP call tracking | google / gbp |
| Facebook (Organic) | UTM parameters | facebook / social |
| Facebook (Paid) | UTM parameters + pixel | facebook / cpc |
| UTM on link in bio | instagram / social | |
| UTM parameters | email / campaign | |
| Referral | Referral codes in ServiceTitan | referral / partner |
| Direct | No attribution | (direct) / (none) |
| Nextdoor | UTM parameters | nextdoor / social |
| Event Name | Trigger | Parameters |
|---|---|---|
generate_lead | Form submission (any) | form_type, service_type, page_url |
click_tel | Phone number click | phone_number, page_url, cta_location |
cta_click | Any CTA button click | cta_text, cta_location, page_url |
form_start | First interaction with form | form_type, page_url |
form_abandon | Form started but not submitted within 5 min | form_type, last_field, page_url |
schedule_online | Reserve with Google / online booking | service_type, booking_source |
chat_open | Chat widget opened | page_url |
chat_message | Chat message sent | page_url |
review_link_click | Click on "Leave a Review" link | page_url, source |
scroll_depth | 25%, 50%, 75%, 100% scroll | depth, page_url |
blog_read | Time on blog post > 2 minutes | post_title, post_category |
service_page_view | View of any service page | service_type, city |
emergency_cta | Emergency CTA click | page_url, time_of_day |
membership_interest | Click on Protection Plan page | page_url, referral_source |
| Dimension | Scope | Purpose |
|---|---|---|
service_type | Event | Which service the lead is interested in |
city | Event | Which service area the lead is from |
form_type | Event | Which form was submitted |
cta_location | Event | Where on the page the CTA was clicked |
lead_source | User | Marketing channel that generated the lead |
customer_type | User | New vs returning customer |
campaign_id | Session | Which marketing campaign drove the visit |
| Risk | Probability | Impact | Mitigation |
|---|---|---|---|
| Google Ads CPL increases industry-wide | Medium | High | Diversify into SEO/organic (insulation from ad cost inflation) |
| LSA algorithm changes reduce ranking | Low-Medium | High | Maintain all ranking factors above threshold, diversify channels |
| Competitor launches aggressive marketing | Medium | Medium | Content moat + review velocity + story marketing = defensible position |
| Slow organic SEO results | Medium | Low | Set realistic expectations (months 1-3 = foundation, 4-6 = results) |
| ServiceTitan integration issues | Low | Medium | Test thoroughly before relying on offline conversions for bidding |
| Technician adoption of review/photo program | Medium | Medium | Tie to commission incentives, make process frictionless (QR codes) |
| Seasonal valleys deeper than expected | Low-Medium | Medium | Pre-built seasonal campaigns + service agreement buffer |
| Key employee departure (tech/CSR) | Medium | High | ServiceTitan processes reduce dependency on any single person |
| Negative review event | Low | High | Review response protocol, service recovery process, management escalation |
| Google policy change affecting plumbing ads | Low | High | Diversified channel mix reduces single-platform dependency |
Industry data shows response time is the single biggest predictor of booking rate:
| Response Time | Booking Rate | Revenue Impact |
|---|---|---|
| Under 1 minute | 85-95% | Maximum revenue capture |
| 1-5 minutes | 75-85% | Strong performance |
| 5-15 minutes | 50-65% | Significant drop-off |
| 15-30 minutes | 30-45% | Most leads lost to competitors |
| 30+ minutes | 10-20% | Essentially lost |
| Next day | 5-10% | Nearly zero value |
The math at Bright Side's scale:
If Bright Side generates 300 leads/month and response time averages 15 minutes:
For plumbing, the first contractor to reach the homeowner wins the job 78% of the time. This is especially true for:
Bright Side's advantage: With ServiceTitan's dispatch system + Reserve with Google + dedicated LSA routing + after-hours answering service, Bright Side can consistently be the first responder in every scenario.
Marketing and field operations are not separate functions. Every technician interaction is a marketing touchpoint. The Technician Enablement Program turns every job into a marketing asset.
When: After completing work, while the customer is satisfied
Script: "Hey [name], if you were happy with the work today, it would really help us out if you could leave a quick Google review. It's the number one thing that puts more work on our schedule."
Tool: QR code card handed to customer (links directly to Google review page)
Alternative: Text with direct review link sent via ServiceTitan after job
Metrics:
When: Before starting work and after completing work
How: Phone camera, minimum 2 photos (before + after)
Upload: Text to shared team album or upload to ServiceTitan job record
Quality standards: Good lighting, clear focus, show the problem and the solution
Usage of photos:
When: Any time a customer asks a noteworthy question
How: Quick voice memo or text to a dedicated Slack/Teams channel
Examples:
Marketing value: Each field intelligence report becomes a blog post, FAQ answer, social media post, or email topic. The topics that come from real customer questions outperform generic content because they match actual search intent.
When: While on any job, when a relevant observation occurs naturally
Script: "By the way, while I'm here, I noticed your [observation]. We also do [related service] if you ever want to get ahead of that."
Examples:
Revenue impact: Even a 5% cross-sell rate on 140 jobs/month = 7 additional jobs x $2,000 avg = $14,000/month
Why this matters to marketing: Negative reviews kill LSA ranking faster than anything else. One 1-star review takes 10-20 five-star reviews to offset in the algorithm. Prevention (through consistently excellent service) is the best marketing investment.
| Metric | Reward | Frequency |
|---|---|---|
| Most reviews collected in a month | $100 bonus | Monthly |
| Consistent 4+ reviews/week for 4 weeks | $200 bonus | Rolling |
| Best before/after photo of the month | $50 gift card | Monthly |
| Field intelligence report that becomes a published blog post | $25 gift card | Per occurrence |
| Zero negative reviews in a quarter | $150 bonus | Quarterly |
| Customer mentions technician by name in 5-star review | $25 bonus | Per occurrence |
Annual incentive budget: ~$3,000-5,000 (generates $50,000+ in marketing value through reviews, photos, and content)
Once the $6M target is achieved (projected Q1-Q2 2027), the next phase focuses on:
| Path | Cost | Timeline | SEO Risk | Revenue Impact During Transition |
|---|---|---|---|---|
| KEEP + Optimize | $1,500-$3,000 | 2-3 weeks | Zero -- no URL changes | Zero downtime. Marketing continues uninterrupted. |
| Rebuild (new theme) | $8,000-$20,000 | 6-12 weeks | HIGH -- URL changes, redirect errors | 6-12 weeks of reduced lead flow |
| Rebuild (new platform) | $15,000-$35,000 | 3-6 months | VERY HIGH -- complete re-indexing | Months of pipeline disruption |
Keep + Optimize path:
Rebuild path:
| Factor | Assessment |
|---|---|
| Performance | GOOD -- Oxygen outputs clean HTML/CSS (no jQuery dependency like Elementor). Lighter than most page builders. |
| Customization | EXCELLENT -- full design control, custom CSS/PHP, no theme dependency |
| Plugin compatibility | GOOD -- works with Rank Math, HubSpot, WooCommerce, major plugins |
| SEO output | GOOD -- clean semantic HTML, proper heading structure, schema-compatible |
| Risk if license lapses | LOW-MEDIUM -- Oxygen 4.0+ sites continue to function without active license |
Bottom line: Every dollar spent on a rebuild is a dollar NOT spent on marketing that generates revenue. Optimize what exists. The goal is $6M revenue, not a prettier website.
All industry statistics cited in this document:
| # | Stat | Source | Year |
|---|---|---|---|
| 1 | Plumbing LSA CPL: $25-$75 typical, $69 median | The Media Captain | 2025 |
| 2 | Competitive market LSA CPL: $60-$117 | Accelerate Your Marketing | 2025 |
| 3 | LSA conversion rate: 31% vs 12% PPC | Home Service Direct | 2025 |
| 4 | LSA proximity removed April 2025 | LocalView / eSEO Space | 2025 |
| 5 | Review recency outranks review count in LSA | Boomcycle Digital Marketing | 2026 |
| 6 | Plumbing Google Ads CPC: $10.49 | LocaliQ / WordStream | 2025 |
| 7 | Plumbing Google Ads CPL: $129.02 | WordStream Benchmarks | 2025 |
| 8 | Plumbing Google Ads conversion rate: 7.63% | WordStream Benchmarks | 2025 |
| 9 | Quality Score: ~13% CPC reduction per point | LeadGen Economy | 2025 |
| 10 | QS 10 = 50% CPC discount | (un)Common Logic | 2025 |
| 11 | SEO: $1 returns $19.90 vs $4.40 for paid ads | CI Web Group | 2025 |
| 12 | SEO breakeven: 7-12 months for home services | CI Web Group / Coalmarch | 2025-2026 |
| 13 | Median SEO ROI: 748% | First Page Sage | 2026 |
| 14 | Companies with blogs: 67% more leads monthly | SeoProfy | 2026 |
| 15 | Organic leads convert 30-50% higher than paid | First Page Sage | 2026 |
| 16 | Home services conversion rate: 2-5% avg, 12-16% optimized | Plumbing Webmasters / WebFX | 2025-2026 |
| 17 | 1-second delay = 7% conversion reduction | Aberdeen Group | 2025 |
| 18 | 53% mobile users abandon sites >3 seconds | Google / SOASTA | 2025 |
| 19 | Sites loading 1s = 3.05% conversion, 5s = 0.6% | Portent (100M page views) | 2025 |
| 20 | Above-fold CTAs outperform by 304% | Cube Creative Design | 2025 |
| 21 | Multi-step forms convert 86% higher | LeadGen Economy | 2025 |
| 22 | Phone calls convert 10-12x better than web forms | OneWebCare / Cube Creative | 2025 |
| 23 | 83% homeowners prefer to call contractors | HomeAdvisor | 2025 |
| 24 | Review signals = ~20% of Local Pack ranking | BrightLocal / Whitespark | 2025 |
| 25 | SMS review requests: 38% vs 27% email | Birdeye | 2025 |
| 26 | 88% would use business replying to ALL reviews | BrightLocal LCRS | 2026 |
| 27 | 80% revenue growth for responding to >30% reviews | BrightLocal | 2025 |
| 28 | Offline conversions: 56% higher booking, 69% higher ROAS | Camp Digital (plumbing case study) | 2025 |
| 29 | 51% profit increase, 23% lower CPA with offline conversions | GetNinjas / Google | 2025 |
| 30 | 20% incremental revenue + 30% cost efficiency | Boston Consulting Group / Google | 2025 |
| 31 | 15 conversions/month minimum for Smart Bidding | Optmyzr | 2025 |
| 32 | ServiceTitan: 35% faster response, 28% higher booking | Proven ROI | 2025 |
| 33 | Reserve with Google: free, 24hr activation | ServiceTitan Help Docs | 2025 |
| 34 | 28% of plumbing calls missed, 85% hang up at voicemail | AgentZap / Suzee AI | 2025-2026 |
| 35 | Plumbing booking rate: 30-43% avg, 77% top performers | ServiceTitan Data Report | 2025 |
| 36 | A/B testing: avg 18% conversion lift after 6 months | Heatmap.com / Marketing LTB | 2025 |
| 37 | Heatmap-optimized pages: 14% higher conversion | Heatmap.com | 2025 |
| 38 | Plumbing gross margin: 71% | Financial Models Lab | 2025 |
| 39 | Plumbing CAC: $150-$400, LTV:CAC benchmark 3:1 | Financial Models Lab | 2025 |
| 40 | 4.5-star businesses earn 25% more clicks | BrightLocal | 2025 |
Prepared by Robert Dove | Dove Web Consulting
dovewebconsulting@gmail.com | 913.439.0166
February 27, 2026 (Updated March 2, 2026)
Built specifically for Bright Side Plumbing.
Kalen Barker, Stephanie Barker, and Russ Satterfield.
This document contains proprietary strategy and competitive analysis.
Do not distribute outside of Bright Side Plumbing leadership.