Skip to main content

webhook-setup

Set up webhooks for a Meta app end-to-end — discover available topics, subscribe to fields, and verify with a test payload. Use when configuring webhooks for the first time or adding new subscriptions.

Source facts

Repository
meta/agentic-tools
Last source activity
October 27, 2026 at 19:08
Detected SKILL.md language
English
Stars
18
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
webhook-setup
description
Set up webhooks for a Meta app end-to-end — discover available topics, subscribe to fields, and verify with a test payload. Use when configuring webhooks for the first time or adding new subscriptions.
allowed-tools
mcp__devtools__devtools_webhook_list, mcp__devtools__devtools_webhook_manage, mcp__devtools__devtools_webhook_test, mcp__devtools__devtools_app_list, mcp__devtools__devtools_skill_invocation
license
MIT
metadata
{"mcp":{"devtools":{"type":"streamable-http","url":"https://mcp.facebook.com/devtools"}}}
# Webhook Setup Interactive wizard to configure webhooks on a Meta app from scratch. ## Prerequisites — MCP connection (read first) This skill needs the Meta Social Technologies MCP server `devtools` (`https://mcp.facebook.com/devtools`, streamable-http). Plugin installs bundle it; skills-only installs such as `npx skills add` do not ([setup](https://github.com/facebook/agentic-tools#install-via-vercel-skillssh)). **If the `mcp__devtools__*` tools are not available, STOP.** Do not invent tool output, including the step 1 tracking call. Ask the user to add the server and complete its OAuth flow (never ask for an access token), then continue. ## Workflow 1. **Start tracking.** Before any other work, call `devtools_skill_invocation` with action `start` and `skill_name` `webhook-setup`. Pass `skill_name` `webhook-setup` on every `devtools_*` tool call in the following steps. 2. **Identify the app.** Ask the user for the app **name or ID**. If they give a name (or aren't sure of the ID), call `devtools_app_list` (action `list`) and resolve it to an `app_id` — match the name case-insensitively. If several apps match or it's ambiguous, show the candidates (name, ID, viewer role) and ask the user to pick. If they give a numeric ID, use it directly. 3. **Check existing state.** Run in parallel: - `devtools_webhook_list` with action `list_topics` — show all available webhook topics - `devtools_webhook_list` with action `list_subscriptions` — show what's already subscribed 4. **Present the options.** Show the user: - Available topics (e.g., `page`, `user`, `instagram`, `whatsapp_business_account`) - Which topics already have active subscriptions - For each topic, list the subscribable fields 5. **Collect subscription details.** Ask the user for: - **Topic** — which webhook topic to subscribe to - **Fields** — which fields within that topic (e.g., `feed`, `messages`) - **Callback URL** — their HTTPS endpoint (must be live and pass Meta's verification challenge) - **Verify token** — the token their server expects for the verification handshake 6. **Subscribe.** Call `devtools_webhook_manage` with action `subscribe`: - Pass `topic`, `fields`, `callback_url`, `verify_token` - If the subscription fails, explain the likely cause: - Callback URL not reachable → server must be running and publicly accessible - Verification failed → verify token mismatch or endpoint not responding to GET challenge - Invalid fields → check field names against the topic's available fields 7. **Verify with a test payload.** After successful subscription: - Call `devtools_webhook_test` with action `test_send` for one of the subscribed fields - Confirm whether the test payload was delivered - If test fails, suggest checking server logs and endpoint configuration 8. **Summary.** Show the final state: - Topic and fields subscribed - Callback URL configured - Test result (success/failure) 9. **End tracking.** After completing all preceding steps, call `devtools_skill_invocation` with action `end` and `skill_name` `webhook-setup`. ## Tips - If the user wants to modify an existing subscription (add/remove fields), use `devtools_webhook_manage` with action `update_fields` instead of unsubscribe + resubscribe. - Always verify after subscribing — a successful subscribe call doesn't guarantee payloads will be delivered correctly. - Remind users that their callback URL must handle both the GET verification challenge and POST event payloads.
View on GitHub