Meta lead ads

Meta Conversions API for Lead Ads: A Plain-English Setup Guide

How to send CRM lead stages back to Meta with the Conversions API, unlock conversion leads optimisation, and get better leads from the same ad budget.

by Team Tracely published 5 min read

If you run Facebook or Instagram lead ads, Meta knows exactly one thing about each lead: they submitted the form. It doesn't know whether that person answered the phone, booked a visit, or spent ₹5 lakh with you.

The Conversions API is how you tell Meta what happened next. Done right, it's one of the most effective ways to improve lead quality, because it changes who Meta shows your ads to.

This guide explains how it works for lead ads, in plain English, and the three ways to set it up.

What the Conversions API does for lead ads

The Conversions API (often shortened to CAPI) is a server-to-server connection. Your CRM sends events directly to Meta, instead of relying on a browser pixel.

For lead ads, those events are lead stages. For example:

Stage in your CRM What it tells Meta
Lead received A form was submitted (the starting point)
Contacted You reached this person; they're real and responsive
Qualified They're a genuine potential customer
Converted They bought, and here's the value

Meta matches each event back to the original lead and the ad that produced it. Over time, it learns what your real customers look like, and uses that to find more of them.

Why it's worth doing

Better leads from the same budget. Without CAPI, Meta's algorithm optimises for form submissions, so it finds people who submit forms. With stage data, it can optimise for people who get qualified or buy.

Conversion leads optimisation. Once you're sending stage events consistently, you can set a campaign's performance goal to conversion leads. Meta then optimises for the stage you pick further down your funnel, rather than raw lead volume.

Real reporting. With converted events and deal values going back, you can see which campaigns actually produce revenue, not just which produce cheap leads.

How Meta matches events to leads

Every lead ad submission has a Meta lead ID, a long number that identifies that exact submission. When your CRM sends a stage event including that lead ID, Meta knows precisely which lead, ad and campaign it belongs to.

You can also send customer details such as email, phone, name and city to improve matching. Meta requires these to be SHA-256 hashed before they're sent. Hashing turns a value into a fixed-length code that can be matched but not read. The lead ID itself is sent as is.

What an event looks like

You don't need to write this yourself if your CRM does it for you. Still, seeing an event makes it much less mysterious. Events are sent to your dataset (the same ID as your Pixel) on the Graph API:

POST https://graph.facebook.com/v{version}/{DATASET_ID}/events
{
  "data": [
    {
      "event_name": "Qualified",
      "event_time": 1762400000,
      "action_source": "system_generated",
      "user_data": {
        "lead_id": 1234567890123456,
        "em": ["<sha256 of lowercase email>"],
        "ph": ["<sha256 of phone with country code>"]
      },
      "custom_data": {
        "event_source": "crm",
        "lead_event_source": "Your CRM name"
      }
    }
  ]
}

A few details matter here:

  • action_source is system_generated for CRM stage events.
  • event_source: "crm" and lead_event_source tell Meta these events come from a CRM.
  • event_name can be your own stage name. What matters is sending the same name for the same stage every time.

Three ways to set it up

Option 1: Build it yourself

If you have developers and your own CRM, you can send events directly through the Graph API. You'll need:

  • A system user access token from Business Manager with permission to send events to your dataset.
  • Code that fires an event when a lead changes stage, hashes personal details correctly, and stores the Meta lead ID on each lead.
  • Retry handling and logging, so that when Meta rejects an event (it will, occasionally) you find out.

This gives you full control, but it is real engineering work to build and keep running.

Option 2: Use a partner integration

Meta's Events Manager lists CRM partners with built-in integrations. If your CRM is on that list, follow its setup flow inside Events Manager. Check which stages it can send and whether it sends deal values.

Option 3: Use a CRM that does it automatically

A lead ads CRM can handle the whole loop: it receives the lead, stores the Meta lead ID, and sends each stage back as your team works the lead.

In TracelyCRM, it works like this:

  1. Add your dataset (Pixel) ID to your Meta connection.
  2. Map stages to signals. Tick which stage sends each of the five signals: lead received, contacted, pre-qualified, qualified and converted. Custom stages work too. Each stage sends at most one signal, so Meta never gets two different stories about the same move.
  3. Improve match quality. Point city, postcode and other fields at your form questions. TracelyCRM shows a match-quality score so you can see what's missing.
  4. Work leads as normal. When a rep moves a lead to Qualified, the event goes to Meta. When they mark it Converted, they enter the deal value and it's sent in your currency.

Everything except the Meta lead ID is SHA-256 hashed on the server before it leaves. Every event is logged with its status, and failed ones show why and can be retried in one click.

Set it up free for 14 days

Best practices

Send events promptly. Update stages as they happen, not in a batch at the end of the month. Meta learns faster from fresh signals.

Pick stages your team reaches often. Meta optimises best when a stage collects a steady volume of events, roughly 50 a week. If "converted" is rare, optimise for "qualified" first.

Keep stage meanings consistent. If "qualified" means something different to each rep, Meta learns from noise. Write down what each stage means.

Leave dead ends unmapped. Don't send stages like Junk or Lost as positive signals. They tell Meta nothing useful about who to find.

Include deal values. Sending the value with converted events opens the door to value-based optimisation and gives you real return-on-ad-spend numbers.

Frequently asked questions

Does the Conversions API change my lead count in Ads Manager?

No. Stage events describe what happened to existing leads. They don't add new leads to your results.

Is sending customer data to Meta allowed?

Meta requires personal details to be hashed with SHA-256 before they're sent, and you should cover data sharing in your privacy policy. Check what applies to you under local regulations such as India's DPDP Act or the GDPR.

How long before I see results?

Meta needs a steady flow of events before optimisation improves. Most advertisers give it a few weeks of consistent stage updates before judging the change, and switch to conversion leads optimisation only once volumes are steady.

Do I still need the Meta Pixel?

For lead ads with instant forms, the lead never visits your website, so CRM events through the Conversions API are what matter. Keep the Pixel on your website for other campaigns. CRM events go to the same dataset.

Related: Why your Facebook leads are low quality, and 7 fixes.

  • #conversions api
  • #capi
  • #conversion leads
  • #facebook lead ads