Send Google Forms responses to a Slack channel
Every submission lands as a message in the channel you choose. Optionally route to different channels based on the answer. Two-minute setup; no per-task pricing.
- Single channel or rules-based routing
- Works with public and private channels
- Free for 30 responses / month
The short answer
Create a Slack incoming webhook bound to your target channel, then sign up to RouteForms (Free), paste the webhook URL, and install the Apps Script we generate into your Google Form. Every submission posts to the channel within a few seconds. Need different responses in different channels? Add IF-THEN routing rules, submissions evaluate top-to-bottom and land in the first match.
From form to channel in two minutes
- 1Create a Slack incoming webhook for the channelIn Slack, click your workspace name → Settings & administration → Manage apps → Incoming webhooks → Add to Slack. Pick the destination channel. Copy the URL that starts with
https://hooks.slack.com/services/. - 2Sign up to RouteForms (Free)30 responses / month, 1 form, no card. Enough to validate the channel post end-to-end before committing.
- 3Add your Google Form to RouteFormsIn the dashboard, click New form. Paste your Google Form's URL. We'll generate a form-specific Apps Script and a webhook URL on our side that handles the routing.
- 4Paste the Slack webhook URL into RouteFormsWe store it encrypted and display it masked. This is the channel webhook you created in step 1.
- 5Install the Apps Script into your Google FormOpen your form's three-dot menu → Apps Script. Paste the script we generated. Run
installRouteFormsonce, authorise when Google asks (canonical walkthrough), and the form-submit trigger is live. - 6Submit a test responseOpen the form, fill it in. Within a few seconds, the channel from step 1 should show the message. The RouteForms delivery log records the post with Slack's status code so you can verify even without watching Slack.
What lands in the channel
The default RouteForms template renders each submission as a Slack Block Kit message with three blocks: a header line, a meta section, and a field list.
- Header:
:inbox_tray: New form responseby default. Customise per form to fit the workflow (e.g.:bell: New lead). - Meta section: form title plus submission timestamp.
- Field list: every visible form question rendered as
*Question:* answer, comma-joined for checkbox values, truncated at 500 chars per field for readability.
For different message shapes (e.g. lead notification with @here mention + footer link), our template generator ships five presets you can adopt or edit. The notification templates page has 9 ready-to-copy variants.
Route by answer when one channel isn't enough
The single-channel setup above is the common case. If different submissions deserve different channels (high-budget leads vs general leads, urgent support tickets vs routine ones), RouteForms's routing rules handle the dispatch.
- How rules evaluate. Top-to-bottom, first match wins. So
Budget ≥ 100000 → #vip-leadsgoes aboveBudget ≥ 50000 → #hot-leadsgoes aboveSource contains "Pricing" → #pricing-leads. - What happens if no rule matches.Falls through to the default channel (the form's primary webhook). If no default is set either, the submission is logged as
SKIPPEDso you can review. - Operators. equals, not equals, contains, not contains, ≥, ≤, is empty, is not empty. Numeric operators handle currency formatting (
$50,000compares as 50000). - Where to start. The rule generator ships 6 workflow presets (lead by budget, by source, support by priority, etc.). Pick one, edit channels, paste into RouteForms.
What you get on top of the raw webhook
- Conditional routing per form, with the rule simulator at /tools/routing-rule-simulator for testing before going live.
- Per-form delivery logrecording every Slack post with the matched rule, destination channel, and Slack's HTTP response.
- One-click retries on failed deliveries; failed-delivery email alerts on paid plans.
- Idempotency: the same Google Forms response ID can't post to Slack twice even if Apps Script retries.
- Multi-client workspaceson the Agency plan, one RouteForms account routing different clients' forms to their respective Slack workspaces.
Frequently asked questions
How do I send Google Forms responses to a Slack channel?▾
Create a Slack incoming webhook bound to the channel, then either (a) use RouteForms to handle the form-side wiring with routing rules, retries, and a delivery log; or (b) write a Google Apps Script that posts to the webhook on form submit. Both deliver a Slack post on every submission; RouteForms adds routing, monitoring, and idempotency on top.
What's a Slack incoming webhook?▾
A channel-specific URL on hooks.slack.com that accepts JSON POSTs and posts them as messages in that channel. Create one from Slack → Settings & administration → Manage apps → Incoming webhooks → Add to Slack. Pick the destination channel; copy the URL. Each webhook is bound to exactly one channel.
Can I send the same form to multiple Slack channels based on the answer?▾
Yes. Define routing rules (IF Field operator value → channel). RouteForms walks them top-to-bottom on every submission, posts to the first match, and falls through to a default channel if no rule matches. Common patterns: route by budget (high-budget → #hot-leads), by source (Pricing page → #pricing-leads), or by city (Bangalore → #blr-team).
Does the Slack channel have to be public?▾
No, incoming webhooks work on both public and private channels. For a private channel, the person creating the webhook must be a member of the channel. Our /google-forms-to-private-slack-channel page covers the private-channel specifics.
What does the message in the channel look like?▾
A Block Kit message with an inbox-tray header, a meta section showing form name and submission time, a divider, then each visible field as a labelled line. RouteForms's template generator at /tools/slack-message-template-generator lets you customise the format per workflow.
Will all team members in the channel see the message?▾
Yes. Channel posts are visible to every channel member (subject to channel membership and any retention policy). For directing the post at specific people without spamming everyone, use a mention like <!here>, <!subteam^TEAM_ID|alias>, or <@USER_ID> inside the message body.
What if Slack rejects the post?▾
RouteForms records the failed delivery with the Slack response code, lets you retry from the dashboard, and (on paid plans) emails you when a failure streak starts. Common causes: webhook revoked, malformed Block Kit, or rate-limited. The decoded errors are explained in our /tools/slack-webhook-error-decoder.
How fast does the message arrive in Slack?▾
Within a couple of seconds of the form submission in normal conditions. Apps Script's trigger fires the handler, RouteForms processes the rules, and the Slack post lands. Slow paths usually mean a rate-limit or a webhook that's having an outage, both visible in the delivery log.
Send your first form response to a Slack channel
Free for 30 responses a month. No card. Two-minute setup.
Keep reading
The end-to-end overview: pricing, features, routing model.
Operators, ordering, defaults, and how the rule engine evaluates in production.
Permissions, who can create webhooks for private channels, and audit considerations.
All the real options for delivering Google Form responses to Slack, ranked by fit.