data block looks like for common events.
Request Format
Headers
Every delivery includes these headers:Envelope
Unless you configure a custompayloadTemplate, the body is a JSON object with four fields:
event— The exact event name (matchesX-Webhook-Event)category— The category the event belongs to (e.g.post,inbox,subscription)timestamp— ISO-8601 timestamp of when the event was dispatcheddata— The event-specific payload (see examples below)
Retries reuse the same
X-Webhook-Delivery-Id. Use it as an idempotency key so a retried delivery doesn’t re-process an already-handled event.Signature Verification
Every request body is signed with your endpoint’s secret using HMAC-SHA256. Verify it on every request to confirm the delivery genuinely came from Social media studio.Example Payloads
Thedata block shape depends on the event. Here are representative examples from commonly-used categories.
Post
Approval
Inbox
Social Account
Subscription
ThenewPlanName field contains the internal plan identifier, such as scale for Advanced.
AI
Knowledge Hub
Analytics
Best Time
Referral
See the Webhooks Overview for the full list of 147 events across 26 categories.
Custom Payload Templates
If your endpoint expects a different shape (e.g. Slack, Discord), set apayloadTemplate on your webhook subscription. Available variables are:
{{event}}{{category}}{{timestamp}}{{data}}— the full data object as JSON{{data.any_field}}— any nested field from the event-specific payload
{{data.postId}} stays literal if the event doesn’t provide postId). See the overview page for Discord and Slack template examples.
Testing Locally
While developing:- Use a tunneling tool like ngrok or Cloudflare Tunnel to expose your local server.
- Create a webhook subscription in Settings → Webhooks pointing at your tunnel URL.
- Click the Test button on the subscription to send a sample event without triggering real activity.
- Inspect the payload in Webhook.site if you want to see the raw request before writing a verifier.