- $4,912 in Google Ads spend with zero conversions. Every dollar wasted.
- 6 landing pages getting 770 sessions/month with zero leads — ad black holes eating the budget.
- 11 pages that DO convert at 5–16% prove the model works — city+service pages are the answer.
- Phase 1 (stop the bleeding) takes 2 hours today. Phase 2 (fix site) takes 2 weeks. Phase 3 (scale) starts when conversion rate hits 5%.
Stop the Bleeding — Do Today
No-brainer actions. Every day delayed costs real money. Total: ~2 hours in Google Ads. Zero additional budget required.
This campaign spent $12K at $239 CPA. Benchmark is $65. Every day it runs = ~$174 overpaid per lead. PMax Plumbing runs alongside it at $85 CPA and should absorb the budget.
Steps (Greg or MediaSpark, ~5 min):- Open Google Ads →
448-550-2333account - Campaigns → find "Utah-Plumbing-Search"
- Toggle status to Paused
- Go to Utah-PMAX-Plumbing → increase daily budget by the amount freed from Plumbing Search
- Confirm PMax Plumbing is absorbing spend within 48 hours
Google counts YouTube subscriptions and page views as "conversions." The algorithm optimizes toward video watchers instead of people who need a plumber. This single issue corrupts every campaign's bidding.
Steps (Greg or MediaSpark, ~20 min):- Google Ads → Goals → Conversions → Summary
- Find "YouTube Channel Subscriptions" → Edit → Change to Secondary
- Find "Page View: Book Urgent Repair" → Edit → Change to Secondary
- Find "YouTube Follow-On Views" → Edit → Change to Secondary
- Create NEW Primary conversions:
- "Service Request Submitted" (form submission on contact/booking pages)
- "Phone Call from Ad" (call extension clicks, 60s+ duration)
- "Schedule Service Booking" (booking widget completion)
- Wait 48 hours for Smart Bidding to recalibrate against real signals
AI Max is enabled with minimal delivery. Low delivery + unpredictable behavior = risk of surprise spend spikes that blow the daily budget with no return.
Steps (Greg or MediaSpark, ~3 min):- Google Ads → Campaigns → each active campaign
- Settings → "AI Max" or "Automatically created assets"
- Toggle OFF
- Re-evaluate only after conversion tracking is clean (Phase 2 complete)
$4,912 total spend across 100 search terms with ZERO conversions. Breakdown: $2,415 on competitor names (Smedley, Genuine Comfort, Anytime, etc.), $980 on your own brand name (Golden Rule, Golden Rule Plumbing — you're paying for clicks you should own organically), and $346 on supply/parts searches (HVAC supply, Goodman distribution, etc.).
Steps (Greg or MediaSpark, ~30 min):- Google Ads → Keywords → Search Terms tab
- Sort by cost, descending — see the full list in the Search Terms Deep Dive section
- Create shared negative keyword list: "Golden Rule Negatives"
- Add all competitor names as negatives: Smedley, Genuine Comfort, Anytime, Comfort Systems, SOS, Anderson, Jerry's, Standard Plumbing, Lennox, Royal Plumbing, One Hour, etc.
- Add supply/parts terms: HVAC supply, Goodman distribution, Rheem, HVAC parts, plumbing supply, Daikin, Johnstone supply, carrier
- Apply list to ALL active campaigns
No campaign bids on "Golden Rule" or "Golden Rule Plumbing." Competitors can bid on your brand name and steal traffic for pennies. You're paying for brand awareness through other channels and competitors harvest it at the search level.
Steps (Greg or MediaSpark, ~45 min):- Google Ads → New Campaign → Search → Leads
- Campaign name: "Utah-Brand-Protection"
- Budget: $10/day ($300/month) — brand clicks cost $1–2
- Ad group keywords:
- [golden rule plumbing] (exact match)
- [golden rule heating] (exact match)
- [golden rule hvac utah] (exact match)
- "golden rule plumbing salt lake" (phrase match)
- Write 3 responsive search ads emphasizing: family-owned, 27 years, no surprise fees
- Expected: 30–40% CTR at $1–2 CPC. Cheapest insurance in the account.
Phase 1 Summary — Same Day, ~2 Hours Total
Who does it: Greg Romans or MediaSpark in the Google Ads account (448-550-2333).
Total new spend: $300/month (brand campaign only — everything else is pausing waste).
Expected savings: $1,870+/month in wasted CPA from Plumbing Search pause alone.
Expected CPA improvement: 20–40% within 2 weeks from conversion tracking fix.
Confirmation: Check back in 48 hours — Smart Bidding needs time to recalibrate. CPA should start dropping within 5–7 days.
Fix the Site & Tracking — Week 1–2
Rebuild the broken landing pages and fix the data pipeline. Don't scale spend until conversion rates confirm the foundation works.
/location-utah-urgent-repair — 2,560 sessions, 15 conversions. Iowa pages convert at 13%. This single page is the biggest leak in the funnel. 43% of all Utah ad traffic lands here and bounces.
- Model the rebuild after
/location/utah/north-salt-lake(5.64% conversion, 48s engagement) - Above the fold: Utah phone number (801) 218-2225 as click-to-call button, NOT Iowa number
- Hero section: "Utah's Family-Owned HVAC Experts — No Surprise Fees, Guaranteed"
- Add scheduling widget or form (ServiceTitan booking embed)
- Trust badges: BBB, Google Guaranteed, "Family-Owned Since 1999"
- 3 localized testimonials from Utah customers (pull from GBP)
- Service cards with pricing transparency: "Diagnostic: $49 | AC Tune-Up: $49 | Gold Club: $99/yr"
- Sticky mobile CTA bar (phone + schedule) — 85.5% of ad traffic is mobile
- Duplicate structure for
/location-utah-urgent-repair-plumbing-ppc(409 sessions, same issues)
These pages receive real traffic and produce zero conversions. Every visit is wasted ad spend or wasted organic opportunity.
Steps (Web developer in WordPress, ~2–3 hours):/location-utah-hvac-estimate(194 sessions, 0 conv) → 301 redirect to rebuilt urgent repair page/utah-hvac-system-check(154 sessions, 0 conv) → 301 redirect to rebuilt urgent repair page/sump-pump-inspection-utah(119 sessions, 0 conv) → 301 redirect to/location/utah//utah-pe(114 sessions, 0 conv) → DELETE or redirect to main Utah page/location-utah-urgent-repair-plumbing(102 sessions, 0 conv) → redirect to PPC plumbing page- 5 additional city pages with traffic but 0 conversions → rebuild with city+service model (see #8)
Use Redirection plugin in WordPress for 301s. Check Google Ads to make sure no ads point to the deleted URLs.
Data proves localized pages convert 3–10x better: Kaysville plumbing 16.1%, Eden 15%, North Salt Lake 5.64%. The generic "urgent repair" pages fail because they're not specific to any city or service.
Steps (Web developer or AI-assisted, ~1 hour per page):- Template:
/location/utah/{city}/{service}-services - Priority cities (highest traffic + population): Salt Lake City, Ogden, Layton, Bountiful, Sandy, West Jordan, Provo, Draper
- Each page: city name in H1, local landmarks/neighborhoods, city-specific weather callouts, (801) number prominent
- Services per city: plumbing, HVAC, electrical, drain (4 pages per city)
- Phase 1 batch: top 8 cities × 1 primary service each = 8 pages. Expand to 32 pages in Phase 3.
- Use AI (Claude/ChatGPT) to generate 800–1,200 word content per page. Human review for accuracy.
(801) 218-2225 only appears in body text on /location/utah/. No geo-detection. Utah visitors see Iowa number (515) 393-4526 on every other page, header, and footer. Every misrouted call is a lost lead.
- Option A (Quick): Hard-code (801) 218-2225 on ALL Utah landing pages — header, footer, CTA buttons, mobile sticky bar
- Option B (Better): Add JavaScript geo-detection snippet:
- Use
fetch('https://ipapi.co/json/')to detect visitor state - If Utah → swap all phone number elements to (801) 218-2225
- If Iowa → keep (515) 393-4526
- Add to WordPress header via Code Snippets plugin or theme functions.php
- Use
- Verify: test from Utah VPN/mobile to confirm number swaps correctly
19,577 sessions labeled "Unassigned" with 13,707 key events. Normal channels run 2–9%. Almost certainly misconfigured tracking — internal traffic, bots, or duplicate tags counted as conversions. Until this is clean, no conversion metric is trustworthy.
Steps (Greg or web developer in GA4 admin, ~1–2 hours):- GA4 Admin → Data Streams → check for duplicate Google Tags on the site
- Use Google Tag Assistant (Chrome extension) on goldenrulephc.com to verify single clean tag fire
- GA4 Admin → Data Settings → Data Filters → Create "Internal Traffic" filter:
- Add office IP addresses for Iowa and Utah offices
- Filter state: Active
- Check GA4 → Events → verify no custom events are auto-logging page_views as key events
- DebugView: test from a clean browser to confirm events fire correctly
- Mark "Unassigned" data as unreliable in all reports until fixed
104 leads over 11 months. Low for SLC market size. GBP optimization and review velocity directly impact LSA ranking and lead flow.
Steps (Greg, ~1 hour):- LSA Dashboard → Utah account (189-035-6117) → ensure ALL service categories are active (HVAC, plumbing, electrical, drain)
- Update business hours to match Avoca AI coverage (Mon-Sat 7am-9pm, emergency 24/7)
- Upload 5+ professional photos (trucks, team, completed jobs)
- Review and dispute invalid leads within 30-day window for credits
- Increase weekly budget from current to $500/week once landing pages are fixed
Zero impressions Sunday, 450 Saturday. Ads run Mon–Fri 7am–5pm only. Emergencies don't follow business hours — competitors capture every weekend burst pipe. Avoca AI already covers weekends.
Steps (Greg or MediaSpark, ~15 min — AFTER items 6–9 complete):- Google Ads → Campaign Settings → Ad Schedule
- Add Saturday 8am–4pm as test window
- Start with 50% bid adjustment (conservative test)
- Monitor for 2 weeks — if CPA stays under $100, expand to Sunday and full Saturday
- Verify with Avoca that weekend call handling is active and bookable rate ≥ 70%
Phase 2 Summary — Weeks 1–2
Who does it: Web developer (WordPress backend access), Greg Romans (GA4/LSA admin).
Access needed: WordPress admin for GRPHC site, GA4 admin for Golden Rule PHC property, LSA accounts (189-035-6117 for Utah, 274-787-7158 for DSM).
Total cost: Dev time only (web developer hours). No additional ad spend until Phase 3.
Expected impact: Landing page conversion from 0.59% → 5%+ (8x improvement). If achieved on 2,560 monthly sessions, that's ~128 leads instead of 15.
Gate check: Landing page conversion rate ≥5% for 7 consecutive days before moving to Phase 3.
Graduate the Dollars — Week 3+ (gated on Phase 2)
Once landing page conversion rates hit ≥5% and tracking is clean, re-enable and scale. Do NOT start Phase 3 until the gate check passes.
360 conversions at $45.71/lead — best campaign in the entire account by far. It was paused and that single decision caused CPA to explode from $49 to $260+ in Q3 2025.
Steps (Greg or MediaSpark, ~5 min):- Google Ads → Campaigns → find "Utah-PMAX-HVAC"
- Toggle status to Enabled
- Set daily budget: $50/day ($1,500/month) to start
- Monitor: CPA should be under $60 with clean conversion tracking. If above $80 for 7 days, check conversion actions.
- Scale to $100/day ($3,000/month) after 14 days of clean data
Gate: Landing page conversion rate ≥5% + Primary conversion actions confirmed.
MediaSpark projects 46 leads/mo at $5K spend once campaigns are restructured. Only worthwhile if conversion tracking is clean and landing pages convert.
Steps (Greg, incremental over weeks 3–6):- Week 3: Increase total daily budget by $20/day across PMax campaigns
- Week 4: Review CPA trend — if holding under $80 blended, add another $20/day
- Week 5: Budget should be at ~$5K/month. Monitor impression share (target: 25%+)
- Week 6: Evaluate MediaSpark management proposal ($1,500/mo). Only if their optimizations show measurable CPA improvement beyond what Phase 1 fixes achieved.
Gate: 30 days of clean conversion data with ≤5% CPA variance from target.
Currently invisible for 85% of searches. Budget increase + quality score improvement from clean tracking will push share up. But budget without conversion = throwing money at the same broken funnel.
Steps (Greg/MediaSpark, ongoing):- Increase budget in $1K/month increments as CPA allows
- Quality Score improvements from new landing pages will naturally boost share
- Target milestones: 25% by month 2, 40% by month 4, 60%+ by month 6
- Track via Auction Insights report — monitor rank vs. Any Hour, S.O.S., Whipple
Gate: Phases 1 & 2 fully complete.
Golden Rule has 800 reviews. Top competitor Any Hour has 26,808. Review velocity directly impacts LSA ranking, Map Pack position, and customer trust. Target: 50–70 new reviews/month by Month 3.
Steps (Mark + ops team, ~1 week setup):- Deploy NiceJob ($75/mo) — integrates with ServiceTitan for auto-review requests 2 hours after service
- Launch tech bonus: $10 per 5-star Google review tied to tech's name. Monthly leaderboard: #1=$250, #2=$150, #3=$100
- Order QR stickers (1,000 @ $200) for equipment placement
- Train techs on the verbal ask: "If you're happy, I'd really appreciate a Google review. It helps me out!"
- LEGAL: Never incentivize customers for reviews (Google prohibition, FTC $51,744/violation). Incentivize technicians only.
Timeline: Month 1: 20–30 new reviews. Month 3: 50–70. Month 12: 100+/month.
Connect all 4 Google APIs to replace stale CSV exports with live data. Current status:
Phase 3 Summary — Weeks 3–6+
Who does it: Greg Romans (campaign management), Mark (review program), Web developer (ongoing page builds), Diraj/GetFresh (dashboard wiring).
Monthly investment increase: $1,500–3,000/mo additional ad spend + $575–1,500 review program + optional $1,500/mo MediaSpark management.
Expected outcome: 46+ leads/month (vs ~17 today), $23K/month revenue on $6.5K spend (3.55x ROAS), 50+ new reviews/month, impression share from 14.59% → 40%+.
The sequence matters: Stop bleeding → Fix foundation → Then spend. Skipping to Phase 3 without completing Phase 2 = pouring money into the same broken funnel.
Key Insight
12 of 15 top competitors are PE-owned. Their playbook: acquire local brands, centralize operations, raise prices, push high-margin upsells. Consumer trust is eroding — 500+ HVAC contractors now adopting "radical transparency" pricing to combat this. Golden Rule can lead the counter-movement.
| Company | Ownership | Rating | Reviews | Key Weakness | PE Parent |
|---|---|---|---|---|---|
| Any Hour Services | PE (Wrench Group) | 4.8★ | 26,808 | Surprise fees, upselling | Wrench Group |
| Whipple Service Champions | PE | 4.7★ | 12,000+ | Pressure sales | Unknown PE |
| My Buddy the Plumber | PE | 4.6★ | 8,500+ | Scheduling issues | Unknown PE |
| Quick Quality Plumbing | PE | 4.6★ | 4,200+ | Call center runaround | Unknown PE |
| Expert Services (Lex Air) | PE | 4.5★ | 3,500+ | High membership ($350/yr) | Unknown PE |
| Yes! Air Conditioning | PE | 4.3★ | 2,800+ | Aggressive upselling | Unknown PE |
| S.O.S. Heating | Independent | 4.8★ | 2,600+ | None — strong competitor | N/A |
| Action Plumbing | PE (Connectionz) | 3.8★ | 1,800+ | Elder abuse lawsuit | Connectionz Acq. |
| Blue Best Plumbing | Independent (Women-owned) | 5.0★ | 1,600+ | None — strong competitor | N/A |
| Golden Rule | Independent (Family) | 4.6★ | 800+ | Review count gap | N/A |
| Black Diamond Experts | PE | 4.2★ | 2,200+ | RICO lawsuit (July 2025) | Unknown PE |
| Manwill P&H | Independent (4th gen) | 4.5★ | ~100 | Low digital presence | N/A |
| Thornton P&H | Independent | 4.3★ | ~500 | Aging leadership | N/A |
| Salmon HVAC | Independent (Family) | 4.5★ | 415 | Small — growth play | N/A |
| Eagar H&C | Independent | 4.8★ | ~400 | Small tuck-in candidate | N/A |
Pain Pattern Analysis
All 44 Competitor Negative Reviews
Source: Google Reviews from 15 competitor companies. Click column headers to sort.
| Company | Rating | Date | Key Quote | Responded? |
|---|
⚠️ Revenue Ops Gate
Any channel you fund must be wired to the <60s speed-to-lead SLA — otherwise you buy leads that decay before contact. Utah budget expansion is frozen until first-line AI is stable. See Implementation for the full checklist.
Channel Ranking
| Rank | Channel | CPL | Speed to Results | Asset Type | Budget % |
|---|---|---|---|---|---|
| 1 | Email/SMS to Past Customers | <$10 | 1–2 weeks | OWN | 10% |
| 2 | Referral Programs | $0–50 | 2–4 weeks | OWN | 5% |
| 3 | Google Business Profile / Local SEO | $47 avg | 3–6 months | OWN | 20% |
| 4 | Nextdoor + Facebook Groups | <$36 | 2–6 weeks | RENT/OWN | 10% |
| 5 | Google LSA | $45–85 | Days | RENT | 20% |
| 6 | Meta Ads (FB/IG) | $20–75 | 1–3 weeks | RENT | 15% |
| 7 | Organic SEO (Website) | Lowest LT | 6+ months | OWN | 10% |
| 8 | Google PPC (Search) | $89–156 | Hours | RENT | 5% |
| 9 | YouTube Pre-Roll | ~$0.10–0.30/view | 2–4 weeks | RENT | 3% |
| 10 | Geofencing | $1K–3K/mo | 1–2 weeks | RENT | 2% |
OWN vs RENT Channels
OWN channels build equity — reviews, SEO, email lists stay when you stop spending. RENT channels — leads stop the day you stop paying. Target shift to 60/40 OWN by Month 6.
🌙 After-Hours Marketing Weapon
After-hours/overflow/weekend AI coverage is live via Avoca. Run time-window campaigns (evenings, weekends) because the system now captures demand that previously leaked. Fund "urgent intent" campaigns during off-hours when competitors still leak calls.
Key Channel Data
12-Month Investment Summary
| Quarter | Monthly Budget | Total Spend | Leads/Month | Blended CPL |
|---|---|---|---|---|
| Q1 (Mo 1–3) | $5,000 | $15,000 | 56–89 | $56–79 |
| Q2 (Mo 4–6) | $6,500 | $19,500 | 82–137 | $47–79 |
| Q3 (Mo 7–9) | $8,000 | $24,000 | 102–159 | $51–80 |
| Q4 (Mo 10–12) | $10,000 | $30,000 | 130–203 | $49–76 |
| YEAR TOTAL | $7,375 avg | $88,500 | ~120 avg/mo | ~$62 |
At avg $285 ticket and 40% close rate: ~48 new jobs/month × $285 = $13,680/month revenue. Annual: $164,160 revenue on $88,500 spend = 1.85x ROAS Year 1 (growing to 3x+ in Year 2 as organic compounds).
Channel Playbooks
📍 Google Business Profile (GBP) — #1 Priority
▼Why: 52% of organic closed revenue. 80%+ of HVAC leads start from Google Maps.
Step-by-Step:
- Claim & verify at business.google.com
- Primary category: "HVAC Contractor" — Secondary: "Plumber", "Electrician", "Air Conditioning Repair Service", "Furnace Repair Service"
- Business description (750 chars max) emphasizing family-owned, 24/7, no surprise fees, Gold Club from $99/yr
- Upload 10+ real photos — trucks, techs, completed jobs. Google rewards active listings with 2x more direction requests
- Weekly GBP posts — seasonal tips, offers. "$49 AC Tune-Up" with CTA button
- Respond to EVERY review within 24 hours
- Pre-populate Q&A with 10 FAQs
- Add every service with keyword-rich descriptions
- Enable call button, messaging, booking link
- NAP consistency: exact Name/Address/Phone across all directories
AI/Low-Effort: Publer ($10/mo) for weekly posts. AI to draft 12 posts in 30 minutes.
Expected: 35–60% increase in map views within 90 days. Top 3 Map Pack within 6 months.
Monthly Cost: $10/mo
🏆 Google Local Service Ads (LSA)
▼Why: Appears above ALL other ads. Pay only for leads. Google Guaranteed badge = instant trust. Converts at 31% vs 12% for PPC.
- Create LSA account at ads.google.com/local-services-ads
- Select services: HVAC Repair, AC Installation, Furnace Repair, Plumbing, Electrical
- Service area: Salt Lake County + Utah County + Davis County ZIP codes
- Upload insurance, license, background check docs
- Set weekly budget: Start at $500/week ($2,000/month)
- Upload 5+ professional team/truck photos
- Hours: Mon–Sat 7am–9pm, emergency 24/7
- Connect ServiceTitan CRM for auto-booking
- Critical: Dispute bad leads within 30 days for credits
Only run ads during hours you can answer phone within 90 seconds. Avoca AI already handles this.
Expected: 15–30 qualified leads/month at $45–85/lead.
Monthly Cost: $1,500–2,500/mo
📘 Meta Ads (Facebook/Instagram)
▼Why: $0.69/click avg — cheapest paid click. $49 tune-up campaigns = $36/lead.
Campaigns:
- Seasonal Tune-Up: "$49 AC Tune-Up Special" Lead Ad. Target: Homeowners, 30–65, within 25mi of SLC. $15/day.
- Emergency Awareness: "No Heat? Call Now" Call Ad. Run Oct–Feb.
- Gold Club: "Protect your home for $99/year" with competitor price comparison.
- Retargeting: Ads to goldenrulephc.com visitors who didn't call (last 30 days).
- Lookalike Audiences: Upload customer list → FB finds similar homeowners.
Expected: $20–75/lead for service, $75–200/lead for installs. At $750/mo → 10–20 leads.
Monthly Cost: $500–1,000/mo self-serve
✉️ Email/SMS Re-activation
▼Why: Cheapest channel. 98% SMS open rate in 20 min. One HVAC company: $150 email → 17 service calls ($8.82 CPS).
Campaign Templates:
- Winter Prep (Oct): "Hi [Name], it's been [X months] since we serviced your furnace. Book before the rush."
- Summer Cool-Down SMS (May): "AC tune-up season! Book this week & save $25. Reply YES."
- Anniversary Email (12 mo): Time for a check-up reminder + Gold Club priority.
- Emergency Weather Alert SMS: "SLC freeze warning! Is your furnace ready? Same-day appointments."
- Referral Ask (2 weeks post-service): Refer a friend — both get $25 off.
Setup: All 5 as automated sequences in Mailchimp ($20/mo). One-time setup, runs forever.
Expected: 5–15 calls per campaign. $8–50 CPS.
🏘️ Nextdoor
▼Why: 80% of users hire businesses referred on app. 17% web-visit-to-lead conversion.
- Claim business page (free)
- Post helpful content 2–3x/week: "5 Signs Your AC Needs Attention" (NOT sales pitches)
- Answer questions in "Recommendations" — be the helpful neighbor
- Run Local Deals: "$49 AC Tune-Up" targeted to older-home ZIPs
- Ask satisfied customers to recommend you on Nextdoor
Expected: 5–10 leads/month at <$100 CPS within 60 days.
Monthly Cost: $0 organic or $100–300/mo with Local Deals
🔍 Organic SEO
▼Why: 27.46x median ROI. 42% of all HVAC leads. Lowest long-term CPL ($10–15 once ranking).
Location Pages: Create pages for top 20 areas: "/hvac-repair-salt-lake-city", "/furnace-repair-sandy-ut", "/ac-installation-west-jordan". 800–1,200 words each.
Content (4 posts/month):
- "How Much Does a New Furnace Cost in Utah? (2026 Pricing Guide)"
- "5 Signs Your AC Is About to Fail"
- "Choosing an HVAC Company: Family-Owned vs Corporate"
Expected: First organic leads in 4–6 months. 20–40 leads/month by month 12.
Monthly Cost: $500–1,500 or $0 if done in-house with AI
🔵 Bing Ads
▼Why: 20–30% lower CPL than Google. Older homeowner demographic = Golden Rule's ideal customer.
Setup: Import Google Ads campaigns into Bing in one click. Same structure, lower cost.
Budget: $150–300/mo. Small but consistent.
Expected: 3–8 additional leads/month at 20–30% lower cost than Google.
Note: Yelp is directory-only (not a funded channel). TikTok is Phase 5 only (Month 6+, brand awareness, not lead gen).
⚠️ CRITICAL LEGAL WARNING
Google PROHIBITS offering customers any incentive for reviews — no discounts, no free membership, no credits, no contest entries. FTC 2024 rule: $51,744 per violation. Google increased enforcement in January 2025. The system below is fully compliant.
The Compliant Review Machine — 3 Prongs
💰 Prong 1: Technician Bonus Program (THE legal way)
▼- $10 per 5-star Google review tied to tech's name
- Monthly leaderboard: #1 gets $250, #2 gets $150, #3 gets $100
- One pest control company went from 3 → 100+ reviews/month using tech bonuses
- Techs verbally ask: "If you're happy, I'd really appreciate a Google review. It helps me out!"
- Cost: $500–1,500/month → generates 50–150 reviews/month
- ROI: 50 new reviews = jump from #6 to #3 in Map Pack within 90 days
🤖 Prong 2: Automated Review Requests (NiceJob)
▼- Deploy NiceJob ($75/mo) — integrates with ServiceTitan
- Triggers SMS + email within 2 hours of job completion
- 70% of customers leave a review WHEN ASKED
- SMS: "Hi [Name], your tech [Tech Name] would love your feedback. [Google review link]"
- 98% open rate within 20 minutes. One-tap link to Google.
📱 Prong 3: QR Code on Equipment
▼- Every install/service gets branded sticker with QR code
- QR links to: "How was your service?" → Google review link
- Captures reviews weeks/months later when customer interacts with equipment
- See full QR Sticker Strategy for details
Outbound texting pilot is already running (~5 weeks). Tie review velocity to the outbound program as customers respond to outreach.
🏆 Gold Club — The Elegant Play
DON'T: "Free membership for a review" (ILLEGAL).
DO: After service, offer Gold Club at discounted rate as part of service package (independent of review). SEPARATELY, send automated review request (no mention of membership). Members naturally become repeat customers who leave MORE reviews. The membership IS the retention engine; reviews come from great service + automated asks.
Review Velocity Targets
| Timeframe | Target | How |
|---|---|---|
| Month 1 | 20–30 new reviews | Tech bonuses + NiceJob automation |
| Month 3 | 50–70 new reviews/mo | Full team engaged + QR stickers deployed |
| Month 6 | 80–100 new reviews/mo | Flywheel running |
| Month 12 | 100+ new reviews/mo | 1,200+ total. Competitive with top players |
Program Details
- Design: 2"×2" waterproof vinyl, gold/dark branded, Golden Rule logo, "Scan for Service" CTA
- Dynamic QR (PairedQR $20/mo or Bitly): Change destination by season — Summer: "Book AC Tune-Up" / Winter: "Schedule Furnace Check" / Year-round: Direct call to (801) 218-2225
- Placement: Every service call — furnace, AC, water heater, electrical panel
- Landing page: One-tap call, "Book Service", seasonal offer, Gold Club signup, "Rate Your Last Service" → Google review
- Bonus: Emergency shutdown instructions for that equipment type (Applewood model)
Cost Analysis
| Item | Cost | ROI Projection |
|---|---|---|
| 1,000 stickers | $150–300 | If 10% scan, 10% convert = 10 calls |
| Dynamic QR platform | $20–50/mo | Seasonal messaging flexibility |
| Landing page | $0 (built into website) | Captures reviews + bookings |
| 10 converted calls × $285 | = $2,850 revenue | On $200–350 investment |
Vendors: Comgraphx, PairedQR, Websticker, StickerGiant
| ZIP | City/Area | Population | Housing Units | Med Year Built | % Pre-1980 | Med HH Income | Owner-Occ % | Zone | Geo Priority |
|---|
Data: ACS 2023 5-year, Census 2020. "—" indicates data not available in public sources for that ZIP.
- ✓ 1 annual HVAC tune-up
- ✓ Diagnostic fee waived
- ✓ 10% parts discount
- ✓ Next-day priority scheduling
- ✓ Standard after-hours rate
- — Water heater flush
- — Electrical panel check
- ✓ 1-year price lock
- ✓ 2 tune-ups (heating + cooling)
- ✓ Diagnostic fee waived
- ✓ 15% parts discount
- ✓ Same-day priority scheduling
- ✓ 15% off after-hours rate
- ✓ Water heater flush
- — Electrical panel check
- ✓ 2-year price lock + transferable
- ✓ 2 tune-ups + plumbing inspection
- ✓ Diagnostic fee waived
- ✓ 20% parts discount
- ✓ 4-hour window priority
- ✓ 25% off after-hours rate
- ✓ Water heater flush
- ✓ Electrical panel check
- ✓ 3-year price lock + transferable
Competitor Comparison
| Company | Plan Name | Annual Cost | Includes | Gold Club Advantage |
|---|---|---|---|---|
| Any Hour Club | Maintenance Plan | $240/yr | 1 tune-up, 10% parts | Basic is 58% cheaper |
| Lex Air | Premium Club | $350/yr | 2 tune-ups, priority | Plus saves $151/yr for same benefits |
| My Buddy | Service Plan | $199/yr | 1 tune-up, diagnostic waived | Basic saves $100/yr |
| Industry Average | — | $240–350/yr | Varies | Gold Club: 58–72% cheaper |
Revenue Potential
200 members × $99 Basic = $19,800/yr ARR. Plus/Premium upsells add 30–50% more. Upsell path: Basic → Plus conversion at 12-month mark with "loyalty upgrade" offer.
SLC Market Keyword Data
| Keyword | Avg CPC | Monthly Searches | Competition |
|---|---|---|---|
| "HVAC repair Salt Lake City" | $9–15 | 1,200 | High |
| "AC repair near me" | $12–18 | 3,400 | Very High |
| "furnace repair Utah" | $8–12 | 800 | Medium |
| "emergency plumber SLC" | $15–25 | 600 | High |
| "HVAC company Salt Lake City" | $7–12 | 900 | High |
| LSA cost per lead (SLC) | $45–85 | N/A | Medium |
| Geofencing | $1K–3K/mo | N/A | Low |
| Blended HVAC CPL benchmark | $104 | N/A | — |
Channel ROI Comparison
Golden Rule's blended target of ~$62 CPL beats the $104 industry benchmark by 40%. This is achievable because OWN channels (Email/SMS, GBP, SEO) have near-zero marginal cost once established. For detailed channel playbooks, see Digital Channels.
🚨 Bottom Line for Mark
Your current Google Ads account is bleeding money. For every $175 you spend to get one lead, competitors pay $65. That’s $110 wasted per lead — at ~17 leads/month, that’s roughly $1,870/month in overspend. Worse: HVAC campaigns aren’t even running in SLC, and no one is protecting your brand name from competitor bidding. The fixes below are straightforward and most can be done this week.
Campaign Performance vs Benchmarks
| Campaign | Type | Status | Conv. Rate | Benchmark | Your CPA | Benchmark CPA | Verdict |
|---|
CPA Gap — What You Pay vs What You Should Pay
Conversion Tracking Is Broken
Why Your Numbers Look Bad (And Actually Are Bad)
Google’s algorithm is optimizing for the wrong things. Right now, it counts YouTube subscriptions and page views as “conversions” — so it’s sending budget toward people who watch videos, not people who need a plumber. Fix the conversion hierarchy and the algorithm will start finding real leads.
❌ Demote to Secondary (Today)
- YouTube Channel Subscriptions
- Page View: Book Urgent Repair
- YouTube Follow-On Views
These don’t represent business value and are polluting bid optimization.
✅ Create as Primary (This Week)
- Immediate Service Request (emergency)
- Free Online Quote Submission
- Schedule Service Booking
- Live Chat Engagement
These are real leads. Google will optimize toward them once set as Primary.
⚠️ Disable AI Max Immediately
AI Max is enabled but showing minimal delivery. Low delivery combined with unpredictable behavior makes it a liability — potential for surprise spend spikes that blow your budget. Turn it off today. Re-evaluate once campaigns are restructured and conversion tracking is fixed.
MediaSpark’s Recommended Action Plan
| Action | When | Impact | Detail |
|---|
Projected Outcomes (Post-Fix)
MediaSpark Investment Proposal
| Item | Current | Proposed | Change |
|---|---|---|---|
| Monthly Ad Spend | $3,000 | $5,000 | +$2,000 (+67%) |
| Management Fee | $0 (self-managed) | $1,500/mo | New — professional management |
| Total Monthly | $3,000 | $6,500 | +$3,500 (+117%) |
| Expected Leads | ~17/mo | ~46/mo | +170% more leads |
| Expected Revenue | ≈$5K/mo | ≈$23K/mo | +360% revenue |
🎯 Mark’s Decision Point
Before approving the $6,500/mo proposal: The free fixes (negative keywords, conversion tracking, AI Max disable) should be done first regardless. Those alone will improve CPA by 20–40%. Once the account is clean, evaluate whether professional management at $1,500/mo is justified by the additional optimization MediaSpark can provide. The biggest quick win is launching HVAC and brand campaigns — that’s where the real money is.
Source: MediaSpark Google PPC Campaign Audit (March 2026). Benchmarks from MediaSpark client portfolio. Projections assume proper conversion tracking and negative keyword cleanup.
🚨 Every Dollar Wasted — Zero Conversions Across All 100 Terms
This is the single clearest proof that negative keywords are missing. You paid $2,415 for people searching for your competitors by name (Smedley, Genuine Comfort, Anytime, etc.) and $980 for your own brand name (Golden Rule) — clicks you should get organically for free. The fix is adding negative keywords + launching a brand protection campaign (see Phase 1 items 4 and 5).
All 100 Search Terms — Sorted by Cost
Click any column header to sort. Color-coded by category. Every term with spend and zero conversions is money you can recover by adding negative keywords.
| Search Term | Category | Cost | Clicks | Impressions | CPC | Conv. |
|---|
Source: Google Ads Search Terms Export (Feb 2022 – Mar 2026). All terms shown had impressions ≥ 34. Zero conversions across entire dataset.
These Pages Are Eating Your Budget
770 real visitors landed on these 6 pages and not a single one converted. If even 3.6% had converted (the site average), that's 28 leads you missed. Each page needs to be rebuilt with a clear CTA, a scheduling widget, or redirected to a page that actually converts.
Zero-Conversion Landing Pages
| Landing Page | Sessions | Users | Conv. Rate | Avg Duration (s) | Recommended Fix |
|---|
Source: GA4 Property 319584840. Utah landing pages with 80+ sessions and 0 conversions. Date range: Dec 1, 2025 – Mar 5, 2026.
🎯 The Blueprint Is Right Here
These 11 pages prove what works: city name + specific service = high conversion. Kaysville Plumbing converts at 16.67% — nearly 5x the site average. North Salt Lake gets 479 sessions with 6% conversion and 211s average time on page. The common pattern: specific city, specific service, clear CTA, local trust signals. Clone this approach for every city page.
Top-Performing Landing Pages (5%+ Conv. Rate, 10+ Sessions)
| Landing Page | Sessions | Users | Conversions | Conv. Rate | Avg Duration (s) |
|---|
Source: GA4 Property 319584840. Pages with 10+ sessions and 5%+ conversion rate. Date range: Dec 1, 2025 – Mar 5, 2026.
🎯 LSA Lead Profile
HVAC maintenance dominates (16 leads) followed by water heater installs (5) and water heater repairs (4). Salt Lake City and North Salt Lake generate the most leads. 54% of leads come via message vs 46% phone — fast message response is critical. 7 leads were credited (disputed), mostly from outer service areas. The charge rate of 76.7% is healthy — aim to maintain by responding within 5 minutes.
Leads by Location
| City | Lead Count |
|---|
Leads by Job Type
| Job Type | Lead Count |
|---|
Recent LSA Leads (Last 30)
Most recent leads from the LSA inbox export. Click column headers to sort.
| Date | Location | Job Type | Lead Type | Charge Status |
|---|
Source: Google LSA Leads Inbox Export (Apr 2025 – Feb 2026). 103 total leads for Golden Rule PHC Utah.
🚨 Bottom Line for Mark
Your Utah digital presence has a conversion problem, not a traffic problem. Nearly 6,000 visitors land on Utah pages, but only 204 convert — a 3.42% rate. Iowa's location pages convert at 13% — nearly 4x better. The single biggest issue: your main paid ad landing page (/location-utah-urgent-repair) gets 2,560 sessions and converts at just 0.59%. Meanwhile your best campaign (PMax HVAC at $45.71/lead) is paused, and the worst performer (Plumbing Search at $239/lead) is running. Fix the landing pages and un-pause PMax HVAC — those two moves alone could double your Utah leads.
Utah vs Iowa: Conversion Gap
Utah Landing Pages — By Traffic Volume
Your main ad landing page gets the most traffic but barely converts. City-specific pages convert 3-10x better. The pattern is clear: localized pages with specific service content outperform generic "urgent repair" pages.
| Landing Page | Sessions | Key Events | Conv. Rate | Avg Engagement | Status |
|---|
Highest-Converting Utah Pages
These pages prove the model that works: city name + specific service = higher conversion. Kaysville plumbing converts at 16.1% — nearly 5x the Utah average. This is the blueprint for every city page.
| Landing Page | Sessions | Key Events | Conv. Rate |
|---|
Zero-Conversion Pages (Wasted Traffic)
855 Sessions → 0 Conversions
These 10 pages received real traffic but produced zero key events. They need to be rebuilt or redirected to pages that actually convert. Every visitor to these pages is wasted ad spend or wasted organic opportunity.
| Landing Page | Sessions (Wasted) | Recommended Action |
|---|
Google Ads Campaigns — Actual Performance
This is your real Google Ads data, not MediaSpark estimates. Total spend: $74,137 across 4 Utah campaigns. The PMax HVAC campaign was your best performer at $45.71/lead — but it's paused.
| Campaign | Status | Total Spend | Conversions | CPA | Assessment |
|---|
CPA by Campaign — Visual Comparison
🎯 Mark's Immediate Move
Un-pause Utah-PMAX-HVAC today. It delivered 360 conversions at $45.71 each — that's 5.2x more efficient than the Plumbing Search campaign that's currently running. At the same time, either fix the Plumbing Search campaign's landing pages (they convert at 0.59%) or pause it and shift budget to PMax. This one change could cut your effective CPA in half.
Quarterly Performance Trend
Q2 2025 was the sweet spot: $49.30 CPA on $13K spend. Then HVAC campaigns got paused in Q3 and CPA exploded to $260. Q1 2026 is recovering but still 2x the Q2 level.
| Quarter | Spend | Clicks | Conversions | CPA | Trend |
|---|
Auction Insights — Who You're Competing Against
Golden Rule has only 14.59% impression share — meaning you're invisible for 85% of searches. Competitors with lower share are still outranking you 14% of the time and appearing above you 45-66% of the time.
| Advertiser | Impression Share | Top of Page Rate | Outranking Share | Position Above Rate |
|---|
Device & Demographics
📱 Device Split
544 of 671 conversions (81%) came from mobile. Landing pages must be mobile-first.
👥 Audience Profile
Peak ages: 25-54 (59% of impressions). This is homeowners in prime home-maintenance years.
⚠️ Weekend Blind Spot
Your ads run Monday–Friday 7am–5pm only. Saturday had 450 impressions, Sunday had zero. Emergencies don't take weekends off. Your competitors are capturing every Saturday broken furnace and Sunday burst pipe while your ads are dark. At minimum, test weekend hours for emergency services — HVAC and plumbing emergencies peak Saturday 9am–3pm.
Spend by Network
| Network | Spend | Clicks | Avg CPC | Note |
|---|
Top Search Keywords
Your highest-spend keywords are all HVAC-related — and they're all paused. The active plumbing keywords have lower volume and higher CPA. This is the data behind why un-pausing HVAC is the single most impactful move.
| Keyword | Spend | Clicks | CTR | Status |
|---|
Local Services Ads — Lead Breakdown
104 LSA leads from April 2025 to February 2026. 71% are charged leads (meaning Google deemed them valid). Salt Lake City generates the most leads, followed by Ogden and Layton — matching your ZIP code coverage areas.
Leads by City
| City | Leads |
|---|
Leads by Job Type
| Job Type | Leads |
|---|
Full Site Traffic Channels (GA4)
Organic Search drives 49% of all traffic (76.7K sessions) with solid engagement. Cross-network (PMax) has the highest conversion rate at 8.6%. The "Unassigned" channel showing 13,707 key events at 70% rate is almost certainly misconfigured tracking — investigate and clean up.
| Channel | Sessions | Active Users | Key Events | Engagement Rate | Event Rate |
|---|
🎯 Data Access Status — What We Have vs. What We Need
Current access status for live dashboard integration:
- GA4 ✅ CONNECTED — Property 319584840 live via API. Landing pages, sessions, conversions flowing.
- Google Ads ⚠️ BLOCKED — API connected but returns no data. Root cause: diraj@getfreshventures.com is not listed as a user on MCC 448-550-2333. Greg must add this email under Admin → Access and Security.
- Google Business Profile ❌ BLOCKED — API connected but returns no locations. Root cause: diraj@getfreshventures.com is not a Manager/Owner on the GBP listings. Greg must add under Users in GBP Manager.
- Google Search Console ✅ LIVE — Connected and pulling keyword rankings, impressions, CTR, and device data for goldenrulephc.com.
- GTM ❓ UNKNOWN — Need to verify Google Tag Manager access for conversion tracking fixes.
- Campaign Change History ❓ UNKNOWN — Needed to verify what MediaSpark has actually changed vs. recommended.
Sources: GA4 Landing Pages (Jun 2025–Mar 2026), GA4 Traffic Acquisition (Aug 2024–Aug 2025), Google Ads Overview Export (Feb 2025–Mar 2026), Google LSA Leads Inbox (Apr 2025–Feb 2026). All data from Golden Rule PHC property.
| Company | Est. Revenue | Years | Location | Rating | Reviews | Why Prime |
|---|---|---|---|---|---|---|
| Thornton P&H | $6.5M | 92 yrs | Midvale | 4.3★ | ~500 | Legacy brand, aging leadership speculation |
| Winsness Plumbing | $4M | 104 yrs | Murray | 4.5★ | ~300 | Century-old brand equity, owner aging |
| Bernie's P&H | $1–2M | 45 yrs | Provo | 3.7★ | ~12 | Owner aging, Utah County, low online = easy uplift |
| Company | Est. Revenue | Years | Location | Rating | Reviews | Notes |
|---|---|---|---|---|---|---|
| Manwill P&H | $3–5M | 106 yrs | SLC | 4.5★ | ~100 | 4th gen, smooth succession done |
| Salmon HVAC | $2–3M | 47 yrs | Centerville | 4.5★ | 415 | Family-run, Davis County |
| Eagar H&C | $1–2M | 25 yrs | Cedar Hills | 4.8★ | ~400 | Small tuck-in, Utah County |
| E.R.S. H&C | $1–2M | 26 yrs | Plain City | 5.0★ | 586 | Small, Northern UT expansion |
- Blue Best — Women-owned, 5.0★, 1,600 reviews, growing fast. Too strong.
- S.O.S. Heating — Young owners, 2,600 reviews. Not selling.
- ABT Heating — 2nd gen active, small.
- Neerings — 4th gen, 51 employees, stable.
- Thompson's Comfort — 4th gen, stable.
Mark's CRM Reference
EBITDA target: $500K–$2.2M | Target multiples: 3–5x EBITDA | Outreach status: Most in "Research" phase | B&M Plumbing: Multi-state (5 states), $2–5M range — strategic play.
🚦 Campaign Launch Checklist (Gating Controls)
A campaign can scale ONLY when:
| Action | Target | Status | Marketing Implication |
|---|---|---|---|
| Stabilize UT first-line AI | Bookable rate ≥70% | ⚠️ Stabilizing | Freeze major UT budget expansion |
| Reduce AI→human transfers | ≤10% (from ~18%) | ⚠️ Needs work | Elevated transfers = conversion leakage |
| Implement spam exclusion | ≥90% accuracy | ⚠️ Implement | Attribution without this is fiction |
| Build post-handoff visibility | End-to-end tracking | 🔴 Gap | Gating dependency for scaling |
| Action | Time to Value | Effort | Automate? | Expected Uplift |
|---|---|---|---|---|
| Set up NiceJob ($75/mo) | 3–5 days | ⭐⭐ | Yes — NiceJob | +20–30 reviews/month |
| Launch tech review bonus ($10/review) | 1 week | ⭐ | Manual initially | +15–25 reviews/month |
| Optimize GBP | 1–2 weeks | ⭐⭐ | Partial — Publer | 35–60% map view increase |
| Order QR stickers ($200) | 2 weeks | ⭐ | N/A | Long-term repeat business |
| Set up Nextdoor page | 1 week | ⭐ | Buffer | 3–5 leads/month |
| Set up Mailchimp + first campaign | 1 week | ⭐⭐ | Yes — automated | 5–15 service calls |
| Action | Time to Value | Effort | Automate? | Expected Uplift |
|---|---|---|---|---|
| Launch Google LSA ($1,500/mo) | 3–7 days | ⭐⭐ | Semi — budget rules | 15–30 leads/month |
| Deploy email/SMS reactivation | 1–2 weeks | ⭐⭐ | Yes — Mailchimp/CC | $8–50 CPS |
| Join 5–10 local FB groups | 2–3 weeks | ⭐⭐ | Partial — AI content | 5–10 leads/month |
| Begin Gold Club membership push | 2–4 weeks | ⭐⭐ | CRM automation | +10 members/month |
| Action | Time to Value | Effort | Automate? | Expected Uplift |
|---|---|---|---|---|
| Launch Meta Ads ($750/mo) | 3–7 days | ⭐⭐⭐ | Meta Advantage+ | 8–12 leads/month |
| Start SEO location pages | 4–6 months | ⭐⭐⭐ | AI drafts | Long-term compound |
| Deploy QR stickers on ALL calls | Ongoing | ⭐ | Tech protocol | 60%+ repeat business |
| Begin Bing Ads test ($150/mo) | 1 week | ⭐⭐ | Import from Google | 3–8 leads at 20–30% lower CPL |
| Action | Time to Value | Effort | Expected Uplift |
|---|---|---|---|
| Add geofencing around PE locations | 1–2 weeks | ⭐⭐⭐ | Conquest leads from competitor ZIPs |
| Launch YouTube pre-roll test | 2–3 weeks | ⭐⭐⭐ | Brand awareness lift in SLC metro |
| Begin content marketing (blog) | 3–6 months | ⭐⭐⭐ | Organic SEO growth compound |
| Evaluate Tier A acquisition outreach | Ongoing | ⭐⭐⭐⭐⭐ | Market expansion via roll-up |
- SEO pages ranking for 10+ local keywords, organic leads = 25–30% of pipeline
- OWN channels at 45–50% of total leads, blended CPL trending down
- Gold Club: 200+ active members = $19,800+ ARR
- Review count competitive with top 5 in market (300+ new YTD)
- Acquisition: active conversations with Tier A targets
- TikTok brand awareness campaigns (brand building only, not lead gen)
- QR sticker flywheel generating repeat business at near-zero cost
| Task | Frequency | Manual Time | Automation Tool | Monthly Cost | Priority |
|---|---|---|---|---|---|
| Phone call handling | 24/7 | N/A | Avoca AI (live) | Existing | ✅ Active |
| Review request after service | Per job | 5 min | NiceJob | $75 | 🔴 Critical |
| Email/SMS seasonal reminders | Monthly | 2 hrs | Mailchimp | $20–50 | 🔴 Critical |
| Review response | Per review | 10 min | Birdeye AI / templates | $0–299 | 🔴 Critical |
| Social media posting | Weekly | 3 hrs | Buffer | $15–50 | 🟠 High |
| GBP posts | Weekly | 30 min | Publer | $10–25 | 🟠 High |
| LSA budget monitoring | Daily | 15 min | Google auto-rules | $0 | 🟠 High |
| QR sticker link updates | Seasonal | 15 min | PairedQR | $20–50 | 🟠 High |
| Membership renewal reminders | Per customer | 5 min | ServiceTitan CRM | Included | 🟠 High |
| Blog post drafts | Monthly | 4 hrs | AI (ChatGPT/Claude) | $20 | 🟠 High |
| Competitor price monitoring | Monthly | 4 hrs | Manual or SEMrush | $0–130 | 🔵 Low |
| Referral tracking | Ongoing | 1 hr/wk | Manual or ReferralCandy | $0–50 | 🔵 Low |
📲 Outbound Demand Board Fill
Outbound texting via Avoca is already in pilot (~5 weeks). Treat as production line:
Weekly list build → enrichment → campaign → booked → show rate → revenue per job
Plumbing/Electrical target: ≥10–12% outbound→booking conversion. Extend to HVAC after "unknown 10+" enrichment reduces from ~30% to ≤15%.
Avoca Capabilities Already in Production
After-hours/overflow/weekend call handling is LIVE. CSR headcount reduced from 7+1PT to 5 while maintaining coverage. Per-call feedback logging active. Speed-to-lead: first touch under 60 seconds for LSA/ENG + web leads. Gap to close: Utah first-line performance, post-handoff visibility.