Slack Webhook & Event JSON Formatter
Format Slack webhook JSON, Block Kit message payloads, and Events API events in your browser. Pre-loaded with an app_mention sample.
Input
Output
Slack Has Three Different "Webhook" Formats
The word "Slack webhook" is overloaded. There are three distinct payload types, and they don't share a schema:
- Incoming Webhooks — You POST JSON to a Slack URL to send a message. Schema:
text,blocks[],attachments[]. - Events API — Slack POSTs JSON to your URL when something happens in a workspace. Schema:
event_callbackwrapper with the actual event nested inevent. - Slash commands & Interactive components — Slack POSTs
application/x-www-form-urlencodedwith a JSON-encodedpayloadfield. Different schema again.
This page is pre-loaded with an Events API payload (an app_mention event) — the most common one developers debug. Replace it with your own captured payload to validate the structure.
The Events API Envelope
Every Events API payload has the same outer envelope:
type— Alwaysevent_callbackfor actual events.url_verificationappears once during initial endpoint setup; respond by echoing back thechallengefield.token— Verification token. Deprecated for new apps; modern apps verify theX-Slack-Signatureheader instead.team_id— The workspace where the event happened.api_app_id— Your Slack app's ID. Useful when one server handles webhooks for multiple apps.event— The actual event object. Its schema depends onevent.type(message,app_mention,reaction_added, etc.).event_id— Unique ID for idempotency. Slack retries failed deliveries up to 3 times — store and check this ID.event_time— Unix timestamp of the event. Distinct fromevent.ts, which is the message timestamp.
Block Kit: Slack's Rich Message Format
Modern Slack messages use Block Kit — an array of blocks, each with a type (section, divider, actions, image, context, etc.). Block Kit replaced the older attachments field, which still works but is deprecated for new development. When debugging an "interactive button doesn't fire", confirm the block has an action_id and your endpoint handles the block_actions interactive payload type.
Common Slack Webhook Bugs
"My event endpoint URL won't verify." Slack sends a url_verification challenge first. Your endpoint must respond within 3 seconds with { "challenge": "..." } echoed back. A 200 with the wrong body fails verification.
"I'm getting duplicate events." Slack retries failed deliveries (anything other than 2xx) up to 3 times within an hour. Use event_id for idempotency.
"My bot can't see messages it should see." The bot's OAuth scopes determine what events it receives. message.channels only fires for public channels the bot is in; message.groups for private channels; message.im for DMs. Each is a separate scope.
Related Tools
- Generic JSON Formatter
- Discord Webhook Formatter
- Hash Generator — for X-Slack-Signature HMAC verification
- Unix Timestamp Converter — for
event_time
Common Use Cases
Stripe Webhook JSON Formatter
Format and inspect Stripe webhook payloads — auto-pretty-print events like charge.succeeded, invoice.paid, and customer.subscription.updated.
GitHub Webhook JSON Formatter
Format and inspect GitHub webhook payloads — auto-pretty-print push, pull_request, issues, and workflow_run events.
Discord Webhook JSON Formatter
Format and validate Discord webhook payloads — pretty-print embeds, fields, allowed_mentions, and component arrays.
Slack Webhook & Event JSON Formatter
Format Slack webhook payloads, Block Kit messages, and Events API JSON — pretty-print and validate against Slack's schemas.
Related Articles
JSON to YAML: Practical Guide for Kubernetes, Helm, Docker
Convert JSON to YAML for Kubernetes, Helm, and Docker Compose. Covers yq, Python, js-yaml, multiline strings, boolean hazards, and null handling.
JSONPath Tutorial: Querying JSON Data Like a Pro
Master JSONPath syntax for querying JSON data. Learn expressions, filters, recursive descent, and practical examples for API responses and config files.
CSV to JSON Conversion: Methods, Libraries, and Best Practices
Learn how to convert CSV to JSON in JavaScript, Python, and the command line. Covers delimiter handling, type inference, and common edge cases.
JSON vs XML: A Complete Comparison for 2026
Compare JSON and XML side by side. Learn the differences in syntax, performance, readability, and when to use each format in your projects.