Workflow recipe

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
TL;DR

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.

Setup

From form to channel in two minutes

  1. 1
    Create a Slack incoming webhook for the channel
    In Slack, click your workspace name → Settings & administration Manage appsIncoming webhooksAdd to Slack. Pick the destination channel. Copy the URL that starts with https://hooks.slack.com/services/.
  2. 2
    Sign up to RouteForms (Free)
    30 responses / month, 1 form, no card. Enough to validate the channel post end-to-end before committing.
  3. 3
    Add your Google Form to RouteForms
    In 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.
  4. 4
    Paste the Slack webhook URL into RouteForms
    We store it encrypted and display it masked. This is the channel webhook you created in step 1.
  5. 5
    Install the Apps Script into your Google Form
    Open your form's three-dot menu → Apps Script. Paste the script we generated. Run installRouteForms once, authorise when Google asks (canonical walkthrough), and the form-submit trigger is live.
  6. 6
    Submit a test response
    Open 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.
The message format

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 response by 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.

Multiple channels

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-leads goes above Budget ≥ 50000 → #hot-leads goes above Source 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 SKIPPED so you can review.
  • Operators. equals, not equals, contains, not contains, ≥, ≤, is empty, is not empty. Numeric operators handle currency formatting ($50,000 compares 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.
Where RouteForms fits

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.
FAQ

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.