Google Forms response notification generator
Pick destination (Slack / email / both), set urgency, type your form fields. Out: a Slack Block Kit payload, an email subject + body, and a recommended routing rule — live previews, copy each output, no sign-up.
Pick destination + urgency, edit field names. The previews on the right update as you type.
Block Kit JSON — POST to any incoming-webhook URL with application/json.
{
"text": "New Website enquiry form response",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": ":fire: New Website enquiry form response"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "<!here>"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Name:* Priya Mehta\n*Email:* priya@acme.com\n*Budget:* $50,000"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Submitted just now · #hot-leads"
}
]
}
]
}Based on the first non-empty field. Paste into RouteForms or the simulator.
// Recommended routing rule (paste into RouteForms or Apps Script)
IF "Name" contains "Priya Mehta"
→ #hot-leads
// As JSON (for /tools/routing-rule-simulator):
{
"rules": [
{
"field": "Name",
"operator": "contains",
"value": "Priya Mehta",
"destination": "#hot-leads"
}
],
"defaultDestination": "#leads-other"
}Three outputs from one input
The same form fields and urgency setting produce all three artefacts a notification workflow needs: the Slack message, the email backup, and a routing rule based on the response shape.
- Slack Block Kit payload. Header + (optional) urgency mention + field list + context line. POST it as-is to any
hooks.slack.com/services/…URL withContent-Type: application/json. - Email subject + body. Subject is prefixed by urgency (
[URGENT],[High priority]) and summarises the first two fields. Body lists every field plus the priority and a link back. - Recommended routing rule. Based on the first non-empty form field — numeric values get a
≥operator, strings getcontains. Includes the plain-English IF-THEN and a JSON shape for the routing-rule simulator.
What each priority level changes
| Urgency | Slack mention | Header emoji | Email prefix |
|---|---|---|---|
| P0 — on-call | <!subteam^…|oncall> | :rotating_light: | [URGENT] |
| P1 — same hour | <!here> | :fire: | [High priority] |
| P2 — same day | <!channel> | :inbox_tray: | — |
| Low — async | (none) | :mailbox: | — |
Adjust the mention to your team — <@U0123> for a single user, <!subteam^S0123|alias> for a custom user group. The structure stays the same.
Frequently asked questions
What does this tool generate?▾
Three things side by side. (1) A Slack Block Kit notification payload — POST it to any incoming-webhook URL. (2) An email notification preview — subject line and body, ready for any SMTP / MailApp / SendGrid pipeline. (3) A recommended routing rule based on the first non-empty form field, in plain English plus JSON for the routing-rule simulator.
Why a recommended routing rule?▾
Because the question 'how do I get notified when someone submits my Google Form?' almost always evolves into 'how do I route different responses to different places?' once a team starts using the notifications. The recommended rule gives you a starting point — usually IF (first field) >= (example value) → channel — that you can edit and ship in two clicks.
Can I pick email-only or Slack-only?▾
Yes. The destination picker switches the output cards on or off. Slack-only hides the email preview. Email-only hides the Slack payload. Both shows them side by side — useful when you want Slack as the team surface and email as the archive trail.
How does urgency change the output?▾
Urgency shapes the Slack mention and the email subject prefix. P0 adds <!subteam^…|oncall> and an [URGENT] subject prefix. P1 adds <!here> and [High priority]. P2 adds <!channel>. Low is informational — no mention, no prefix. The header emoji also reflects urgency (:rotating_light: for P0, :fire: for P1, :inbox_tray: for P2, :mailbox: for low).
Does this tool send anything?▾
No. Everything runs in your browser. We don't POST to Slack, send the email, or store your form fields anywhere. Copy the outputs, paste them into your own pipeline — Apps Script, webhook, RouteForms, whatever.
How do I turn this into a live workflow?▾
Three paths. (1) RouteForms (managed): paste the Slack payload as the notification template and the routing rule into the form's settings. (2) Apps Script (DIY): use the /tools/google-forms-to-slack-generator to emit the bridge script, then customise the buildSlackPayload() function with the JSON above. (3) Webhook (custom): POST the Slack JSON from your own server or a Make / Zapier scenario.
Why is the email format simpler than the Slack format?▾
Because Slack supports Block Kit (rich layouts, mentions, threading, reactions) and email is plain text by convention. The email body keeps the same field list but skips the visual structure — it's optimised for the recipient skimming the subject line and the first two field values, not for layout.
What if I want both Slack and email going to the same response?▾
Pick the Both destination. The generator emits both outputs; you wire each into its own pipeline. RouteForms handles the Slack side automatically; for email you'd add a single MailApp.sendEmail call to the Apps Script onFormSubmit handler, or keep Google Forms' built-in email notifications on for archival.
Save this notification workflow in RouteForms
The Slack payload becomes the form's notification template. The routing rule becomes a live IF-THEN. The email stays as your archive. Free for 30 responses a month.
Keep reading
A simpler tool — type fields, see the Slack preview, copy the JSON. No email or routing-rule output.
The Slack-vs-email-add-on positioning page, with the install walkthrough.
When email isn't fast enough — the side-by-side comparison.
Once you have one rule, generate the full ruleset by form type.
The full guide with routing rules, delivery logs, and pricing.