Report conversions to Meta
Send qualified leads and won deals back to Meta so your ads optimise for customers, not conversations.
Meta only sees the click. It cannot tell a tyre-kicker from a signed customer unless you tell it, so it optimises for whatever it can measure — usually the cheapest conversation. The Conversions API closes that loop: as your agent qualifies a lead, books a meeting, or you mark a deal won, Reply First reports that moment back to the ad that produced it. Set it up under Settings → Integrations → Meta Conversions API.
Only leads that arrived from a Click-to-WhatsApp ad are reported. Organic conversations carry no click ID, so there is nothing for Meta to attribute — those are skipped silently.
What you need from Meta
Three values, all from your Meta Business account:
| Field | Where to find it |
|---|---|
| Dataset ID | Events Manager → your dataset → the number under the name. Meta used to call this the Pixel ID. |
| Access token | Business Settings → System Users → your system user → Generate token, with the ads_management permission. |
| WhatsApp Business Account ID | Business Settings → WhatsApp Accounts → the ID under your WABA name. |
The WABA ID is technically optional — Meta accepts events without it — but without it your events cannot be tied back to the ad that produced them, which is the entire point. Add it.
Steps
Connect your dataset
Paste the Dataset ID, access token, and WABA ID, then click Connect. The token is encrypted at rest and never shown again; to rotate it later, paste a new one and leave the field blank to keep the current one.
Choose which events to report
Four moments, in funnel order. Leave them all on unless you have a reason not to:
- Conversation started (
LeadSubmitted) — someone tapped your ad and sent a first WhatsApp message. - Lead qualified (
QualifiedLead) — your agent judged them a real prospect. - Meeting booked (
InitiateCheckout) — they accepted a time and it is on the calendar. - Deal won (
Purchase) — sent with the real deal value when you record the outcome on the lead.
Validate with a test event
Paste a test event code from the Test Events tab in Events Manager, save, then click Send test event. Reply First fires one throwaway QualifiedLead with a synthetic click ID — enough to prove your dataset ID and token work and the request shape is right. It appears under Test Events within seconds.
Clear the test code
Clear the test event code and save again.
Events sent with a test event code never count as real conversions. If you leave it set, Meta will happily accept everything and optimise on nothing. The settings page shows a red "Test mode" warning while a code is present.
Point your campaign at the right event
In Ads Manager, set the campaign's conversion event to Lead qualified. Real conversions start flowing within about 30 minutes of the first qualified lead.
Optimise on "Lead qualified", not "Deal won"
This is the one expensive mistake available on this screen.
Meta needs roughly 50 conversions a week to leave the learning phase. A high-value business signs a handful of deals a month — a Purchase-optimised campaign never gets there, and delivery stays erratic and expensive. Lead qualified happens often enough to teach the algorithm while still meaning something. Send Purchase for reporting; optimise on QualifiedLead.
Each moment is reported once
Every event is claimed against a (lead, event) ledger before it is queued, and the same key is sent to Meta as the event_id. One person can reach you through several doors and every webhook in the chain delivers at least once — without that guard, a single signed deal would report as several Purchases and your cost-per-acquisition number would quietly become fiction.
Delivery is queued, not inline: the worker sends it within a minute or so, retrying on transient failures. Your agent never waits on Meta, and a Meta outage never delays a reply.
Checking it works
The settings page shows the last ten events with their status — Sent, Queued, Failed, or Skipped — plus the last success and last error. The integration card turns to Needs attention if Meta rejected the most recent delivery.
Pausing
Toggle Send conversions off to stop delivery without losing your settings. Disconnect removes the dataset and the stored token entirely.