Free Slack webhook tools
Tools that work with the Slack side of the pipeline: checking that an incoming webhook URL still works, designing the Block Kit message format before any wiring exists, and pulling in a workflow-tuned template instead of starting blank.
Slack Message Preview
Type form field names and values. Get a Slack-style preview of the message plus the Block Kit JSON payload.
Message Template Generator
Pick a preset, lead, support, application, booking, feedback. Each ships an icon, mention, channel, and footer CTA tuned for that workflow.
Notification Templates (reference)
Eight ready-to-copy notification templates, lead, support, booking, application, feedback, real estate, high-value lead, urgent. Plain text + Block Kit JSON for each.
Slack Webhook Message Formatter
Format Slack webhook messages and Block Kit payloads from five starter modes (Simple, Lead alert, Google Forms response, Support request, Custom). JSON + curl + live preview.
Slack Webhook URL Guide
Six-step guide to creating a Slack webhook URL, picking a channel, copying the URL, testing it, and wiring it into a Google Form.
What is a Slack Incoming Webhook?
Plain-English explainer — what they are, what they can/can't do, JSON shape Slack expects, common errors, and when they're the right choice.
Three problems every Slack-bound form workflow runs into
An incoming webhook URL looks like a magic password: paste it into any HTTPS client, send a JSON body, and a message lands in a Slack channel. In practice you hit three predictable problems, and one tool on this page handles each.
- “Does this URL actually work?” Webhooks can be revoked, channels can be archived, the URL can be wrong by one character. The checker POSTs a test payload and tells you in plain English whether Slack accepted it. Use it when you create a new webhook (confirm it works before wiring it) and when deliveries silently stop (find out whether Slack is rejecting your posts).
- “What will the message look like in the channel?”Block Kit JSON is the right answer technically, but it's hard to read at a glance. The preview tool turns a set of form fields into both the channel-eye-view (rendered Slack message) and the Block Kit JSON, side by side. Useful when you're designing the message before any integration exists.
- “What template do I use for this workflow?”A lead notification, a support ticket, an application, a booking, and a feedback message all want different defaults, different icons, different mentions, different urgency cues. The template generator ships those five as presets so you don't have to invent each one.
Decoded, what each one actually means
- HTTP 200 + body
ok: Slack accepted the message. It's in the channel the webhook is bound to. - HTTP 404 +
no_serviceorno_team: Slack doesn't recognise the webhook URL. It was revoked or deleted. Generate a new one in Slack and update the caller. - HTTP 400 +
invalid_payload: URL is good but Slack doesn't like the JSON shape. Almost always a missing or wrongContent-Type: application/jsonheader in the caller, or a Block Kit object that violates Slack's schema. - HTTP 429: Slack rate-limited you. Back off (the Retry-After header tells you for how long) and retry. If you're hitting this often you're sending too many messages too fast, batch or stagger.
- Timeout: the endpoint took longer than ~5 seconds to respond. Real Slack acks fast; a timeout usually means the URL is wrong or the network path is blocked.
Frequently asked questions
What are 'Slack webhook tools' on this page?▾
Free utilities for working with Slack incoming webhooks, the URLs that let any HTTPS client POST messages into a Slack channel. Three tools: a checker that verifies a webhook URL is alive and decodes Slack's error responses; a preview that renders the Block Kit message you'd get from a set of form fields; and a template generator with five workflow-tuned presets (lead, support, application, booking, feedback).
What's a Slack incoming webhook again?▾
A long, channel-specific URL on hooks.slack.com that you POST JSON to. Slack accepts the body, parses it as a Block Kit message (or a plain { text } fallback), and posts it as if from a bot. Create one in your workspace under 'Slack apps' → 'Incoming webhooks' → 'Add to Slack'. Each webhook is bound to one specific channel; rotating channel or revoking the webhook breaks it.
How do I know if my webhook still works?▾
Paste it into the webhook checker. We POST a tiny test payload server-side, read Slack's response, and report status / latency / decoded error code in plain English. The common failure modes: 'no_service' or 'no_team' (webhook revoked); 'invalid_payload' (the JSON body is wrong shape, common during message format debugging); HTTP 429 (rate-limited; back off). If you get 200 / 'ok', the webhook is alive and the message has landed in the channel.
Which tool should I use first?▾
Depends on where you are. If you've just created a webhook and want to confirm it works before wiring an Apps Script, the checker is the first stop. If you haven't created the webhook yet and want to design the message format upfront, start with the preview, type field values, see the channel-eye-view, decide if it works. If you know what kind of workflow you're building (lead notification vs support ticket vs booking), jump straight to the template generator and pick the preset.
Is it safe to paste my webhook URL into the checker?▾
Yes. The check happens server-side from our infrastructure; we send a single innocuous payload (a 'webhook check' message for Slack URLs, a plain identifier for everything else); we don't store the URL after the request finishes. We also block private IPs, loopback, link-local, cloud-metadata endpoints, and .internal / .local hostnames to refuse anything that would obviously fail from outside your network.
Does the Block Kit preview match what Slack will show?▾
Close enough for design work. Slack's real renderer handles a few extra cases (full mrkdwn nuances, channel/user link expansion, emoji autocomplete). Both the preview tool and the template generator support *bold*, _italic_, `code`, and line breaks, the parts you need while picking a template. For pixel-perfect verification, POST the JSON to a real webhook and look in Slack.
Can I use mentions like @here?▾
Yes. Slack's mention syntax is <!here>, <!channel>, <@USER_ID>, or <!subteam^TEAM_ID|fallback>. The template generator ships sensible defaults per preset. Lead uses <!here>, Support uses a subteam placeholder. The preview tool doesn't add mentions by default, type them into the message body if you want them.
What do I do if the message looks right but never arrives?▾
Run the checker against the webhook URL, if it returns 200 / ok, the URL is fine. If it returns 200 but Slack still doesn't show the message, your Slack workspace might have an admin policy filtering bot posts (some enterprise workspaces do this). If the checker shows an error, fix that first.
Use these webhooks with routing on top
RouteForms turns 'POST to one webhook' into 'POST to the right webhook based on the form answer', with delivery monitoring and retries. Free for 30 responses a month.
Keep reading
The full index. Google Forms, Slack webhook, Apps Script, and lead routing categories.
How to create a Slack incoming webhook and wire it into a Google Form, step by step.
Copy-paste message templates for common form workflows, supplements the template generator here.
All the real options for delivering Google Form responses to Slack, ranked by fit.