In short
- Meta matches offline sales to people using customer details such as email and phone.
- Normalize and hash those details with SHA-256 before they leave your systems.
- Send the outcomes that matter, such as a qualified call or a closed sale, not every lead.
- Check in Events Manager that events arrive and match, and keep checking after go-live.
What an offline conversion is on Meta
Someone sees your ad on Facebook or Instagram, fills in a form or calls, and buys later over the phone or in person. That sale is an offline conversion. It happened, but not anywhere Meta can see.
Sending it back to Meta lets you link offline sales to the ads that influenced them, and lets Meta optimize toward people who become customers, not people who fill in forms.
How Meta is different from Google Ads
Google Ads matches an offline conversion to a click ID saved on the lead. Meta works differently. It matches the event to a person, using customer details you send with it.
- Email address and phone number are the details to get right first.
- Each event also says what happened (the event name), when, and where it happened, for example on a phone call or in a store.
- Meta compares the details with its own users and connects the event to the people who saw or clicked your ads.
That means the work is less about catching a parameter in the URL and more about getting clean contact details onto every lead.
What to capture in your CRM
- Email and phone on every lead, from forms, calls and chats.
- Campaign, ad set, ad and placement in your UTM parameters, so your CRM reports show which ads produced customers, and whether a lead came from Facebook or Instagram.
- The outcome and the date and time it happened.
- An ID for each record, such as an order or deal ID, so the same sale is not sent twice.
- A value, if you have one per outcome you trust.
Hashing: how customer details are sent
Email addresses and phone numbers are not sent to Meta in plain text. They are cleaned up and hashed first. Hashing turns the value into a fixed code. Meta hashes its own data the same way and compares the codes.
Normalize
Put each value in a standard format first: email in lowercase with no extra spaces, phone as digits only with the country code. Meta's documentation lists the format for each field.
Hash
Hash the normalized value with SHA-256.
Send the hash
Send only the hashed value with the event.
Skipping the normalize step is a quiet failure. "Jane@Example.com " and "jane@example.com" hash to different codes, so the event does not match.
How the data gets to Meta
Set up the dataset
In Meta Events Manager, use a dataset for your offline events and decide which event names you will send.
Choose the outcomes
Agree which CRM outcomes count, such as a qualified call, a booked appointment or a closed sale.
Send the events
Upload a file in Events Manager, or send events automatically through Meta's Conversions API from your CRM or an integration.
Check the match
Events Manager shows whether events arrived and how well they match. Look at it after the first send and again after any change.
Talk through your project
A free call about your integration, your CRM or whatever you are stuck on. Honest advice, even if you never hire us. No obligation.
Mistakes to avoid
- Sending email or phone without normalizing them first, so they do not match.
- Leads with no email or phone, for example calls logged without the caller's details.
- Every new lead sent as a conversion, which tells Meta to find more leads, not better ones.
- The same sale sent twice, by a file upload and an integration, or by two automations.
- No UTM data on the lead, so your own reports cannot show which campaign or placement worked.
- Nobody checking Events Manager after go-live, so a broken feed goes unnoticed.
Send only what Meta needs
An offline event needs hashed contact details, the event name, the time and, if you use one, a value. Send the outcome, not the details: a conversion such as "Insured lead" or "VOB approved" is fine, but diagnosis, treatment and insurance plan details stay in your CRM. They have no place in an ad platform.
Doing this from Salesforce or Zoho CRM
The steps are the same in any CRM. What changes is where the contact details and the outcome live, and what sends the events.
Running Facebook and Instagram ads and closing sales by phone? Book a free call. We will look at what your CRM captures today, give you honest advice, and there is no obligation.
Respect privacy laws and cookie consent
Tracking only holds up if it respects the people you track. Privacy laws and browser rules keep tightening, and a cookie banner that does nothing is not enough.
- Ask before you track: analytics and ad cookies wait until the visitor accepts, with an easy way to say no.
- Use Google Consent Mode, so Google tags follow the visitor’s choice.
- Honor Global Privacy Control: a browser that sends it is treated as a no.
- Let visitors change their mind later, from a cookie settings link in the footer.
- Keep your privacy policy and SMS consent wording in step with what you collect and send.
This is how we set up tracking on our own sites and for clients. It is general guidance, not legal advice: check the rules that apply to your business with your legal team.
Want help with this?
Book a free call about your CRM, integrations or reporting, or map your systems first with our free tech stack diagram builder.
