Customisation guide

How to customize the Slack message Google Forms posts

Change the header, add mentions, swap the icon, inline only the fields that matter. Worked examples for every customisation level, from a one-line tweak to a Block Kit redesign, and the trade-offs of each.

  • Header text, icons, mentions, inline fields
  • Live preview while you edit
  • Different templates per routing rule
TL;DR

The four levels of customisation

  1. Tweak the defaults: change the header line, swap the icon, append a footer CTA. 30 seconds.
  2. Add a mention: ping a person, a user group, or a channel so the right team sees the submission immediately.
  3. Restructure the fields: surface high-signal fields inline at the top; collapse low-signal fields or hide them entirely.
  4. Switch to Block Kit: dividers, side-by-side fields, contextual footers, link buttons. The full visual redesign.

Each level below, with copy-pasteable examples.

Level 1

Tweak the defaults, header, icon, footer

The default template is a Slack message with an inbox-tray icon, the form title, the submission timestamp, and the fields as bold question / plain answer. Three quick changes cover the common "make it ours" ask without restructuring anything.

  1. 1
    Change the header line
    Replace New response on {{form.title}} with whatever fits — New lead from website, Support ticket opened, Booking request. The header is what the channel sees in the notification preview, so make it scan-friendly.
  2. 2
    Swap the icon emoji
    The icon_emoji field accepts any Slack emoji shortcode — :rotating_light: for urgent alerts, :briefcase: for job applications, :calendar: for bookings. Custom workspace emoji work too. The icon shows next to the message sender name in the channel.
  3. 3
    Append a footer CTA
    A context block at the bottom with a link out, to the CRM record, the form's response sheet, a calendar booking page. Pattern: "Reply within 5 min — <https://crm.example/lead/123|open in CRM>". Keeps the channel actionable rather than just informational.
Level 2

Add a mention so the right people see it

A message in a busy channel without a mention often gets missed. Mentions are the single most useful customisation for any channel with more than one person watching.

  • Single person: <@U01ABCXYZ>. Use when one person owns the response (the assigned rep, the on-call engineer). Find the user ID in the Slack profile's three-dot menu.
  • User group: <!subteam^S012ABC|sales>. Pings everyone in the group; one person picks up. Best for shared inboxes where any member can handle the response.
  • Channel: <#C012ABC> mentions a channel by ID, it renders as a clickable channel link. Useful in cross-channel summaries.
  • Avoid @here and @channel: they ping everyone present, which trains people to mute. Reserve them for genuinely urgent shapes, a P0 incident form, not a normal lead.
Example: lead alert with rep mention
*New lead* — {{response.field['Company']}}
<@U01ABCXYZ>, your assigned rep
{{response.field['Notes']}}
Level 3

Restructure the fields

The default template renders every form field as a row. For forms with 8+ fields, that produces a wall of text the channel scrolls past. The fix is to surface high-signal fields inline at the top, then either drop low-signal fields or collapse them into a quote block.

  1. 1
    Identify high-signal fields
    The fields a teammate needs in the first 2 seconds, name, company, role, urgency. Everything else (consent checkboxes, source dropdowns, internal notes) is delivery-log content, not channel content.
  2. 2
    Pull the high-signal fields into the header
    Use {{response.field['Name']}} placeholders inline: *Lead*: {{response.field['Name']}} from {{response.field['Company']}}. The bold header reads as the summary; the body becomes optional.
  3. 3
    Drop or collapse the rest
    For lead alerts, often just the name + company is enough, the rest lives in the delivery log and the CRM. For triage channels (support tickets), keep the issue summary inline but collapse customer-context fields into a quote block at the bottom for click-through.
  4. 4
    Use the field extractor to plan
    Paste your form JSON into /tools/google-forms-field-extractor. It lists every field with its exact key so the template references are guaranteed to match.
Level 4

Switch to Block Kit for the full redesign

Block Kit is Slack's structured message format, instead of one markdown blob, the message is a JSON array of typed blocks (sections, dividers, contexts, headers, fields). The upgrade is worth it for two shapes: dashboards (multiple stats side-by-side) and triage messages with link buttons.

  • Header block: the large bold title at the top. One line, ≤ 150 chars. Use for the form name or the alert type.
  • Section with fields: up to 10 fields rendered in a 2-column grid. Best for displaying 4–8 short key/value pairs (lead score, urgency, time zone, source).
  • Context block: small text at the bottom, often with a small icon and a timestamp. Where the "Reply within 5 min" CTA lives.
  • Actions block (link buttons): buttons that link out to a CRM, a calendar, an internal docs page. Click-action buttons need a Slack app; link buttons just work.
  • Divider block: a thin horizontal rule between sections. Useful when one form posts multi-section summaries.
