Meta Conversions API for lead generation, explained
Send leads and won jobs back to Meta with the Conversions API, so Facebook and Instagram ads learn which clicks become customers. What to send and why.

On this page
The Meta Conversions API (CAPI) lets your website or software tell Meta, server to server, when an ad click turned into a lead, and later into a won job. Meta matches it to the person who saw the ad, so you see which ads really bring work, and its ad system learns to find more people like your actual customers instead of people who just click.
Why the pixel alone isn’t enough any more
The Meta pixel runs in the customer’s browser. Ad blockers, browser privacy settings and declined cookie banners stop it firing for a share of visitors, and it never sees what happens after the form: the phone call, the site visit, the job you won. The Conversions API sends events from your server, so it isn’t blocked in the same way, and it can send events that happen days later.
The two events worth sending
- Lead, when the enquiry arrives. This is quick feedback for Meta’s system.
- A won job (often sent as
Purchaseor a custom conversion), with the job’s value. This is the event that teaches Meta the difference between tyre-kickers and customers.
Optimising your campaigns for won jobs rather than raw leads usually takes time, since Meta needs enough events. Start by reporting both.
What goes in an event
{
"data": [
{
"event_name": "Lead",
"event_time": 1793520000,
"action_source": "website",
"event_id": "lead_7f3c2a",
"user_data": {
"em": ["<SHA-256 of the lowercased email>"],
"ph": ["<SHA-256 of the phone in international digits>"],
"fbc": "fb.1.1793519000000.AbCd…",
"fbp": "fb.1.1793518000000.123456789"
},
"custom_data": { "value": 750, "currency": "GBP" }
}
]
}
- Hash email and phone with SHA-256 before sending. Meta never needs them in plain text.
fbcandfbpcome from the_fbcand_fbpcookies (andfbclidin the address). They make matching far more reliable.event_idlets Meta drop the duplicate if both the pixel and the server report the same lead.
Events go to https://graph.facebook.com/<version>/<dataset_id>/events with an access token from Events Manager → Settings → Conversions API.
Consent comes first
You’re sharing personal data with Meta for advertising, so tell customers and get agreement where the law needs it (in the UK and EU, that usually means consent). Only read the Meta cookies and send hashed details for customers who agreed. Our guide on consent for CRM and newsletter leads covers the basics.
Check it’s working
In Events Manager → Test events, copy the test code, send an event with test_event_code set, and watch it appear. Remove the code afterwards. Keep an eye on Event match quality: more matching details (email, phone, fbc, fbp) means a higher score.
Doing it in RoughFigure
In RoughFigure we’ve built the Meta Conversions API in. Under Integrations → Ads and analytics, paste your dataset (pixel) ID and access token and click Connect. We send a Lead when an enquiry arrives and a Purchase when you mark the job won, with its value, hashed contact details and the click IDs. It’s only for customers who ticked “Let us see which ad brought me here”, unless your own privacy policy already covers it. Read the ads and analytics guide, and see lead source tracking for the bigger picture.
Questions
Do I still need the Meta pixel?
It helps with audiences and on-site events, and the two work together using event_id to avoid double counting. The Conversions API is what reports leads and won jobs reliably.
Does the Conversions API work with Meta lead forms (instant forms)?
Yes. Leads from instant forms have a Meta lead ID, and you can send later stages, like a won job, against it.
Is sending hashed emails to Meta allowed under GDPR?
Hashing is still processing personal data, so you need a lawful basis, usually consent for advertising. Say so in your privacy policy and cookie banner.


