Back to Blog

Channel Attribution for Home Service Contractors: How to Assign Credit Across Google, Facebook, LSA, GBP, and Truck Wraps

Pipeline Research Team
Blog

Key Takeaways

  • 72% of contractors with consistent lead flow run a multi-channel mix - combining Google and Facebook generates 42% more leads at 40% lower CPA than single-channel
  • LSA leads convert at 31% vs 12% for traditional Google Ads, at $161 vs $312 average customer acquisition cost
  • GA4 strips source, medium, and campaign data from default channels - CallRail sends them as custom parameters to fix this
  • Only 52% of users actually fill the 'lead source' field - which makes most contractor attribution data unreliable from the start

The average HVAC contractor pays $115 per Google Ads lead in 2025, with non-branded search hitting $149 and Performance Max landing at $72, per LocaliQ benchmark data. Plumbing non-branded clicks run $167 per lead, while branded keywords average $34.

You are spending money across five channels right now: Google Ads, Facebook, Local Service Ads, Google Business Profile, and truck wraps. Your CRM probably credits Google Ads for 80% of jobs.

That number is wrong.

Why is single-channel attribution lying to you?

JobNimbus published 2026 data showing 72% of contractors with consistent lead generation run a multi-channel mix. Single-channel operators generate 42% fewer leads at 40% higher cost per acquisition.

That gap isn’t a recommendation. It’s a measurement problem disguised as a strategy problem.

When you run Google + Facebook + LSA + GBP + truck wraps and credit Google Ads with every conversion, you starve the channels that created the demand. The homeowner saw your truck in their neighbor’s driveway in March. They searched your company name in May. Google Ads “won” the click.

A roofing company that cut local radio based on last-click data found radio was the first touchpoint for 35% of their highest-value jobs. Lead quality dropped for six months before they reversed the cut.

What does channel attribution actually mean for a contractor?

Channel attribution assigns credit to each marketing channel in a customer’s journey to booking. Not just the click that converted. The truck wrap, the GBP photo view, the Facebook ad they scrolled past, the LSA they tapped, the Google Ad they clicked.

Each one gets a share of credit, weighted by your model.

For most contractors, position-based attribution beats last-click by a factor of 2-3x in budget decision accuracy. First touch (40%) and last touch (40%) carry the weight. Middle touches split the remaining 20%.

The reason: in home services, the first touch builds trust (truck wrap, neighbor referral, GBP review). The last touch captures intent (LSA tap, Google Ad click, direct form fill). Middle touches are noise.

How do you set up channel attribution with CallRail and GA4?

GA4 broke attribution out of the box. Google did not make source, medium, campaign, and landing page fields available in GA4’s default channels.

CallRail’s workaround: send attribution data as custom parameters, requiring you to set up custom dimensions and metrics immediately after activating the GA4 integration. Skip that step and your attribution data goes nowhere.

Here is the stack that works:

CallRail dynamic number insertion - swap the phone number on your site based on the visitor’s source. Google Ads visitors see one number. LSA, Facebook, and direct traffic see different ones. The phone number tells you the channel before the caller says a word.

Tracking phone numbers per offline channel - one number on truck wraps, one on yard signs, one on door hangers. CallRail pricing starts around $45/month and pays back in week one when you discover which offline channel is dead.

GA4 with custom dimensions - configure the four custom dimensions CallRail requires (source, medium, campaign, landing page) so call data flows into your GA4 reports correctly.

Offline conversion import - GA4 connects offline events to prior web sessions using client_id and session_id. When a job closes, send it back to GA4 via Measurement Protocol. Events appear in near-real-time and can be backdated up to 72 hours.

UTM parameters on every link - every ad, email, and social post. No exceptions. See our UTM parameters guide for the naming convention.

Read more about GA4 setup for home services to wire this end to end.

How do you split credit across Google Ads, LSA, Facebook, and GBP?

The five channels behave differently. Your attribution model has to reflect that.

