Meta Conversions API for CRM: How to Send Lead Stages Back to Facebook and Instagram Lead Ads
Quick answer
Meta's Conversions API for CRM sends your lead stages, such as qualified or booked, back to Meta against each lead's Lead ID, so campaigns can find more people like those who progressed. Per Meta's guide it works only for Instant Form lead ads, suits accounts with 200 or more leads a month, and needs a stage reached within 28 days.
Note
What is Meta's Conversions API for CRM?
Rule. Meta's guide describes it as a separate integration from the standard web Conversions API setup. It sends offline, further-down-the-funnel events from your CRM back to Meta so Meta can optimise lead campaigns, and your CRM must already download leads from Meta. The performance goal it unlocks is called Conversion Leads, which the guide says is "currently only compatible with" Facebook and Instagram Lead Ads (Instant Forms). Leads from your own website form are not covered by this goal, even if the same people also click your ads. The general Conversions API is the underlying mechanism: server-to-server POST requests linked to a dataset.
Is your ad account a fit for Conversion Leads?
Rule. Meta's guide lists these as the conditions where the integration fits:
- You run Facebook or Instagram Lead Ads with Instant Forms.
- You store Meta's 15 to 17 digit Lead ID in your CRM. Meta recommends sending the Lead ID with each event, and if you lack it, sending customer parameters such as a click ID, phone number or email.
- You generate at least 200 leads a month.
- You upload data at least once a day.
- The stage you want to optimise for happens within 28 days of lead generation.
- That stage has a conversion rate between 1% and 40%.
The 200 leads a month and the 1% to 40% range are guidance for where the integration works well. Meta's page does not say what happens if you fall outside them. An account with 60 leads a month falls outside the first condition, which is a reason to check your numbers before you commit developer time.
Which lead stage should you send back to Meta?
Rule. The stage must occur within 28 days and convert between 1% and 40% of leads. The platform guide adds that you should send every lead stage as it changes, starting with the raw lead event, send at least two stages and three or more if possible, and map each CRM stage to an event_name.
Practice. Read the 1% to 40% range as a filter on your own funnel. A stage that almost every lead reaches, such as "contacted", gives Meta little to learn from, and a stage almost nobody reaches, such as "paid in full" after a six-month cycle, starves it and falls outside the 28-day window as well. For a business that books appointments, "qualified" and "booked" are the usual candidates. Our post on cost per booked lead explains why the booked stage is a better yardstick than the form fill.
What does a Conversions API for CRM event look like?
Rule. The platform guide gives a payload with these fields. The values below are placeholders.
| Field | What to send | Notes from Meta |
|---|---|---|
| event_name | Your stage name, for example "qualified" | Free-form. Map each CRM stage to a name |
| event_time | Unix seconds when the stage was reached | Must be after the lead's creation time or the event may be discarded. Backfill is allowed up to 7 days in the past, between event_time and upload time |
| user_data.lead_id | The Meta Lead ID | The preferred identifier. Do not hash it |
| action_source | system_generated | Meta says this is the correct value for CRM events |
| custom_data.event_source | crm | Set in the example payload |
| custom_data.lead_event_source | The name of your CRM | The example uses a CRM product name |
| Fallback identifiers | Hashed em and ph, plus fbc | Use only when the Lead ID cannot be found |
Rule. Hashing follows Meta's customer information parameters page. Email (em) and phone (ph) must be hashed with SHA-256. Normalise email first by trimming spaces and converting to lowercase. Normalise phone by removing symbols, letters and leading zeros and including the country code, so a UAE mobile is written with 971 first. The lead_id, fbc and fbp parameters are marked do not hash. Send at least one valid customer parameter or Meta rejects the event. Batches may hold up to 1,000 events, and one error discards the whole batch, so Meta recommends smaller batches with retry logic.
How long does the setup take, and what does it deliver?
| Step | Who does it | Estimate |
|---|---|---|
| Data verification | Meta | About 1 to 2 days |
| Configure sales funnel events | Advertiser | Under 1 day |
| Learning phase | Meta | 2 to 4 weeks |
| Developer implementation | Advertiser | 3 to 4 weeks |
| Zapier or a partner integration instead of custom code | Advertiser | Under 1 day |
| Total time to value | About 3 to 4 weeks |
The guide's own introduction says "1 month" to time to value, and its table totals about 3 to 4 weeks, so treat the timeline as a range. On results, Meta says integrating your CRM and using the Conversion Leads goal "may yield higher quality leads that are more likely to convert". That is a claim, not a measured figure, and the page gives no performance number. Some blogs quote a cost-per-lead improvement. We did not find it on Meta's page, so we do not repeat it.
How do you check that the events arrive?
Meta's guide treats verification as a step Meta performs, taking about 1 to 2 days, and the page we read does not describe an Events Manager walkthrough. So we do not describe one. Practice: before you send live stages, send a handful for leads you can identify and confirm in Meta's own tools that they were received against the right leads. Then compare how many events you uploaded with how many Meta reports receiving. Re-read Meta's current documentation for the exact screens, since they change.
Where does the Lead ID come from?
Rule. The Lead Ads guide says that when a new lead is submitted, an update is sent to your endpoint and you then fetch the lead through the Marketing API. It says your app must pass App Review with the leads_retrieval and pages_manage_ads permissions, that you need Page admin access or flexible permissions to read lead data, and that apps in Development mode cannot retrieve leads, while Live mode apps can. The platform guide recommends a webhook or a Graph API bulk read to find the Lead ID. Store it with the lead the moment it arrives, because every later stage event depends on it.
How does MAJ Leads fit in?
Meta Lead Ads connect to one leads list in MAJ Leads, and a rep gets the first call due within about 30 seconds, as set out in Google Ads lead forms and Meta lead ads: called in 30 seconds. Sending outcomes back to Meta is rolling out, and our closed-loop attribution post describes how it is built. It is not live on customer campaigns, and we have no results to report. The same idea for Google is in Google Ads offline conversion import. See how it works for the full flow.
One caution for any CRM, ours included. You are sending lead data to Meta. Hashing protects the data in transit and matching, but it does not replace telling people in your privacy notice how their details are used, and getting consent where the law requires it. In the UAE that is the PDPL, covered in our post on PDPL consent. Ask counsel about your own flow.
Sources
Frequently asked questions
What is Meta's Conversions API for CRM?
How many leads do I need for Conversion Leads?
Should the Lead ID be hashed?
Can I send past lead stages to Meta?
Does the Conversions API for CRM lower my cost per lead?
Anam Jalal
Founder & CEO, MAJ Leads
Anam Jalal is the founder of MAJ Leads, a Dubai-based lead management system that puts every paid lead on a rep's phone within about thirty seconds and chases it until it has an answer. He works hands-on with UAE clinics, brokerages and trading companies on lead follow-up, WhatsApp and CRM integrations, and ran voice AI deployments in the UAE before the company focused on lead management.
Read more about AnamRelated articles
Guide
Closed-Loop Attribution: Tell Google and Meta Which Leads Actually Booked
Google Ads and Meta only know what you tell them. If the only signal a campaign ever sends back is "form submitted," that is the only thing the bidding algorithm learns to find more of. Closed-loop attribution is the mechanism for telling both platforms which of those form fills actually became a customer.
Guide
Stop Optimising for Cost per Lead. Optimise for Cost per Booked Lead.
A cheap lead and a good lead are not the same thing, and a dashboard that only shows cost per lead cannot tell them apart. Here is the case for tracking cost per qualified lead instead, with a worked example using clearly hypothetical numbers.
