Conditional routing

Conditional routing of Google Form responses

Conditional routing is the pattern that turns a Google Form into something that actually fits how a team works: each submission goes to the channel — and the person — that owns it, based on what the respondent answered.

  • First-match-wins, predictable destinations
  • 10 operators including numeric and contains
  • Default fallback so nothing is dropped
The pattern

Every routed response is a switch over the form's answers

Conditional routing is just a switch statement applied to a form submission. For every response, the router asks: which of these conditions is true? The first condition that matches picks the destination. If none match, the response falls through to a default.

In code form, with a Google Forms submission represented as an object, conditional routing looks like:

if (response.Budget >= 50000) send("#hot-leads")
else if (response.PropertyType.includes("Commercial")) send("#commercial-desk")
else if (response.City === "Austin") send("#austin-team")
else send("#all-enquiries")  // default

You don't actually write that code. RouteForms takes the same shape — field, operator, value, destination — as rows in a dashboard, evaluates them top-to-bottom on every Google Forms submission, and posts to the matched Slack channel.

Anatomy of a routing condition

Four pieces, no surprises

  • Field — the exact question title from your Google Form. Match is case-insensitive and trims whitespace.
  • Operator — how to compare. equals / does not equal for picklists, contains / does not contain for free text, greater/less than for numbers, is empty / is not empty for optional fields.
  • Value — what to compare against. Numeric operators strip currency symbols, commas, and trailing units, so 50000 matches ₹50,000 and 50k usd alike.
  • Destination — a Slack incoming-webhook URL plus an optional channel label you choose for the delivery log.
When you need conditional routing

Symptoms that say a single Slack channel isn't enough

  • Your #leads channel has become noise — high-value enquiries are indistinguishable from low-value ones at a glance.
  • Different teams own different response shapes (sales vs support vs billing) but they're all reading the same channel.
  • Urgent issues (NPS 1–6, “Urgent” bug priority, “Escalate” answer) need to get to on-call, not the general inbox.
  • You're an agency and each client's form responses should land in that client's own Slack workspace.
  • You've already tried Zapier Paths and the per-task pricing or the gated tier made it untenable for the volume you're running.
Rule ordering

First match wins — put specific rules above general ones

Because RouteForms uses first-match-wins, the order of rules matters. The pattern is the same as any switch: handle the specific case before the general case, or the general case will eat all submissions before the specific case gets a look in.

Property enquiry form · correct order
#1IFBudgetgreater than or equal100000→ send to#vip-leads
#2IFBudgetgreater than or equal50000→ send to#hot-leads
#3IFCityequalsAustin→ send to#austin-team

If you swapped #1 and #2, every high-value lead (Budget ≥ 100000) would still match #2 (Budget ≥ 50000) first and land in #hot-leads instead of #vip-leads. The dashboard's up/down arrows let you reorder rules live, no redeploy.

Setup

From zero to conditional routing in five minutes

  1. 1
    Install the Apps Script trigger
    Copy RouteForms' pre-filled snippet into Extensions → Apps Scriptin your form and run the install once. That registers Google's onFormSubmit trigger.
  2. 2
    Pick a default Slack channel
    On the Slack tab, paste an incoming-webhook URL for the catch-all channel. Every submission goes here until a routing rule overrides it.
  3. 3
    Add routing rules
    On the Routing rules tab, add one row per condition. Pick the field name from your form, an operator, a value, and the destination Slack webhook for that match.
  4. 4
    Simulate before trusting
    The simulator at the bottom of the tab pre-fills with your latest real submission. Tweak the JSON to test edge cases, click Run, and see exactly which rule (or default) would have fired.
  5. 5
    Watch the delivery log
    Every Slack post records the matched rule, the destination, and Slack's HTTP response. If a rule isn't firing when you expect, the log shows you what actually happened.
FAQ

Frequently asked questions

What is conditional routing for a form?

Conditional routing means the destination of a form submission depends on what the respondent answered. Instead of every response going to one place, each response is matched against a small set of rules (IF field = value THEN send to X) and routed to the destination that matched. It's the same pattern as a switch statement, applied to form submissions.

Does Google Forms support conditional routing out of the box?

No. Google Forms' built-in 'send a notification' feature posts to one fixed email address regardless of the answer. To branch on the answer, you either write Apps Script with your own if/else logic, use a workflow tool with branching (Zapier Paths, Make routers, n8n), or use a purpose-built form-to-Slack router like RouteForms.

How is conditional routing different from filtering?

Filtering decides whether a submission goes anywhere at all. Conditional routing decides which of several destinations it goes to. A filter throws away submissions that don't match; a router never throws anything away — non-matching submissions fall through to a default destination.

Why not just send everything to one Slack channel and let the team filter?

Because nobody filters. A high-velocity #leads channel becomes background noise within a week, and the responses that actually matter (a $50k enquiry, an urgent support ticket) get buried under the rest. Conditional routing is how you preserve the attention each response deserves.

How does conditional routing handle ties — what if two rules match?

RouteForms uses first-match-wins: rules are evaluated top to bottom and only the first match fires. There is no implicit fan-out. If you genuinely need a response in two channels, point two routing rules at it via different webhooks, but the default is the safer one — one submission, one channel.

What operators can I use in a routing condition?

RouteForms supports ten: equals, does not equal, contains, does not contain, greater than, greater than or equal, less than, less than or equal, is empty, is not empty. Numeric operators tolerate currency symbols and commas, so '₹50,000' compares correctly against 50000.

Can I test a routing condition before going live?

Yes. The Routing rules tab in RouteForms includes a simulator pre-filled with your most recent real submission. Edit the JSON, click Run test, and the dashboard shows you which rule (or the default fallback) would have fired — no actual Slack message is sent.

What happens to submissions that don't match any rule?

They go to the form's default Slack channel — the webhook you set on the Slack tab when you first connected the form. That's the catch-all that makes routing safe: even if all your rules miss, the response is still delivered somewhere visible.

Set up your first conditional route

Solo plan supports 10 rules per form, Agency is unlimited. Both start at $7.