Meta Lead Ads to Your CRM: Webhooks, Lead Retrieval and Getting the Lead in Under a Minute
Quick answer
To get Meta lead ads into your CRM, subscribe your app to the Page's lead webhook. Each submission sends a small notice with a leadgen_id, and your server then fetches the answers from the Graph API. Meta says the notice can arrive up to a few minutes late, so keep a bulk read as a backstop.
Note
How do Meta lead ads get into a CRM?
Rule. Meta's guide names three ways to get leads out of a lead ad: a webhook that notifies your system of each new submission, a bulk read through the Graph API, and a download from Leads Center in Meta Business Suite. A CRM can use a partner that supports lead ads or a custom build with webhooks and the Graph API. The guide suggests the bulk read for fetching new leads "a few times a day" and webhooks for anything more frequent.
| Method | How fast | Good for | Watch for |
|---|---|---|---|
| Webhook | Real time, but Meta says pings can arrive up to a few minutes late | Calling the lead now | Your endpoint must answer every notice, and retries can send duplicates |
| Bulk read (Graph API) | As often as you ask, within rate limits | A backstop that catches anything the webhook missed | Reads by ad or by form; a form can be reused by many ads |
| Leads Center download | Manual | One-off exports | Not a way to follow up in time |
What does the Meta lead ads webhook actually send?
Rule. The Retrieving Leads page describes the flow. You set up an endpoint and configure the webhook, generate a long-lived Page access token, and install your app on the Page. When someone submits the form, the notice carries leadgen_id, page_id, form_id, adgroup_id, ad_id and created_time. It does not carry the person's answers. You call the Graph API with the leadgen_id to fetch the lead's field_data, which holds the name, phone and whatever else the form asked.
Rule. If the form uses custom field IDs, the returned fields and values use those IDs. Answers to a custom disclaimer checkbox are not in field_data; you fetch them by asking for custom_disclaimer_responses on the lead. Leads with no ad or ad group ID can be organic, submitted from an Ad Preview, or requested by someone without advertiser rights on the ad account.
What permissions and tokens does lead retrieval need?
| For | Permissions | Token |
|---|---|---|
| Webhooks | ads_management, pages_read_engagement, pages_show_list, pages_manage_metadata | Long-lived Page access token |
| Bulk read and full lead and ad data | ads_management, leads_retrieval, pages_show_list, pages_read_engagement, pages_manage_ads | Page access token |
Rule. The token must come from a person who can advertise on the ad account and has access to the Page. Your app must pass App Review for leads_retrieval and pages_manage_ads, and after approval Meta requires Business Verification. An app in Development mode cannot retrieve leads, and Development-mode users can only see leads from people with a role in the same app. Who may read leads also depends on Leads Access Manager: if the Page admin has not customised it, all Page admins have access, and if business admins have, access follows their setup. The guide notes that Page tokens can be short or long lived and that their lifetimes may change without warning or end early.
What must your webhook endpoint do?
Rule. Meta's webhooks getting-started page sets out the endpoint rules. Meta sends a verification GET with hub.mode, hub.challenge and hub.verify_token, and your endpoint must check the token and return the challenge. Answer every event notice with a 200 OK. Each notice carries an X-Hub-Signature-256 header, which you check by computing a SHA-256 signature of the payload with your app secret; Meta calls the check optional but recommended. The endpoint needs HTTPS with a valid certificate, and self-signed certificates are not supported.
Rule. If a delivery fails, Meta retries at once and then at decreasing frequency for the next 36 hours, after which it drops the update. Because of retries, your server should deduplicate. Meta batches up to 1,000 updates per request without guaranteeing batching, and it gives no delivery order, so process each update on its own. The time field is when Meta sent the notice, not when the person submitted the form.
Can you get the lead in under a minute?
Meta does not promise a delivery time. The Retrieving Leads page says real-time pings can be delayed by up to a few minutes, so a fixed "under a minute" depends on how Meta behaves on the day. What you control is everything after the notice arrives. Practice. Our own target runs from the moment a lead reaches MAJ Leads, and in that stretch a call due for the assigned rep reaches them within about 30 seconds. In our own build, 10 of 10 test leads from each of 3 sources got a first task due within 30 seconds, inside working hours. These were test leads we sent ourselves, not customer results, and the time Meta takes before it sends the notice is not in that number.
Practice. Four habits shorten the wait and stop leads from falling through:
- Answer Meta's webhook with a 200 straight away and do the Graph API fetch afterwards, so a slow CRM call never makes Meta retry.
- Fetch the lead the moment the notice arrives and store it with its leadgen_id. Meta's pages give no retention period, so treat your copy as the record.
- Deduplicate on leadgen_id for retries, and on phone number for the person who submits twice. We dedupe on phone number in MAJ Leads, as our 30-second post describes.
- Run a bulk read by form with a time_created filter a few times a day, the cadence Meta's guide suggests, and import anything you have not seen. Use the webhook for speed and the read for safety.
What breaks in a Meta lead ads integration?
- An expired or replaced token. Meta says lifetimes can change without warning. Leads stop arriving and nothing errors in your CRM. Check for silence, not only for errors.
- A changed role or access setting. Retrieval needs the right Page and ad account access, and Leads Access Manager can restrict it.
- An app in Development mode. It cannot retrieve leads at all.
- A missing field. Disclaimer checkbox answers sit outside field_data, and custom field IDs change the keys you read.
- Rate limits. Meta gives the limit for a Page as 200 multiplied by 24 and by the number of leads created in the past 90 days, per 24 hours. A quiet Page has a low ceiling for a bulk read.
- Test leads that are not real. Meta's testing tool creates organic test leads with dummy data, one per form until you delete it.
How do you test lead ads delivery before spending on ads?
Rule. The Testing and Troubleshooting page describes Meta's Lead Ads Testing Tool. Choose a Page and a form, create a lead with dummy data, and use Track Status to see it move from pending to success or failed. On success the tool shows the payload Meta sent to your endpoint, and on failure an error_code. You can also create a test lead through the API with a POST to the form's test_leads edge. It needs the Advertiser role or higher on the Page, allows one test lead per form until you delete it, and the tool does not work for apps in developer mode.
How does MAJ Leads connect to Meta lead ads?
A business subscribes its Facebook or Instagram Page to lead webhooks through its own Business Manager, and a per-client Page access token lets MAJ Leads retrieve each lead. The lead lands on the same board as your other sources, with its attribution, and becomes a call due for the assigned rep, as set out in Google Ads lead forms and Meta lead ads: called in 30 seconds. Sending stages back to Meta is rolling out and is described in Meta Conversions API for CRM. If your form tool is not Meta, see your form tool can post to one link. The full flow is on how it works.
Sources
Frequently asked questions
How do I get Facebook lead ads into my CRM?
What is the leadgen_id?
How fast does the Meta lead ads webhook arrive?
Which permissions do I need to retrieve leads from Meta lead ads?
Why did my Meta lead ads stop arriving in my CRM?
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
Google Ads Lead Forms and Meta Lead Ads: Called in 30 Seconds
A lead form ad is only as good as what happens after someone submits it. Here is how Google Ads lead forms and Meta Lead Ads connect into MAJ Leads, and how the outcome feeds back to both platforms so they optimise for booked leads, not just form fills.
Guide
Meta Conversions API for CRM: How to Send Lead Stages Back to Facebook and Instagram Lead Ads
Meta's documentation for sending CRM stages back to lead ads is written for engineers, and the blogs that summarise it add numbers Meta does not state. This guide reads Meta's own pages, lists the eligibility checks, and separates Meta's rules from our advice.
