- $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%.
GTM Engine — Customer Journey Map
The complete demand-to-advocacy loop. Click any zone to navigate to its pillar.
Constraint Diagnosis — Where Growth Is Breaking
| Constraint | Journey Stage | Status | Current Reality | Action Required |
|---|---|---|---|---|
| ICP / Message Fit | Awareness | Needs Work | Iowa content showing in Utah. No Ogden landing pages. | Fix geo-targeting, build Ogden pages |
| Channel Efficiency | Awareness | Broken | $4,912 spend, zero conversions. Brand terms at $40/click. | Pause waste, reallocate to converting terms |
| Conversion System | Purchase | Broken | Main page 0.59% conversion. No CTAs on key pages. | Add phone, forms, CTAs above fold |
| Time-to-Value | Adoption Bridge | Needs Data | Dispatch time, completion rate unknown | Connect ServiceTitan reporting |
| Retention Drivers | Flywheel | Needs Data | Membership conversion rate, churn unknown | Connect ServiceTitan membership data |
| Expansion Motion | Flywheel | Needs Data | Cross-sell rate unknown | Track multi-service adoption |
CONVERSION SYSTEM
The fastest growth comes from fixing the bottleneck closest to revenue.
Demand reaches the site but dies there. 770 sessions/month hitting pages with zero leads. Fix conversion before spending more on acquisition.
- Fix Utah phone numbers on all pages immediate — 7 pages identified
- Add CTAs + contact forms to main landing page this week
- Build city+service landing pages for Ogden market next 2 weeks
Site Health Board
GA4: G-3PG7L9B0RM | Ads Conv ID: 10854236492
| Connector | Tools | Status | What It Provides |
|---|---|---|---|
| ServiceTitan | 4 | Connected | Jobs, Calls, Invoices, Customers |
| Avoca (AI Voice) | 3 | Connected | Call Events, Call Stats, Call Detail |
| Google Ads (PPC/Utah) | 3 | Connected | Campaign Stats, LSA Leads, Keywords |
| Google Ads (LSA/DSM) | 3 | Connected | Campaign Stats, LSA Leads, Keywords |
| Google Ads (LSA/Utah) | 3 | Connected | Campaign Stats, LSA Leads, Keywords |
| GA4 + Search Console (GRPHC) | 3 | Connected | Site Traffic, Conversions, Search Performance |
| GA4 + Search Console (River City) | 3 | Connected | Site Traffic, Conversions, Search Performance |
| GA4 + Search Console (Cornerstone) | 3 | Connected | Site Traffic, Conversions, Search Performance |
| Google Business Profile | 2 | Connected | Business Metrics, Reviews |
| WordPress (GRPHC) | 3 | Connected | Posts, Form Submissions, SEO Data |
| WordPress (River City) | 3 | Connected | Posts, Form Submissions, SEO Data |
| WordPress (Cornerstone) | 3 | Connected | Posts, Form Submissions, SEO Data |
| Pipeline Engine | 5 | Connected | Revenue by Channel, Funnel, Match Rates |
Revenue Attribution Engine
The MCP pipeline connects all demand capture, call handling, CRM, and analytics into one revenue attribution engine. When the dashboard goes live with real-time data, every metric on this dashboard will be pulled automatically through these connectors — no manual exports needed.
Demand Performance
Conversion Funnel — Utah has a landing page problem, not a traffic problem
Spend Status
A. The Pipeline Funnel
B. What We Have Connected
| Data Source | Status | Key Fields Available | Attribution Fields |
|---|---|---|---|
| ServiceTitan Jobs | 🟢 Live via MCP | jobStatus, total (revenue), businessUnitId, completedOn | campaignId, leadCallId, bookingId |
| ServiceTitan Calls | 🟢 Live via MCP | callType (Booked/Lead), duration, from/to, recordingUrl | customer address, zip code, campaign link |
| ServiceTitan Invoices | 🟢 Live via MCP | line items, subTotal, salesTax, total, paidOn | job linkage, business unit per line |
| Avoca Calls | 🟡 Connected — No Data | call events, outcomes, stats | Needs API credentials on Vercel |
| Pipeline Funnel (DSM) | 🟢 Active — Low Confidence | 2 completed, $2,700 revenue | 0% match rate — identity resolution needed |
| Pipeline Funnel (Utah) | 🟢 Active — Low Confidence | 3 inquiries, 2 booked, $0 revenue | 0% match rate — identity resolution needed |
| Google Ads PPC | 🟢 Live via MCP | campaigns, keywords, ad groups, spend | No revenue linkage yet |
| Google Ads LSA | 🟢 Live via MCP | leads, lead detail, status | No ST job linkage yet |
C. The Missing Link: Campaign → Revenue
🔑 DNI Is the Bridge
ServiceTitan has a campaignId on every job — this connects to their internal campaign tracking. ST Marketing Pro ($2,500/mo) provides DNI (Dynamic Number Insertion) — this is the bridge between ad clicks and booked jobs.
Once DNI maps tracking numbers to campaigns, we get the full chain:
The MCP pipeline engine has the Neon Postgres DB ready to store matched records, but needs automated ingestion from ServiceTitan + Google Ads to start correlating.
D. Pipeline Data Gaps — What Needs to Happen
⚠️ 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).
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.
💡 Recommendations
- Focus PPC on "emergency" and "repair" terms — These have highest intent. "HVAC repair Salt Lake City" at $9–15 CPC with a 5% conversion rate = $180–300 CPA. Acceptable for a $500+ avg ticket.
- Block competitor name terms NOW — Add negative keywords for all competitor brand names (Smedley, Genuine Comfort, Anytime, etc.). You're currently spending $2,415 on clicks for people searching competitor names. See Search Terms section.
- Launch branded search protection — You're paying $980 for your own brand name clicks. Run a brand protection campaign at $0.50–1.00 CPC max bid to prevent competitors from bidding on "Golden Rule."
- Invest in LSA over PPC for cost efficiency — LSA at $45–85/lead beats PPC at $104 CPL. Goal: push LSA to 25–30 leads/month by increasing budget to $500/week and optimizing GBP reviews.
- Build SEO content around $0 CPC long-tail terms — Blog posts targeting "furnace making noise," "AC not cooling upstairs," "water heater pilot light won't stay lit." These get 500–1,000 searches/month with $0 CPC because they're informational. Convert with "Call us for a diagnosis" CTA.
- Track blended CPL weekly — Combine all channel costs ÷ all leads. Target: $62 blended. Currently unknown because ServiceTitan isn't connected. This is the single most important metric once data flows.
🚨 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.
💡 Recommendations
- Add negative keywords IMMEDIATELY — This is the single fastest money save. Add every competitor name as an exact-match negative keyword: Smedley, Genuine Comfort, Anytime Heating, Valley Plumbing, Manwill, etc. Saves $2,415 instantly.
- Create a brand protection campaign — Separate campaign for "Golden Rule" terms at $0.50 max CPC. This prevents competitors from stealing your brand traffic and stops you from overpaying for your own name.
- Audit the remaining $1,517 in generic waste — Review all non-brand, non-competitor terms with zero conversions. Common culprits: "HVAC supply," "furnace parts," "plumbing supplies" — people looking to buy parts, not hire a service company.
- Set up monthly search term audits — Every 30 days, export search terms, filter for $50+ spend with 0 conversions, add as negatives. This should be a recurring MediaSpark deliverable. Estimated monthly waste prevention: $200–400.
- Build a positive keyword list from converting terms — Cross-reference with terms that DO convert (need Google Ads conversion tracking working first). Double down on what works, kill what doesn't.
- Request MediaSpark negative keyword report — Ask Dana for the current negative keyword list. If it has fewer than 50 terms, it's dangerously thin. A healthy HVAC account should have 200+ negative keywords.
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.
💡 Recommendations
- Increase LSA weekly budget to $500 — At 9.4 leads/month, you're underperforming vs. the 25–30 target. Higher budget = more impression share. LSA is your cheapest lead channel.
- Respond to messages within 5 minutes — 54% of leads come via message. Google tracks response time and it directly affects your LSA ranking. Set up Avoca or a dedicated person to monitor LSA messages. Every minute matters.
- Dispute invalid leads within 30 days — You've successfully credited 7 leads. Keep disputing duplicates, spam, and out-of-area leads within the 30-day window. At $45–85/lead, each successful dispute is real money back.
- Upload professional photos and update GBP — LSA ranking is heavily influenced by your GBP profile quality: reviews, photos, response rate, and business info completeness. Professional truck/team photos increase click-through.
- Expand service categories — If you're only listed for HVAC, add plumbing and electrical categories. More categories = more impression opportunities. HVAC maintenance (16 leads) dominates — water heater and plumbing could add 30%+ lead volume.
- Track charge rate monthly — target 80%+ — Current 76.7% is healthy but improvable. Faster response times and tighter service area = fewer invalid leads. Every 5% improvement in charge rate saves ~$300/month.
🚨 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 ✅ UNBLOCKED — Greg provided goldenruleatgmail.com credentials (Mar 6). Google connector now active. Campaign data accessible.
- 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.
Campaign Overview
⚠️ CTV Is an Awareness Channel Being Measured as a Performance Channel
The 0.003% CTR is normal for CTV — it's TV advertising, not search ads. The $29K spend generated 531K impressions across Des Moines. This is brand awareness, not direct response. Evaluate CTV by brand lift and recall, not by clicks or direct conversions.
Tactic Breakdown
| Tactic | Impressions | Clicks | Spend | Conversions | CPM |
|---|---|---|---|---|---|
| Premium Publisher AGF | 374,335 | 11 | $16,360 | 99 | $43.70 |
| Live Sports | 82,089 | 5 | $6,323 | 75 | $77.03 |
| YouTube TV | 48,962 | 0 | $5,700 | 0 | $116.42 |
| Site Retargeting | 26,463 | 0 | $1,061 | 12 | $40.11 |
Geographic Delivery
| City | ZIP | Impressions | Conversions |
|---|---|---|---|
| Ankeny | 50023 | 20,855 | 0 |
| West Des Moines | 50265 | 13,166 | 1 |
| West Des Moines | 50266 | 11,444 | 1 |
| Des Moines | 50312 | 8,453 | 0 |
| Waukee | 50263 | 7,702 | 0 |
| Urbandale | 50322 | 6,957 | 0 |
| Johnston | 50131 | 5,763 | 0 |
| Grimes | 50111 | 4,711 | 0 |
🚩 Zero Utah Impressions
ALL CTV delivery is Iowa/Des Moines ONLY. Zero Utah impressions. If you're paying for CTV in Utah, that money isn't showing up here. Ask MediaSpark to confirm Utah CTV status.
Conversion Breakdown
Note: These are view-through conversions — someone saw a CTV ad and later took action. Not direct click-to-convert.
💡 Recommendations
1. STOP measuring CTV like Search/PPC — it's an awareness channel. Track brand search lift after CTV flights, not CTR.
2. CONFIRM Utah CTV status — zero Utah impressions visible. Is there a separate Utah CTV campaign? If so, where's the data?
3. Site Retargeting is the most efficient tactic at $40 CPM with 12 conversions — consider shifting more budget here.
4. Premium Publisher AGF has highest volume but lowest conversion rate — review creative rotation.
5. YouTube TV: $5,700 spent with ZERO conversions — either the attribution is broken or the creative isn't working.
Current Month Trend
Source: Datorama (MediaSpark) — Golden Rule 2026 campaign. Data range: Jan 1, 2025 – Mar 6, 2026. Conversions are view-through attribution.
| 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.
💡 Recommendations
- Prioritize Hot Zone ZIPs for direct mail — Focus first 3 campaigns on the highest-density Hot Zone ZIPs (pre-1980 homes, high income, high owner-occupied). These homes need upgrades NOW. Budget $0.50–0.75/piece, 1,000 per ZIP per drop.
- Create zone-specific landing pages — Build 3 landing pages: /hvac-older-homes (Hot Zone pitch: "Your 40-year-old furnace is costing you $800+/year extra"), /hvac-maintenance (Warm Zone: tune-up plans), /new-home-warranty (Growth Zone: builder warranty expiring).
- Geofence the top 10 Hot Zone ZIPs — Run display/CTV ads geo-targeted to the top 10 ZIPs by pre-1980 housing percentage. Creative: "Is your home's heating system older than your car?"
- Cross-reference with ServiceTitan job history — When connected, overlay actual Golden Rule job locations on this ZIP map. Find ZIPs with high potential but zero jobs = untapped territory. Find ZIPs with lots of jobs = testimonial goldmine.
- Use ZIP income data for pricing tiers — ZIPs with median income >$100K can absorb Premium membership ($299). ZIPs under $75K respond better to Basic ($99) with financing options.
| Metric | Current Value | Source | Status |
|---|---|---|---|
| Google Review Rating | 4.6 stars (Iowa) | Google Business Profile | 🟢 Live |
| Total Google Reviews | ~1,200 | Google Business Profile | 🟢 Live |
| Review Response Rate | TBD | GBP — needs Account ID | 🟡 Pending |
| Avg Days to First Review | Unknown | ServiceTitan + GBP | ⚪ Needs Data |
| Membership Conversion Rate | Unknown | ServiceTitan | ⚪ Needs Data |
| Member Churn Rate (Annual) | Unknown | ServiceTitan | ⚪ Needs Data |
| Cross-sell Rate (HVAC→Plumbing) | Unknown | ServiceTitan | ⚪ Needs Data |
| Referral Rate | Unknown | ServiceTitan + HubSpot | ⚪ Needs Data |
| Avoca AI Answer Rate | Unknown | Avoca MCP (connected) | ⚪ Needs Baseline |
| Customer Lifetime Value | Unknown | ServiceTitan + Accounting | ⚪ Needs Data |
Data Priority
ServiceTitan MCP is already connected with 4 tools (Jobs, Calls, Invoices, Customers). Querying membership enrollment, churn, and cross-sell data is the single highest-leverage data pull — it unlocks 5 of the 7 missing metrics above.
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? |
|---|
💡 Recommendations
- Launch "No Surprise Guarantee" landing page — Create a dedicated page at goldenrulephc.com/no-surprises with written estimate policy, real customer testimonials, and a price-match promise. 34% of competitor complaints are about surprise fees — this is your #1 differentiation opportunity.
- Train technicians with competitor pain script — Give techs a one-page card with the top 6 competitor complaints and Golden Rule's counter-promise for each. When a customer says "I'm getting other quotes," the tech should address these fears proactively.
- Build a "Why Golden Rule" comparison page — Not a direct competitor attack, but a values-based page: "What we promise" covering same-tech guarantee, 2-hour windows, upfront pricing, no-pressure diagnostics. Optimize for "best HVAC company SLC" searches.
- Monitor competitor reviews monthly — Set up Google Alerts or BirdEye for top 5 competitors. New negative reviews = new content opportunities. Each pain pattern is a blog post and Google Ads headline.
- Weaponize the "Second Opinion" offer — 28% of complaints are aggressive upselling. Run a Google Ads campaign: "Told you need a $12K system? Get a free second opinion from Golden Rule." Target competitor brand names.
⚠️ 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
- ✓ 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.
💡 Recommendations
- Launch Basic at $99 as a loss-leader — Your $99 plan is 58–72% cheaper than competitors. Lead EVERY marketing piece with "$99/year — cheapest HVAC plan in Utah." The goal isn't the $99 — it's the lifetime customer relationship and upsell to Plus/Premium.
- Create a 12-month auto-upsell sequence — At the 10-month mark, email Basic members: "Upgrade to Plus for just $100 more — includes 2 tune-ups + 15% parts discount." Target 25% Basic→Plus conversion. ServiceTitan can automate this when connected.
- Bundle membership into every repair quote — Every tech quote over $500 should include: "Add Gold Club membership and save $X on this repair + get annual tune-ups included." Make the savings math obvious.
- Offer 1-year free membership for negative review recovery — When a customer has a bad experience, offer a free Gold Club year ($99 value) as a recovery gesture. This turns a 1-star review into a retained customer. NOT for review incentivization (that violates Google policy) — purely for service recovery.
- Set 500-member target for Year 1 — 500 × $99 = $49,500 ARR. At 25% upsell to Plus: additional $12,500. Total membership revenue target: $62K/year. Track monthly sign-ups on this dashboard.
- Add membership to the website with online sign-up — Currently membership requires calling in. Add a /gold-club page with Stripe or ServiceTitan checkout. Reduce friction to zero.
| 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.
💡 Recommendations
- Implement NiceJob for review requests FIRST — This is the #1 priority automation. Reviews drive LSA ranking, GBP visibility, and trust. $75/mo to automate post-service review requests. Target: 20+ new Google reviews/month within 60 days.
- Set up Mailchimp seasonal sequences — 4 automated emails: Winter prep (Oct), AC tune-up (May), anniversary reminder (12 months post-service), and weather-triggered alerts. One-time setup, $20–50/mo, runs forever. Email has the highest conversion rate of any channel (7.8%).
- Automate LSA budget rules — Set up Google's automated rules: increase budget 20% when lead volume drops below 2/day, decrease when CPA exceeds $85. Zero cost, prevents budget waste.
- Launch Buffer for social posting — 3 posts/week: 1 job photo, 1 tip/educational, 1 community/team content. $15–50/mo. Social isn't a lead gen channel for HVAC, but it builds trust and supports other channels.
- Connect ServiceTitan to automate membership renewals — When ST is connected via the MCP pipeline, automate: 60-day renewal reminder, 30-day "last chance" email, auto-renewal confirmation. This prevents membership churn.
- Prioritize by ROI: Reviews > Email > LSA rules > Social — Don't try to launch everything at once. Week 1: NiceJob. Week 3: Mailchimp. Week 5: LSA rules. Week 7: Buffer. Each one gets 2 weeks to stabilize before adding the next.
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 |
| 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.
💡 Recommendations
- Start relationship-building with Tier A owners NOW — Don't cold-approach with "want to sell?" Instead, join the same trade associations, attend the same HVAC supplier events, invite to Golden Rule community events. Acquisitions take 12–24 months of relationship.
- Hire a local M&A broker with HVAC experience — Look for brokers who specialize in home services. They'll know which owners are quietly exploring options. Budget $5K–10K retainer + success fee (typically 5–8% of deal value).
- Prioritize Thornton Plumbing & Heating — 92 years old, $6.5M revenue, aging leadership signals. This is the #1 acquisition target. A Thornton acquisition adds Midvale territory + 500 reviews + a century of brand equity.
- Run a "acqui-hire" play on Bernie's — $1–2M revenue, 3.7 stars, only 12 reviews. This is a distressed asset opportunity. The value is the Utah County territory, not the brand. Offer to hire their techs and absorb the customer list.
- Build an acquisition scorecard — Track each target monthly: owner age, recent leadership changes, review sentiment trending, job postings (hiring = growing, not selling; NOT hiring = possible wind-down). Add to this dashboard when ServiceTitan connects.
- Get pre-approved for SBA 7(a) financing — For acquisitions under $5M, SBA loans offer 10-year terms at prime + 2.75%. Get pre-approved now so you can move fast when an opportunity opens. Mark's 27-year track record is strong for SBA approval.
🚦 Campaign Launch Checklist (Gating Controls)
A campaign can scale ONLY when:
| Action | Target | Status | Marketing Implication |
|---|---|---|---|
| Stabilize UT first-line | Humans on front-end | ✅ Done (Feb 25) | Humans replaced Avoca on UT front-end. Avoca = spam gateway only. |
| Reduce AI→human transfers | ≤10% | ⚠️ N/A (humans now) | Metric shifts to human speed-to-lead SLA |
| Spam exclusion | ≥90% accuracy | ✅ Live (Jan 21) | Grimes: 43% true booking rate. Utah: 12%. Grace (Avoca) refining logic. |
| Build post-handoff visibility | End-to-end tracking | 🔴 Gap | Gating dependency for scaling. Needs ServiceTitan API. |
| 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
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.
Right now, Utah visitors see the Iowa number (515) 393-4526 on every page except /location/utah/. Every misrouted call is a lost lead. Hard-code (801) 218-2225 in header, footer, CTA buttons, and mobile sticky bar on all Utah landing pages.
Pages shared across markets (service pages, about, etc.) need geo-detection or at minimum a Utah-specific variant. Until ServiceTitan call tracking is live, hardcode the Utah number on Utah-targeted pages.
The main landing page and top city pages have zero forms. Add a Gravity Form above the fold on /utah-urgent-repair/, /location/utah/, and the 5 highest-traffic city pages. Match the Iowa booking form pattern.
$2,415 spent on competitor name searches (Smedley, Genuine Comfort, Anytime, etc.) with zero conversions. Pause all competitor keyword ad groups immediately. Reallocate budget to brand protection and city-specific campaigns.
Create a shared negative keyword list covering: all competitor names, supply/parts terms (HVAC supply, Goodman, Rheem, Lennox, etc.), DIY searches, job searches, and review-only queries. Apply across all active campaigns to prevent future bleed.
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.
| Date | Property | Action | Status | By |
|---|
Tech Stack & Budget Map
Full view of every tool, its cost, integration level, and where it sits in the customer journey. Based on Mark's 2026 Marketing Budget.
Customer Journey Tool Map — $10,905/mo Software + $39,326/mo Media
💰 ROI Watch: Schedule Engine
Schedule Engine is the most expensive single tool at $3,500/mo. Track its after-hours booking volume and conversion rate to justify ROI. If it books 30+ jobs/month at $400+ avg ticket, the math works. Below that, renegotiate or replace.
🚨 HubSpot Exit: ~$24K/yr Savings
HubSpot (~$2,000/mo) is only used for 3-question web forms — massive overkill. Contract believed to expire ~June 2026. Greg documenting what breaks if removed. Replacement: WordPress forms ($0). See HubSpot Audit section below for full exit plan.
📋 Replacement Candidate: Geckoboard
Geckoboard ($175/mo) could potentially be replaced by this dashboard once live data is flowing. It currently serves as an office KPI display — a wall-mounted browser showing this dashboard achieves the same goal at zero marginal cost.
Budget Analysis
| Tool / Channel | Category | Monthly Cost | Annual Cost | Status | Integration | Recommendation |
|---|---|---|---|---|---|---|
| HubSpot | Software | $1,833 | $21,996 | Active | MCP Connected | Overlaps with Chiirp — evaluate consolidation |
| TV (KCCI + WHO) | Media | $18,500 | $222,000 | Active | Standalone | Track with promo codes & vanity URLs |
| CTV / Connected TV | Media | $11,000 | $132,000 | Active | Standalone | Monitor view-through attribution |
| Radio | Media | $6,826 | $81,912 | Active | Standalone | Track with unique phone number |
| Schedule Engine | Software | $3,500 | $42,000 | Active | Native ST Integration | Track after-hours bookings/month — need 30+ at $400+ |
| Direct Mail | Media | $3,000 | $36,000 | Active | Deep ST Integration | Strong ROI through Customer Lobby |
| ST Marketing Pro | Software | $2,500 | $30,000 | Active | Native ST Module | Core attribution + email + DNI — keep |
| SEO & Website | Services | $2,500 | $30,000 | Needs Audit | Standalone | Identify SEO provider — Mark to confirm |
| Chiirp | Software | $1,500 | $18,000 | Active | Deep ST Integration | Overlaps with HubSpot — consolidation candidate |
| SEMrush | Software | $539 | $6,468 | Active | Standalone | Essential for competitive intelligence |
| BBB | Software | $333 | $3,996 | Active | Standalone | Trust signal — low cost, keep |
| Vidyard | Software | $300 | $3,600 | Underutilized | Standalone | Activate or cancel — currently idle |
| Geckoboard | Software | $175 | $2,100 | Replaceable | Pulls from ST | This dashboard can replace it — save $175/mo |
| Exclaimer | Software | $58 | $696 | Active | Standalone | Low cost, useful for branding — keep |
| Misc Tools | Software | $167 | $2,004 | Unknown | Various | Mark to identify in contract audit |
Vendor Contracts — Audit Status
Mark was assigned to compile all vendor contract terms, costs, modules, and expiration dates (from today's sync meeting, March 6).
Action Required: Contract Audit
Mark Paup committed to collecting contract terms, costs, module breakdowns, and expiration dates for all vendor software. Drop into Google Drive when ready.
$1,833/mo — overlaps with Chiirp. What modules are active? What functions does Golden Rule actually use?
$3,500/mo — Greg to document: how many after-hours bookings/month? What's the ROI?
$2,500/mo combined. Who is the SEO provider? What specific activities? Mark to identify.
$1,500/mo overlaps with HubSpot automation. Which wins? Greg to document both flows.
Missing Data — Contracts Not Yet Received
Once Mark provides the contract documents, this section will be populated with: contract terms, renewal dates, cancellation windows, module breakdowns, and cost-per-feature analysis. Until then, the budget numbers above are from Mark's 2026 marketing budget spreadsheet.
HubSpot Audit — ~$2,000/month
🚨 Verdict: Overkill — Exit Plan Underway
From the March 6 sync with Mark: HubSpot is only being used for website lead capture forms (a 3-question version rebuilt from Schedule Engine because the SE 5-question form had too much drop-off). That's it. No CRM, no email marketing, no automation. Mark's reaction: "That's what I saw today and I'm like, 'What are we doing here?'"
"You don't need HubSpot. It's overkill, you're using a sledgehammer when you just need a finger." — Diraj Goel, March 6, 2026
How It Got Here
Jesse (former marketing director) originally set up HubSpot and Schedule Engine. When Schedule Engine's 5-question form had too much drop-off, someone rebuilt a shorter 3-question form in HubSpot. Greg inherited the setup but doesn't fully understand the configuration.
There's also a pricing estimator on the website that redirects to a separate site and creates leads in HubSpot — this flow needs to be mapped before cancellation.
Exit Plan
- Greg documents everything — What forms exist, what fields they capture, where leads go, what triggers fire. Assigned March 6.
- Mark confirms contract terms — End date, auto-renewal clause, cancellation window. Believed to be ~June 2026.
- Build replacement forms — WordPress + Gravity Forms or native ServiceTitan web forms. 3 questions, same fields, same lead routing.
- Migrate pricing estimator flow — Map the external pricing tool integration and reroute lead creation.
- Cancel at contract expiry — Do NOT cancel early (penalty risk). Target: June 2026.
Savings: ~$24,000/year. Replacement cost: $0 (WordPress forms are free).
Consolidation Map (Updated)
| HubSpot Function | Replacement | Status |
|---|---|---|
| Web Lead Capture Forms (3-question) | WordPress + Gravity Forms or ST Web Forms | ✅ Easy — straightforward rebuild |
| Pricing Estimator Lead Routing | Direct-to-ServiceTitan or WordPress webhook | ⚠️ Needs Greg to map the flow |
| CRM / Contact Management | Not used in HubSpot | N/A — already in ServiceTitan |
| Email Marketing / Sequences | Not used in HubSpot | N/A — Chiirp + ST Marketing Pro |
| Reporting / Dashboards | Not used in HubSpot | N/A — Command Center + GA4 |
Source: March 6, 2026 Diraj/Mark sync call (CAAI Transcript IDs: 5573, 5574). Greg's system flow documentation still pending for final validation.