/tools/slack-block-kit-payload-generator builds the Block Kit JSON visually, pick blocks, fill placeholders, copy into the template editor.
Worked examples

Three templates that cover most needs

Lead alert, mentions the assigned rep
:rotating_light: *New lead* — {{response.field['Company']}}
<@U01ABCXYZ>, reply within 5 min

*Name:* {{response.field['Name']}}
*Email:* {{response.field['Email']}}
*Notes:* {{response.field['Notes']}}

_Submitted {{response.time}}_
Support ticket, subteam ping with portfolio link
:ticket: *Ticket* — {{response.field['Subject']}}
<!subteam^S0123|support> please triage

*Customer:* {{response.field['Email']}}
*Priority:* {{response.field['Priority']}}
*Issue:*
> {{response.field['Description']}}
Booking request, one-line summary, link out for details
:calendar: {{response.field['Name']}} requested {{response.field['Service']}} on {{response.field['Date']}}
<https://calendar.example/admin|Open booking >
Trade-offs

What to keep in mind when customising

  • Custom templates skip Slack's default rendering. The built-in template handles every form shape automatically; once you customise, you own the format. If you add a field to the form later, you have to add it to the template too.
  • Per-rule templates duplicate logic. Three rules with three templates means three places to update when the brand changes. For forms with many rules, prefer making the base template good and overriding only where strictly necessary.
  • Mentions train channels. Over-mentioning makes the team mute the channel; under-mentioning means the message gets missed. Calibrate per channel, a high-volume triage channel might mention nobody and let triage pull from it; a low-volume VIP channel might always mention.
  • Block Kit is verbose in the editor.You're editing JSON, not prose. The visual preview helps, but expect a learning curve. For simple shapes, mrkdwn beats Block Kit on maintainability.
FAQ

Frequently asked questions

Where do I edit the message template?

In the RouteForms dashboard, open the form → Message template tab. The editor shows the current template on the left and a live Slack preview on the right. You edit the template; the preview re-renders as you type, so you see the post exactly as Slack will render it before saving. Saving applies the template to every subsequent submission; previous deliveries are unchanged.

Do template changes apply to historical submissions?

No, only to submissions received after you save. The delivery log keeps the rendered message for each historical post, so you can still see what was sent, but RouteForms doesn't re-post older submissions with the new template. If you want a back-fill, the cleanest path is to export the historical submissions and post a batch summary manually.

Can I have different templates per channel?

Yes. Each routing rule can carry its own template override. The form's default template is the fallback; rules that need a different shape (lead alerts vs. internal admin notifications, for example) set their own. The override is per-rule, not per-channel, two rules pointing at the same channel can still use different templates if you want.

What Slack formatting actually works?

Slack's mrkdwn (a markdown subset) and Block Kit. mrkdwn covers *bold*, _italic_, ~strike~, `code`, > quote, bullet lists, and links via <url|label>. Block Kit unlocks dividers, header blocks, contextual footers, and fields side-by-side. Standard Markdown links ([text](url)) don't render. Slack uses its own angle-bracket syntax. The Slack message preview tool shows exactly what renders.

How do I mention a person or channel?

By ID, not name. A user mention is <@U01ABCXYZ>; a channel mention is <#C01ABCXYZ>; a user group is <!subteam^S0123|alias>. To find the user ID, in Slack click the profile → three-dot menu → Copy member ID. Channel IDs come from the channel details. The name-based @alex form looks right in plain text but doesn't trigger a real notification, it just shows the literal text. Use IDs.

Can I conditionally show or hide content?

Yes, at the rule level rather than inside one template. Pattern: write the base template for the common case; for the edge cases that need different content, add a separate routing rule with its own template. Trying to do conditional logic inside a single template (Mustache-style ifs) isn't supported. RouteForms keeps templates declarative on purpose, since rules already encode the conditions. The split is cleaner to read and debug.

How do I keep the message short for low-priority submissions?

Render only the high-signal fields. A summary template might be one line: {{form.title}}: {{response.field['Name']}} from {{response.field['Company']}}. Drop the full Q&A list. For high-priority submissions, use the verbose template. Different rules, different templates, same form. This works better than truncating in the form itself because you keep the full response data for the log and only collapse the Slack post.

Can I add custom buttons or actions to the Slack message?

Yes via Block Kit's interactive components, but actions require a Slack app and a webhook receiver on your side to handle clicks. RouteForms supports the message-side: you can ship Block Kit buttons that link out (to a CRM record, a calendar, a docs page), those work with no extra setup. Click-action buttons (assigning the lead in-channel, marking a ticket resolved) need a Slack app with a request URL, which is outside RouteForms's scope.

Customise once, ship every form

Free for 30 responses a month. Edit the template; preview it; ship it. No card.