Meta's native Lead Ads — the in-platform form that opens without leaving Facebook or Instagram — collects submissions inside Meta's own dashboard by default and sends them nowhere else unless you connect something to receive them. To have those leads land directly in Claudphic Ads CRM, go to Integrations → Webhooks → Providers → Meta Lead Ads and connect it to a Meta app you control. This involves three separate credentials, and this guide covers all three in the order Meta actually asks for them.
What you need before you start
A Meta app in Meta for Developers, with the Webhooks product added to it, and access to the Facebook Page that your Lead Ads forms are attached to. If you've never created a developer app before, create one now with type "Business" — it costs nothing and takes a few minutes.
Step 1: Set a verify token in the CRM first
Counterintuitively, you'll set this side up before Meta's side, because Meta's verification step needs a token to check against. In the CRM, go to Webhook Providers → Meta Lead Ads → Edit and enter any string you like in Verify token — a random password-style string is fine, it just has to match exactly on both sides. Save it here first.
Step 2: Point Meta's webhook at the CRM
In your Meta app's Webhooks settings, add a new subscription for the Page object (Lead Ads notifications arrive as Page events), with:
- Callback URL: your CRM's webhook endpoint —
https://claudphicads.com/<yourcompany>/api/v1/webhooks/meta-lead-ads, replacing<yourcompany>with your own workspace slug. - Verify token: the exact string you saved in Step 1.
- Subscription field:
leadgen— this is the specific event type for a form submission; other fields on the Page object aren't relevant here.
When you click Verify and Save on Meta's side, Meta sends a one-time GET request to that URL with a challenge string, expecting your verify token to match before it activates the subscription — this is the handshake the CRM's endpoint answers automatically, using the token you set in Step 1. If it fails, the token doesn't match exactly (check for a stray space) or the callback URL has a typo.
Step 3: Add the app secret and a Page access token
Back in the CRM's Meta Lead Ads edit screen, two more fields appear specifically for this provider:
- App secret — from your Meta app's Settings → Basic page. This is used to verify that incoming webhook notifications genuinely came from Meta and weren't spoofed by someone who guessed your callback URL — every notification is checked against a signature computed with this secret before anything is trusted.
- Access token — a Page access token with
leads_retrievalpermission for the specific Page your ads run on. The webhook notification itself only tells the CRM that a lead came in and its ID; this token is what lets the CRM then fetch the actual name, email and phone number from Meta's Graph API.
Set Status to Active and save.
Every request is checked, not just the first one. Meta signs each webhook notification
with your app secret (the X-Hub-Signature-256 header), and the CRM verifies that signature
on every single request — a request with a missing or mismatched signature is rejected outright before
it ever reaches lead-creation logic, regardless of what payload it carries.
Confirming it's working
Submit a real test lead through your actual Lead Ads form (Meta doesn't offer a fully separate test-mode form for this), then check Leads in the CRM — it should appear within a few seconds, tagged with source "Meta Lead Ads". If nothing shows up: check the app's Webhooks settings in Meta for Developers for a "last delivery" error, which usually points straight at a signature mismatch (wrong app secret) or an access token that has expired or lost the Page permission.
Once leads are arriving, connecting the CRM's outbound Meta reporting is worth doing next, so a lead that closes reports back to Meta the same way it reported to Google Ads — see connecting Meta Pixel and Conversions API.