How do you track offline sales from online ads?
You carry the ad click through to the moment the sale is recorded, then send that sale back to the ad platform with the click or the customer's details. Three things have to line up: capture, record, and return.
Say you sell kitchen remodels. Someone clicks an ad on their phone, fills in a form, and three weeks later signs a contract at their dining table. Your ad account saw a lead. Your bank saw 18,000. Unless something connects the two, the platform thinks that ad produced a form fill and nothing more, and it optimises toward more form fills, including the ones that never buy.
Capture is step one. When the visitor lands, the URL usually carries a click ID, such as gclid for Google or fbclid for Meta. You need to grab it and save it with the lead, ideally in a hidden form field or a stored cookie. If you skip this step, everything after it gets harder, because you are left matching on email or phone alone.
Be realistic about the limits. Safari caps cookies set by scripts at 7 days, and shorter after some tracker links, and iOS 17 can strip click IDs from links in some situations. So a share of your leads will arrive with no click ID. Do not chase perfection. Plan for a match rate you can live with.
Record is step two. The lead goes into a CRM, or a spreadsheet, or a phone system, and the click ID and contact details must travel with it. When the deal closes, the person handling it marks the outcome and the value. Simple beats clever here. A field that says Won plus an amount is enough to start.
Return is step three. When the stage changes, you send an event to the ad platform with the click ID if you have it, plus hashed email or phone, the value, and the time of the sale. The platform then ties it back to the original click.
Two timing rules matter. Meta rejects events sent more than 7 days after they happened, and events go through the Conversions API into a dataset now, since the old offline upload shut down in May 2025. Google Ads ignores uploads more than 90 days after the click. Check the current documentation before you build, because these rules move.
What about deals closed by phone or in person? The same idea applies. The salesperson still updates the CRM, and the CRM still triggers the event. The trick is discipline. If the rep forgets to mark it Won, the sale never returns. Many teams find that the tracking problem is really a habits problem, and a required field at the last stage fixes half of it.
Here is a made-up example, invented for illustration. A physiotherapy clinic runs Meta ads. Bookings come through a form, then the front desk marks each visit as booked, showed or no-show. Only the ones who showed get sent back. After two months, Meta had enough real signal to start finding people who actually turn up, and the clinic's no-show rate dropped from 22 percent to 14 percent. That is one invented clinic, not a promise, and results depend heavily on volume.
Volume is the honest limit. Ad platforms learn from repeated examples, so a business closing five deals a month gives them very little to work with. In that case, sending an earlier stage, like a booked call, can work better than waiting for the sale.
Privacy matters too. In the EU, storing a visitor ID needs consent, so make sure your consent banner covers this before you save anything.
So what do you use today to record a closed sale? Tell me and I can suggest the shortest path from there.
More on this: Offline conversions guide, and the complete guide to offline conversion tracking.