Facebook Messenger
Connect a Facebook Page — including the Page subscription and Development-mode traps that make a "verified" webhook stay silent.
What you need
A Meta developer app of type Business with the Messenger product added, and a Facebook Page you administer.
Meta gates this channel in two places that are silent when shut, and nearly every "webhook verified but nothing arrives" setup is one of them:
- 1An app in Development mode delivers events only for people holding a role
on the app or the Page.
- 2The app-level webhook subscription does nothing until the Page itself is
also subscribed.
Connect
- 1Meta app → Messenger → Settings → Access Tokens. Connect your Page and
Generate token — that is the Page access token. The Meta App Secret is under app → Settings → Basic.
- 2In evoriqa, add a Messenger channel with:
| Field | Value | | ----------------- | ---------------------- | | Meta App Secret | App → Settings → Basic | | Verify token | Any string you choose | | Page access token | From step 1 |
Copy the webhook URL shown after connecting.
- 1Meta app → Messenger → Settings → Webhooks → Add Callback URL. Paste the
webhook URL and the same verify token, then Verify and save. Subscribe the webhook field `messages`. Leave
message_echoesoff — it reflects the Page's own replies back, and they are discarded at ingest anyway. - 2Subscribe the Page — the step most setups miss. In the same Webhooks
panel, next to the Page, choose Add subscriptions and tick
messagesthere too. Step 3 subscribes the app; this subscribes the Page. Without it, Meta never calls the webhook at all.
Verify it works
Message the Page from an account that holds a role on the app (App roles → add yourself as Admin, Developer, or Tester) or on the Page. While the app is in Development mode, Meta silently drops events from everyone else.
The conversation should appear in the Inbox tagged Messenger. Inbound requests are verified with x-hub-signature-256 against the app secret. Images, files, and stickers arrive as attachments with their CDN links.
Before real customers can message you
The app must be switched to Live and granted Advanced Access to pages_messaging through Meta's App Review, which requires business verification. Until then the channel works only for app and Page roles — enough for a pilot, not for launch.
Testing locally
Meta will not call localhost. Put a tunnel (cloudflared, ngrok) in front of your dev server and make sure the app's configured public URL matches the tunnel, since the webhook URL shown at connect time is built from it.
Troubleshooting
| Symptom | Cause |
|---|---|
| The URL couldn't be validated | The callback is unreachable over HTTPS, or the verify token differs |
| Verified but No messages yet | The Page subscription is missing, or the app is in Development mode and the sender has no role |
| Signature rejected | Meta is delivering; the app secret on the channel is wrong |
| Replies not sending | The Page token is invalid, or pages_messaging Advanced Access is missing |
Where to go next
- Instagram — the same app, one extra step.
Last updated