← All guides

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