Meta Conversions API for lead generation: send only qualified leads
Updated:
The Meta Conversions API (CAPI) lets your server tell Meta about conversions directly instead of relying only on the browser pixel. For lead-generation businesses its real value is not recovering lost pixel events. It is choosing which leads Meta learns from.
What the Conversions API actually sends
Each CAPI event carries an event name, a timestamp, an action source and user data Meta can match to a person. For leads that were qualified after the fact, the action source is usually system_generated, which tells Meta the event came from your own systems rather than a page view.
User data must be normalized and SHA-256 hashed before it leaves your server: emails lowercased and trimmed, phone numbers as digits with the country code. Meta matches these hashes against its own users; raw contact details never need to be sent.
- ph: hashed phone number (for Turkey, 90 followed by the 10-digit number)
- em: hashed, lowercased email address
- fbc / fbp: the click and browser cookies the pixel sets, which improve match rates
- event_id: a stable id so Meta can de-duplicate the same lead sent twice
Why lead-gen accounts should not report every form fill
When every form submission is a conversion, Meta's delivery system optimizes toward people who submit forms, including bots, competitors and people who leave fake numbers. The cheaper those people are to reach, the more of them you get.
Reporting a separate, qualified lead event changes what the algorithm is rewarded for. You can keep the raw form event for reporting, but optimize campaigns on the qualified event once it has enough volume.
Deciding what counts as qualified
Qualification has to happen quickly, because Meta only accepts events up to seven days after they occurred. Most junk can be detected the moment a lead arrives: the form was filled in under two seconds, a hidden honeypot field was filled, the phone number is a pattern like 555 555 55 55, the message is a vendor pitch or a job application, or the same person already wrote in this week.
The grey area, such as a real number that only asked for a price, can wait for evidence: a reply on WhatsApp, a call longer than a minute, or the owner marking the lead as a real customer.
Setting it up
In Events Manager open your pixel, go to Settings and generate a Conversions API access token. Send events to the pixel's /events endpoint with that token. While testing, add the test_event_code from the Test Events tab so events show up there instead of affecting delivery.
CleanAds handles this for you: it scores each lead, sends only the clean ones with hashed match keys and event ids, and lets you verify with a test event code before going live.
FAQ
Do I still need the Meta pixel if I use the Conversions API?
Yes. The pixel sets the fbp and fbc cookies that improve matching, and it keeps reporting on-site behaviour. CAPI adds server-side events on top of it.
Is sending hashed phone numbers allowed under privacy law?
Hashing is required by Meta but is not anonymisation on its own. You still need a lawful basis and a privacy notice that mentions sharing data with advertising platforms.