Metrics and analysis
Offline attribution: crediting the sale that does not happen online
Storefront, phone, WhatsApp and contracts signed off the internet. The four ways to tie that sale back to the ad, and what each one costs you.
Also available in: Português · Español
A large part of the economy closes its sales off the internet: clinics, dealerships, real estate, professional services, industry. The ad does the work, the person calls or walks in, and the system that would have measured it was not in the room.
Offline attribution is the set of methods for crediting that sale to the media that caused it. None is exact. All of them beat the current alternative, which is usually setting budgets on instinct.
Why the pixel does not solve it
The pixel measures what happens in a browser. The offline sale happens on a phone call, at a counter or in a meeting — three places with no browser.
What the pixel can measure is the middle of the path: the click, the visit to the contact page, sometimes a form submission. From there the trail ends. Optimizing on that intermediate event is what produces the classic case of low CPL and no sales: the campaign gets excellent at generating the event you told it to generate.
The four methods
1. An exclusive identifier per channel
The simplest and most underrated. Each channel gets its own phone number, WhatsApp link or coupon code.
- Meta ad → WhatsApp with a prefilled message carrying a code
- Google ad → a different number, or a different parameter in the message
- Organic → the number on the site
When the lead arrives, origin arrives with them, with no integration at all.
Cost: managing several numbers or codes. Loss: the person who saves the number and calls later by another route.
2. Asking during the conversation
"How did you hear about us?" — asked by the rep and recorded in a required field.
It looks crude and it is the method with the widest coverage in consultative selling, because it works even when the person switched devices, took three weeks, and came as a referral from someone who saw the ad.
Cost: team discipline. Loss: customer memory, which is poor — plenty of people answer "I found you on Google" for anything.
Use it as an audit, not a sole source: if tracking says 80% paid and the question says 40%, one of them is wrong.
3. Offline conversion uploads
You send the platform a list of who bought, with hashed email and phone, and it matches against who saw or clicked the ad.
This is the method that truly closes the loop: the sale shows up inside the ad manager, and the algorithm can optimize toward it.
Cost: a recurring export-and-upload process, and clean contact data. Loss: whoever bought with one phone number and saw the ad logged in with another.
It needs volume. With 20 sales a month, matching finds too few people for the number to support a decision.
4. Matching on your side
Instead of sending data to the platform, you join it internally: the lead arrived with a UTM, became a deal in the CRM, the deal closed. The link already exists — you just have to not lose it.
It is the method with the least loss whenever the lead passes through a form at some point, because origin travels along from the start. It is the path described in connecting Meta Ads to your CRM.
Cost: the initial plumbing. Loss: anyone who never filled a form — called straight from the ad, or walked into the store.
Which to choose
| Situation | Primary method | Audit |
|---|---|---|
| Lead fills a form | internal matching | ask during the conversation |
| Lead calls straight from the ad | number per channel | internal matching |
| In-store sale | coupon or asking | offline upload, with volume |
| Ecommerce with assisted sales | offline upload | internal matching |
The rule: start with the method that needs no integration, prove the number is useful, and only then invest in automating it. Plenty of operations do the opposite and spend three months building an integration for data that will not change a single decision.
What to measure when precision is impossible
Offline attribution does not deliver certainty, and insisting on it stalls the project. Change the target:
Coverage, not exactness. How many of this month's sales carry any recorded origin? That percentage is your health indicator, and it rises with work.
Stability, not precision. If paid has accounted for 55% of sales-with-origin for three months, you can set budgets on that without knowing the absolute number.
Relative comparison. Even at 60% coverage, comparison between campaigns stays valid, because the loss tends to be similar across them. The ranking survives better than the absolute value.
The test worth more than the integration
Before building anything, run this exercise on last closed month:
- List the sales.
- Mark the ones you can say where they came from.
- Compute the share.
If it comes to 20%, the problem is not tooling, it is process: nobody is recording origin anywhere, and no integration fixes that. If it comes to 70%, you already have a basis for decisions and just need to organize it.
The mistake that costs most
Treating what has no origin as if it were zero. The "no source" slice is often the largest in the report, and it is nobody's performance — it is what you do not measure yet.
Always show that slice beside the numbers. A report saying "55% of sales came from paid, 15% organic, 30% unattributed" is honest and useful. One that distributes those 30% across channels is fiction wearing the costume of precision.
For the situation where the sale takes so long that the window never closes, see measuring long sales cycles.
Frequently asked questions
Can I measure ads that produce in-store sales?
Yes, with loss. The routes are an exclusive coupon, asking at the counter, offline conversion uploads and matching by phone number. None captures everything, and combining two covers more than insisting on one.
What is an offline conversion upload?
Sending the platform a list of who bought, with hashed email or phone. It matches against who saw the ad and credits the sale. It needs volume and clean contact data.
Is it worth it for a small operation?
With few sales a month, automated matching does not find enough people to be reliable. At that size, asking at the close and writing it down beats any integration.
What margin of error should I accept?
Offline attribution works with coverage, not precision. Knowing 60% of sales have an origin, and that paid's share within it is stable, is already enough to set budgets.