Google Local Service Ads. LSA leads convert to paying customers at 31% vs 12% for traditional Google Ads, with average customer acquisition cost of $161 vs $312 per JWeis Agency 2026 data. HVAC contractors pay $45-$85 per LSA lead, plumbing $40-$75, electrical $35-$70, roofing $50-$95 (Home Service Direct 2026 benchmarks).

LSA is high-intent, last-touch heavy. Credit it for what it does: capture booked jobs from people ready to call right now.

Google Ads (non-LSA). Costs $32.77 per click for HVAC in 2025, up from $29.03 in 2024. Non-branded search costs $149/lead, branded $34, Performance Max $72.

Branded Google Ads is fake attribution. Those people typed your name. They came because of your truck wrap, your GBP, or your last job. Move branded spend credit upstream to your brand channels.

Facebook/Meta Ads. Plumbing Meta Ads cost $72.97 per lead. Meta rebuilt click-through attribution on March 3, 2026: click-through now counts only link clicks, and everything else moved to a new column called engage-through.

Meta is awareness and remarketing. It rarely closes the deal. Credit it for the first touch and middle touches, not the last.

Google Business Profile. GBP is the cheapest channel you have and the hardest to attribute. Track GBP-driven traffic via the GBP-specific UTM parameters Google provides, then watch direct traffic and branded search volume.

If GBP is working, direct traffic and branded search both grow.

Truck wraps, yard signs, vehicle graphics. These show up as branded search, direct visits, and “I saw your truck” answers to your intake question.

A truck wrap study from 3M tracked 600 daily impressions per wrapped vehicle. Most contractors run 3-8 trucks. That’s 1,800 to 4,800 impressions daily, before you spend a dollar on Google.

How do you handle offline conversions in the model?

This is where most contractors give up. Don’t.

Ask “how did you hear about us?” on every call. Outfunnel found only 52% of users actually fill the lead source field in their CRM. Half your attribution data doesn’t exist because your CSR didn’t ask.

Train your office to ask the question, then push a dropdown choice. Free text answers are useless. Predefined options - Google, LSA, Facebook, GBP, truck/sign, referral, repeat customer - get filed correctly.

Use unique promo codes for offline. “Mention NEIGHBOR50” for door hangers. “Mention TRUCK25” for vehicle wraps. The promo code reveals the channel even when the customer forgets.

Send job revenue back to GA4 and Google Ads. When a job closes in your CRM, fire the offline conversion to GA4 via Measurement Protocol and to Google Ads via the offline conversions API. Now Google Ads optimizes for booked revenue, not form fills.

One contractor running this setup found his highest cost-per-lead campaign produced his lowest cost-per-revenue. He would have cut it on the lead data alone.

Read more about tracking lead sources end to end for the operational playbook.

What does the channel mix look like for a real contractor?

A four-truck HVAC company in Phoenix ran this exact stack in 2025. Monthly marketing spend: $14,200.

Google Ads: $6,400/month - 142 leads at $45 CPL, 19 closed jobs at $39,000 revenue. Last-click view: $337 cost per sale.

LSA: $2,800/month - 58 leads at $48 CPL, 18 closed jobs at $52,000 revenue. Last-click view: $156 cost per sale.

Facebook Ads: $1,900/month - 73 leads at $26 CPL, 4 closed jobs at $11,000 revenue. Last-click view: $475 cost per sale.

GBP optimization (agency fee): $600/month - 41 “calls from GBP” tracked, 12 closed jobs at $34,000 revenue. Last-click view: $50 cost per sale.

Truck wraps + yard signs: $2,500/month amortized - 14 “saw your truck” answers, 11 closed jobs at $31,000 revenue. Last-click view: $227 cost per sale.

Total: 64 closed jobs, $167,000 revenue, $221 blended cost per sale.

Then they switched to position-based attribution. Truck wraps and GBP picked up first-touch credit on 22 of the 19 Google Ads jobs. The new map: Google Ads got 11 first-touch jobs instead of 19. Truck wraps got 14 first-touch jobs instead of 11.

