Facebook Lead Ads webhook not firing? The complete checklist
2026-10-09
Leadgen webhooks fail silently: ads keep running, leads pile up in Meta, and nothing reaches your tools. Work through this list in order.
1. Did the handshake ever succeed?
In App Dashboard → Webhooks your callback must show as verified. Meta sends
GET ?hub.mode=subscribe&hub.verify_token=…&hub.challenge=…; your
endpoint must compare the token and echo exactly the challenge string — no JSON, no
quotes, HTTP 200, within a few seconds, over valid HTTPS.
2. Is the app subscribed to the leadgen field?
On the Page object, subscribe the leadgen field. A common miss
after switching from testing to live.
3. Is the Page subscribed to the app?
The step everyone forgets:
POST /<page_id>/subscribed_apps?subscribed_fields=leadgen with a Page
token. Check with GET /<page_id>/subscribed_apps.
4. App mode and permissions
In development mode only leads created by app admins/testers arrive. Live mode needs
leads_retrieval (App Review) to fetch lead answers — the webhook ping may still
arrive, but the Graph fetch fails.
5. Use the testing tool, not real ads
The Lead Ads Testing Tool fires a test lead instantly and shows delivery status — far faster than publishing a campaign.
6. Has Meta deactivated your endpoint?
Persistent non-200s, slow responses or TLS errors make Meta back off and eventually stop sending. Fix the endpoint, then re-verify, re-subscribe, and recover the gap: lead data stays retrievable via the Graph API for 90 days.
Relayo answers the handshake, stores every delivery attempt, alerts before Meta gives up on you, and replays anything a tool missed.
Get early access to Relayo