Skip to content New SourceLoop MCP: chat with your attribution data in Claude, ChatGPT & Cursor
SourceLoop

Lead source attribution for home services

Marketing attribution tool for home services business

Attribution built for HVAC, plumbing, roofing, and contractors. The phone is your main lead, so SourceLoop ties every call and form to the exact ad, search, or campaign that earned it, follows it into Jobber to the paid invoice, and sends the wins back to your ads.

Free 7-day trial. No credit card required.

SourceLoop dashboard showing home-services calls and jobs attributed by channel

Used by 750+ marketing teams, agencies, and SaaS companies

  • Bennett
  • Vectivo
  • Siite
  • Huemor
  • Infludata
  • Wonsulting
  • Orchly
  • PacificCrest
  • ReachTopCPA
  • BrassAnimals
  • TechCXO

Built for home services

Every call, form, and booked job tied to the ad that earned it

See cost per booked job by channel, roll revenue up to source, and capture leads from phone, web, and Local Services Ads, all built for service-area businesses.

Cost per booked job

What each channel really costs you, per job that actually books.

Revenue by source

Job revenue rolled up to the channel, that drove the call.

Lead sources

Phone, web, and chat in one place, every lead attributed.

Call tracking

Every call tied to the ad that drove it

Most home-services leads call. Connect CallRail, CallTrackingMetrics, Invoca, or Mediahawk and every inbound call becomes an attributed lead, matched to the caller's web journey. Answered calls over 60 seconds count as Good, so hang-ups never inflate your numbers.

  • CallRail, CallTrackingMetrics, Invoca, Mediahawk
  • Calls over 60 seconds counted as Good leads
Learn more about call tracking
A

(480) 555-0133 · Inbound call

2m 51s · recording attached

First touch Google LSA · Local · ac_repair
Journey before the call
Local Services Ad click 1d ago
Visited /emergency-repair 1d ago
Called the dispatch line 2h ago
Booked job $480 just now

Channel attribution

Know your true cost per booked job, by channel

Multi-touch attribution on one first-party dataset. See which campaigns, keywords, and Local Services Ads drive calls and booked jobs, instead of guessing from a last click.

  • UTM, GCLID, and keyword on every job
  • Cost per booked job, by channel
Learn more about attribution

Cost per booked job · Last 30 days

Booked jobs
ChannelSpendJobsCost per job
Google LSA$3.4K89$38
Google Ads$4.2K69$61
Meta$2.6K35$74
Referral$041$0
Bing$1.1K14$79

Jobber

Every paid invoice in Jobber, tied back to the ad

Connect Jobber in one click. Requests, quotes, jobs, and invoices come in, and each invoice counts as revenue the day it is issued. Website and call leads can be created as Jobber clients with their source filled in, so your office sees where every customer came from.

  • Revenue per channel, from real invoices
  • Lead source written onto each Jobber client
Learn more about CRM sync
SourceLoop Jobber connection showing requests, jobs, and invoices syncing with their lead source

Job funnel

See where leads drop off on the way to a job

Track the path from call or form to booked, completed, and repeat job. Slice by source so you see which channel sends leads that actually close, and where to put more spend.

  • Build any job funnel in clicks, no SQL
  • Source breakdown for every step
Learn more about funnels

Job funnel · Last 30 days

1,240Call/Form
422Booked
↓ 66%
351Completed
↓ 17%
138Repeat
↓ 61%

Conversion sync

Send booked jobs back to your ads

Forward booked and won jobs to Google Ads and Meta as server-side offline conversions so smart bidding chases real jobs, not the cheapest clicks.

  • Real-time, server-side via Conversions API
  • No GTM, no DIY CAPI endpoint to babysit
Learn more about server-side conversion tracking

Booked-job conversions pushed

Google Ads Last sync 8s ago 422 Live
Meta CAPI Last sync 12s ago 214 Live
ChatGPT Ads Last sync 20s ago 47 Live
TikTok Events API Coming soon Coming soon

FAQ

Home services attribution questions

Which ad actually made the phone ring?

SourceLoop captures the source, UTM, GCLID, and keyword on a visitor's first page view and keeps them through the session. When that visitor calls a CallRail, CallTrackingMetrics, Invoca, or Mediahawk tracking number, the call is matched to their session, so you see the exact ad and campaign that made the phone ring.

Does this work with Google Local Services Ads and Google Ads?

Yes. SourceLoop captures GCLID and campaign data from Google Ads and ties calls and form leads back to the campaign and keyword. Local Services Ads leads count as paid search, including Jobber clients whose lead source says Google Local Services. Booked jobs then go back to Google Ads as conversions so bidding optimizes toward real work.

Does it work with Jobber?

Yes. Connect Jobber in a click and every request, quote, job, and invoice comes in, with revenue counted the day each invoice is issued. New website and call leads can be created as Jobber clients, with their source written onto the client, so you see which ad produced paid work.

How do I separate real calls from hang-ups?

Turn on the ready-made rule that counts answered calls over 60 seconds as Good leads. Short calls and spam stay out of your cost per lead, and only real calls go back to Google Ads.

Can I track multiple locations or a franchise?

Yes. Track each location's site, tracking numbers, and campaigns together and compare performance per location, with each number attributed independently.

What about calls from a yard sign or truck wrap?

Those still record as leads. With no web session behind them there's no journey to attach, so they show as Direct, while calls that started on your site carry full source and campaign detail.

Can I push booked jobs back to my ad platforms?

Yes. Forward booked and won jobs to Google Ads, Meta, and ChatGPT Ads as server-side offline conversions so smart bidding optimizes toward jobs that close, not the cheapest clicks.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta