Free tool · no sign-up

Free agency lead routing planner

Plan multi-client Google-Forms-to-Slack routing in one place. Define clients, their forms, Slack destinations, and routing rules. Get a per-client plan ready to implement.

Clients
2
Forms
3
Destinations
6
Rules
5
Suggested RouteForms plan: Solo. $7/month. 5 forms, 10 routing rules per form, unlimited responses. Works for a freelance setup; tight for a multi-client agency.
Clients (2)
Client details

Used as the workspace label in your RouteForms Agency dashboard.

Forms

Each form has its own routing rules.

Slack destinations

Channels you want responses to land in.

Routing rules

Top-to-bottom; first match wins per form.

Plan (Markdown)

Drop into a shared doc; hand to a teammate.

# Agency routing plan

## Acme Co.
Slack workspace: acme.slack.com

### Forms
- Pricing enquiries
- Support tickets

### Slack destinations
- Hot leads → `#acme-hot-leads`
- General leads → `#acme-leads`
- Support inbox → `#acme-support`

### Routing rules
- **Pricing enquiries**: IF Budget >= "50000" → `#acme-hot-leads`
- **Pricing enquiries**: IF Budget >= "0" → `#acme-leads`
- **Support tickets**: IF Priority equals "High" → `#acme-support`

## Beta Realty
Slack workspace: beta-realty.slack.com

### Forms
- Property enquiry

### Slack destinations
- Bangalore team → `#beta-blr`
- Mumbai team → `#beta-mum`
- Default leads → `#beta-leads`

### Routing rules
- **Property enquiry**: IF City equals "Bangalore" → `#beta-blr`
- **Property enquiry**: IF City equals "Mumbai" → `#beta-mum`
JSON export

For scripting or moving to a different planner.

[
  {
    "id": "c_1",
    "name": "Acme Co.",
    "slackWorkspace": "acme.slack.com",
    "forms": [
      {
        "id": "f_1",
        "name": "Pricing enquiries"
      },
      {
        "id": "f_2",
        "name": "Support tickets"
      }
    ],
    "destinations": [
      {
        "id": "d_1",
        "label": "Hot leads",
        "channel": "#acme-hot-leads"
      },
      {
        "id": "d_2",
        "label": "General leads",
        "channel": "#acme-leads"
      },
      {
        "id": "d_3",
        "label": "Support inbox",
        "channel": "#acme-support"
      }
    ],
    "rules": [
      {
        "id": "r_1",
        "formId": "f_1",
        "field": "Budget",
        "operator": ">=",
        "value": "50000",
        "destinationId": "d_1"
      },
      {
        "id": "r_2",
        "formId": "f_1",
        "field": "Budget",
        "operator": ">=",
        "value": "0",
        "destinationId": "d_2"
      },
      {
        "id": "r_3",
        "formId": "f_2",
        "field": "Priority",
        "operator": "equals",
        "value": "High",
        "destinationId": "d_3"
      }
    ]
  },
  {
    "id": "c_2",
    "name": "Beta Realty",
    "slackWorkspace": "beta-realty.slack.com",
    "forms": [
      {
        "id": "f_3",
        "name": "Property enquiry"
      }
    ],
    "destinations": [
      {
        "id": "d_4",
        "label": "Bangalore team",
        "channel": "#beta-blr"
      },
      {
        "id": "d_5",
        "label": "Mumbai team",
        "channel": "#beta-mum"
      },
      {
        "id": "d_6",
        "label": "Default leads",
        "channel": "#beta-leads"
      }
    ],
    "rules": [
      {
        "id": "r_4",
        "formId": "f_3",
        "field": "City",
        "operator": "equals",
        "value": "Bangalore",
        "destinationId": "d_4"
      },
      {
        "id": "r_5",
        "formId": "f_3",
        "field": "City",
        "operator": "equals",
        "value": "Mumbai",
        "destinationId": "d_5"
      }
    ]
  }
]
Why agencies need this

One worksheet beats per-client spreadsheets

Most agencies running form-to-Slack integrations for multiple clients end up with a messy spreadsheet per client and zero shared overview. Which channel does Acme's high-budget lead go to? Was Beta's Bangalore filter set up? Did anyone ever fix the field-name mismatch on Gamma's support form?

The planner consolidates all of it. Every client's forms, destinations, and rules live in one tree you can scroll through. The output Markdown becomes the team's source of truth, paste into a Notion doc, drop in Linear, share with a new hire on day one.

What the planner captures

Four layers per client

  • Client identity: display name + their Slack workspace. The workspace field tells you which webhooks live in which Slack instance, which matters when you're trying to figure out which Slack to log into.
  • Forms: every Google Form the client has under your management. Each form gets its own routing rules.
  • Slack destinations: the channels you want submissions routed into, labelled. The label is human-friendly (“Hot leads”); the channel is the actual Slack channel name (#acme-hot-leads).
  • Routing rules: IF-THEN rules per form. Each rule references a form (which submission set to apply to), a field, an operator, a value, and a destination. The plan output lists them in evaluation order.
From plan to live setup

Three steps

  • 1. Plan here. Fill in clients, forms, destinations, rules. Use the starter clients (Acme Co., Beta Realty) as templates if useful, then delete and add your own.
  • 2. Take the Markdown to your team. Paste into a shared doc; everyone agrees on the plan. The Markdown is human-readable; the JSON export is for scripts that automate the setup.
  • 3. Implement in RouteForms Agency. Create one workspace per client, add the forms, configure the destinations, paste the routing rules. The Markdown plan is now your implementation checklist.
FAQ

Frequently asked questions

What does this planner do?

It's the worksheet you fill before standing up RouteForms (or any routing tool) for an agency. Define each client, list the forms they have, define the Slack channels you want their submissions routed into, and the IF-THEN rules that decide which goes where. The output is a Markdown plan you can share with the team, or a JSON export you can hand to a script. No sign-up; nothing leaves your browser.

How is this different from the routing rule generator?

The rule generator at /tools/lead-routing-rules-generator builds rules for one workflow, pick a preset (Lead by budget, Support by priority, etc.), get a rule list, copy. The agency planner is multi-client: you're managing several clients, each with their own forms / Slack workspaces / routing logic, and you want a unified plan that covers all of them. The output isn't one rule list; it's a per-client config table plus a master overview.

Why do I need this if RouteForms already supports multi-client workspaces?

Because before you set up the workspaces, you need to know what you're setting up. This is the planning surface, once your plan is solid, you take the Markdown output and create the matching workspaces / forms / rules in RouteForms's Agency dashboard. Think of it as the wireframe before the implementation.

What's the suggested-plan logic at the top?

We total your forms and rules across all clients and suggest a RouteForms plan that fits. ≤1 form, no rules → Free (just for piloting). ≤5 forms / ≤10 rules each → Solo. Beyond that → Agency. The Agency plan exists exactly for this multi-client model, client workspaces, unlimited forms, unlimited rules, per-client Slack destinations from one bill.

What if I have 20 clients?

The planner scales to as many clients as you can scroll through, the data structure is just an array. For very large agency setups (50+ clients), you'd probably want to script the RouteForms creation from the JSON export rather than clicking through the dashboard. RouteForms's API supports programmatic workspace creation; talk to us if you're at that scale.

Does the JSON export match RouteForms's import format?

Not exactly, this is a planning export, not an import format. The JSON shape is documented inline (clients with forms, destinations, rules) so you (or a script you write) can transform it for whatever destination you want. RouteForms's actual API uses workspace-scoped IDs that don't exist until the workspace is created.

Can I save the plan?

The page state is local to the browser tab, refresh resets it. Copy the JSON export to a file before refreshing; that's the canonical save format. If we add server-side saving in the future, the data would live behind a RouteForms account; for now it's client-only by design (so you can plan a client's setup without committing to anything).

Why client workspaces instead of one workspace with everything?

Two big reasons. (1) Permissions, your client doesn't see other clients' data. (2) Bill separation, if a client churns, their workspace deactivates without touching the rest. (3) Slack-side isolation, each client's webhooks live in their Slack workspace, not yours. The Agency plan is built around this model.

Implement the plan with RouteForms Agency

Client workspaces, per-client Slack destinations, unlimited forms and rules, one bill. $49/month or $490/year.