The owner cut Facebook from $1,900 to $400. Shifted $1,500 to GBP photo refresh and truck wrap maintenance. Three months later: 71 closed jobs, $189,000 revenue, $200 blended cost per sale.

The lesson isn’t “Facebook is bad.” The lesson is his Facebook was attributing wrong, and he had no way to know without position-based credit.

What do contractors miss when they only track digital channels?

Three blind spots show up in nearly every contractor’s attribution setup.

Repeat customers credited to the wrong channel. A two-year customer searches your name and clicks a Google Ad to book. Google Ads gets the credit. The original channel that won them - probably a yard sign or referral - gets nothing. Tag repeat customers in your CRM so they exit attribution.

Phone calls that bypass your website. Someone sees your truck, calls the number on the wrap directly, never touches your site. If you only have one phone number, you have no idea this happened. Tracking phone numbers per channel solve this.

Long sales cycles in roofing and remodeling. A bath remodel takes 60-90 days from first touch to deposit. Default attribution windows are 30 days. Extend your attribution window to match your sales cycle or you’ll miss every first touch.

Cost per lead vs cost per job covers why these blind spots matter at the revenue line.

How do you decide what to cut and what to scale?

Run channel attribution for 90 days. Pull these four numbers per channel:

First-touch share - what percentage of jobs had this channel as the first interaction?

Last-touch share - what percentage of jobs had this channel as the final interaction?

Position-based revenue - apply 40/20/40 weights, sum the revenue.

Position-based cost per sale - channel spend divided by position-based revenue, times your average ticket.

A channel that is rarely first-touch AND rarely last-touch is a middle-touch noise channel. Cut it.

A channel that is high first-touch but low last-touch is a demand generator. Scale it.

A channel that is high last-touch but low first-touch is a demand capturer. Protect it but don’t expand it.

A channel that is high on both is your money channel. Double down.

For most contractors, LSA wins on last-touch, GBP and truck wraps win on first-touch, Facebook is mostly middle-touch noise, Google Ads is split.

FAQ

How long does it take to set up channel attribution?

A working CallRail + GA4 + offline conversion stack takes 6-10 hours of setup. CallRail account creation, dynamic number insertion, GA4 custom dimensions, offline conversion API, and CRM lead source field cleanup. Most contractors do it across two afternoons.

How much does channel attribution software cost?

CallRail starts around $45/month. GA4 is free. Offline conversion API is free. The hidden cost is the agency time or in-house hours to wire it correctly. Budget $1,500-$3,000 one-time for setup if you outsource.

Do I need a CDP or attribution platform for this?

No. Enterprise tools like Adobe Analytics, Rockerbox, and Northbeam are built for $10M+ ad spend. A four-truck HVAC company gets 90% of the value from CallRail + GA4 + a clean CRM lead source field.

What attribution model should I use?

Position-based (40/20/40) for contractors with sales cycles under 30 days. Time-decay for roofing, remodeling, and other long-cycle trades. Avoid last-click default unless you only have one marketing channel.

Why is my Google Ads attribution different from GA4?

Google Ads uses its own click-based attribution. GA4 uses session-based. Numbers won’t match. Pick one source of truth (GA4 is usually better for multi-channel) and stop comparing.

What to do this week

Set up CallRail with dynamic number insertion if you don’t have it. Configure four custom dimensions in GA4. Add three unique tracking numbers for your top offline channels - truck wraps, yard signs, door hangers. Add the “how did you hear about us?” dropdown to your CRM and train CSRs to ask on every call.

For deeper reading, see multi-touch attribution for home services and marketing attribution for home service businesses.

The contractors who win at attribution don’t spend more. They spend with conviction because they know which dollars create demand and which dollars capture it.

Most home service marketing isn’t wasted on bad channels. It’s wasted on giving credit to the wrong ones.