Free tool · no sign-up

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.

Build the notification

Pick destination + urgency, edit field names. The previews on the right update as you type.

Form fields
Slack notification preview

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"
        }
      ]
    }
  ]
}
Recommended routing rule

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"
}
What this gives you

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 with Content-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 get contains. Includes the plain-English IF-THEN and a JSON shape for the routing-rule simulator.
How urgency shapes the output

What each priority level changes

UrgencySlack mentionHeader emojiEmail 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.

FAQ

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.