Offline conversion tracking for home services (roofing, HVAC, solar, plumbing)
Home services leads take days or weeks to become jobs. DataCops sends the qualified lead, booked estimate, completed estimate and signed job back to Meta and Google Ads, matched to the ad click, so campaigns learn from real jobs.

Trusted by agencies and brands running paid media










Home services leads do not buy on the day they click
A homeowner with a leaking roof searches at 9pm, clicks your ad, fills in the form and then waits. Your office calls the next morning. An estimate is booked for Thursday. The job is signed two weeks later, and the invoice is paid a month after that. Meta and Google saw the form fill. They saw nothing else.
That gap is the whole problem. The ad platforms learn from whatever you tell them. If the only thing you tell them is 'form submitted', they will find you more people who submit forms. In roofing, HVAC, solar and plumbing that includes people who never pick up the phone, people outside your service area and people shopping five quotes for a price. Offline conversion tracking means sending the later steps back, so the platforms learn from the leads that turned into jobs.
Which stages to send, and which to leave out
You do not need to send everything. Home services usually have a short list of stages that matter, and the order below works for most trades. Send the stage that is early enough to happen often and late enough to mean something.
Cancelled, no-show and lost are never sent by DataCops. That is deliberate. Sending 'lost' as an event would only teach the platform to find more of the people you lose.
- Qualified, in your service area. The lead is real, has the problem you fix and lives where you work. This is the stage most small shops should send first, because it happens for a good share of leads and it filters out the wrong postcodes.
- Booked estimate. Someone agreed to a time. In HighLevel this is the booked stage. It is the best signal for trades with a few dozen leads a month.
- Completed estimate. Your estimator actually stood in the house. In HighLevel this is the showed stage. It removes the people who booked and then vanished.
- Signed job, with value. The won stage, sent with the contract value. Send this once you have enough volume to feed it, and it lets you optimise toward revenue.
- Paid. Sent when the invoice is paid. Useful for reporting, less useful for optimising, because it arrives so late.
Example, made up
A roofer gets 60 leads a month. Twelve book an estimate, nine are completed, four are signed at an average of $14,000. Four signed jobs a month is too thin for an ad platform to learn from, so send booked or completed estimates as the main signal and keep signed jobs (with value) for reporting and your own review.
Seasonality: why the platform seems to forget you
Home services swing hard with the seasons. Roofing spikes after storms, HVAC after the first cold snap or heatwave, solar when incentives change, plumbing when pipes freeze. In the slow months there may be five or six leads a week, and that is too little for a platform to learn from.
Two habits help. First, send an earlier stage in the quiet months, so there are enough events to learn from, and move to later stages when volume is high. Second, keep sending through the off-season rather than switching everything off. A campaign that has been fed real outcomes all winter starts the spring rush ahead of one that went dark. Compare month against the same month last year, not against last month.
Call handling and duplicate contacts
Most home services leads arrive by phone. Someone clicks the ad, sees a number, and calls instead of filling in a form. Then your CRM creates a contact from the call, another from the form, and sometimes a third when a spouse rings back from a different number. Left alone, the same job can be counted two or three times.
Three things keep this clean. Merge contacts by phone number in your CRM before you rely on any stage. Send an order ID with each sale through the webhook; the same order ID sent twice counts once. And make sure the person who answers the phone moves the lead to a stage, because a stage only exists once a human or a workflow sets it. The delivery log shows each row as sent, held, skipped or failed, with the reason, so a duplicate shows up as a line you can read, not a mystery number.
A Monday review by campaign
Once stages are flowing, the most valuable habit is a weekly review, and it takes fifteen minutes. Every Monday, open the campaign list and look at each campaign against the stage you chose to optimise for, not against form fills.
Ask four questions per campaign: how many qualified leads did it produce last week, how many booked, what did each booked estimate cost, and did any stage fail to send. Pause the campaign with plenty of form fills and no qualified leads. Give more budget to the one with fewer leads and more booked estimates. If the delivery log shows held or failed rows, fix those first, because a missing stage looks exactly like a weak campaign.
Two ways in: HighLevel native, or a webhook
If your business runs on HighLevel, the connection is native. Install DataCops once on the agency, pick the sub-accounts, and the stages lead, booked, showed, won (with value) and paid go to Meta, Google Ads, TikTok and LinkedIn as the contact moves. The result is written back onto the HighLevel contact, so your office can see what was sent.
If you use another CRM such as Salesforce, Pipedrive, Close or Zoho, use the private sales webhook, directly or through Zapier, Make or n8n. Each post carries an event name, plus an email or a phone number, and optionally a value, currency, order ID and the ad click IDs. There is no native Salesforce or Pipedrive app, and Stripe and Paddle are not connected yet, so a payment taken there needs the webhook too.
What DataCops does, and what it does not
It keeps the ad click on your own domain for up to 90 days, matches each stage to that click or to hashed email and phone, sends it to the ad platform and logs the result per row. On Google Ads, conversion actions start as secondary, and booked or showed go only to a conversion action you map.
It does not read your calendar, decide who is in your service area or fix a messy CRM. It does not send cancelled, no-show or lost. It does not reverse refunds on Meta or TikTok, and per-row Google Ads rejections are not read back yet. Microsoft Ads is not supported. Sales that come from your CRM carry no bot check, so qualify them in the CRM first.
Set up offline conversions for a home services business
About 5 minutes per site. Agencies: about 15 minutes per client.
- Step 1code
Add the DataCops script
One script and one DNS record, so every ad click is kept on your own domain. - Step 2ads_click
Connect your ad accounts
Meta, Google Ads, TikTok and LinkedIn by sign-in. Skip the ones you do not run. - Step 3hub
Connect where jobs are tracked
HighLevel natively, or any other CRM through the webhook. Pick the stages to send.
Keep reading
- Offline conversions: the full guide to sending CRM sales back to your ads
- Meta offline conversions: Conversions API, the 7-day limit and matching
- Google Ads offline conversions: the 90-day click window and conversion actions
- HighLevel conversion tracking: the native install and the stages it sends
- Ads Warmup: send a CSV of past customers, up to 20,000 rows on a paid plan
- DataCops vs Zapier: if you already send sales through Zapier
- Offline conversions docs: the webhook fields and setup steps
- Pricing: free plan with 2,000 sessions, paid plans from $49 a month billed yearly
FAQ
They are the steps after the form: a qualified lead, a booked estimate, a completed estimate, a signed job or a paid invoice. You send them back to Meta or Google Ads so the campaign learns from leads that became jobs, not only from form fills.
Works with the rest of DataCops
Conversion API
Server-side conversions to Meta, Google Ads and TikTok, no code.
See Conversion APIAds Warmup
Feed your customer list to the ad platforms before you spend.
See Ads WarmupLeadCops
Verified leads, and conversions only once a lead qualifies.
See LeadCopsOffline Conversions
CRM, store and CSV sales matched back to the ad click.
See Offline ConversionsLet your ads learn from signed jobs
Send booked estimates and signed jobs to your ad platforms, logged per send. Start free.
Setup in 5 minutes. No credit card.