Skip to main content

debug-webhooks

Troubleshoot webhook issues for a Meta app — inspect active subscriptions, identify misconfiguration, and send test payloads to verify delivery. Use when webhooks aren't working as expected.

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
debug-webhooks
description
Troubleshoot webhook issues for a Meta app — inspect active subscriptions, identify misconfiguration, and send test payloads to verify delivery. Use when webhooks aren't working as expected.
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"}}}
# Debug Webhooks Diagnose and fix webhook delivery issues for a Meta app. ## 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` `debug-webhooks`. Pass `skill_name` `debug-webhooks` on every `devtools_*` tool call in the following steps. 2. **Get context.** Ask the user for: - The app **name or ID** — if they give a name (or aren't sure of the ID), resolve it to an `app_id` via `devtools_app_list` (action `list`); if several apps match or it's ambiguous, show the candidates (name, ID, viewer role) and ask the user to pick - What's going wrong (not receiving events? wrong data? specific topic?) 3. **Inspect current state.** Run in parallel: - `devtools_webhook_list` with action `list_subscriptions` — all active subscriptions - `devtools_webhook_list` with action `list_topics` — all available topics (for comparison) 4. **Diagnose.** Check for common issues: **No subscriptions found** - The topic the user expects events from has no active subscription - Suggest using `/webhook-setup` to create one **Subscription exists but no events received** - Send a test payload: `devtools_webhook_test` with action `test_send` for the relevant topic and field - If test fails: callback URL may be down, unreachable, or not returning 200 - If test succeeds but real events don't arrive: the issue is likely on the app side (permissions, page subscriptions, etc.) **Wrong fields subscribed** - Compare subscribed fields against what the user expects to receive - If fields are missing: use `devtools_webhook_manage` with action `update_fields`, passing the missing fields via `add_fields` - If extra fields cause noise: use `devtools_webhook_manage` with action `update_fields`, passing unwanted fields via `remove_fields` **Multiple subscriptions on same topic** - Flag potential conflicts or duplicate delivery 5. **Test delivery.** For each relevant subscription: - Call `devtools_webhook_test` with action `test_send` - Report whether the test payload was accepted by the callback endpoint 6. **Report findings:** ### Report Format **Active Subscriptions** - Topic, fields, callback URL for each **Issues Found** - Each issue with severity (critical / warning / info) - Root cause analysis - Suggested fix **Test Results** - Topic/field tested → success or failure - Response details if available **Recommended Actions** - Ordered list of fixes to apply 7. **Apply fixes** if the user agrees: - Add missing fields via `update_fields` - Remove unwanted fields via `update_fields` - **Callback URL changes: `update_fields` cannot change the callback URL — it has no `callback_url` parameter and silently ignores one. To change the URL, re-run `subscribe` for the topic with the new URL and verify token: `subscribe` is an upsert (create-or-update), so it overwrites the URL in place. You do NOT need to `unsubscribe` first.** 8. **End tracking.** After completing all preceding steps, call `devtools_skill_invocation` with action `end` and `skill_name` `debug-webhooks`. ## Common Issues Reference | Symptom | Likely Cause | Fix | |---------|-------------|-----| | No events received | No subscription exists | Subscribe to the topic | | No events received | Callback URL returns non-200 | Fix server endpoint | | No events received | App lacks page/account subscription | Subscribe the page to the app | | Partial events | Missing fields in subscription | Add fields via update_fields | | Duplicate events | Multiple subscriptions on same topic | Unsubscribe duplicates | | Test works, real events don't | Permission or page-level issue | Check app permissions and page subscriptions | | Need to change callback URL | update_fields has no callback_url param (silently ignored) | Re-run subscribe for the topic with the new URL + verify token — it upserts and overwrites the URL in place; no unsubscribe needed |
View on GitHub