Routing Forms
Build a multi-step qualification form that routes respondents to the right booking link — or a custom message — based on their answers.
A routing form sits in front of your booking links and decides which one a respondent should land on. Instead of guessing which of your five booking links to share with a prospect, you share a single URL. They answer a few questions and land in exactly the right meeting type automatically.
Screenshot needed — public routing form page with a question and answer choices
When to use routing forms
Routing forms are most useful when:
- You have multiple booking link types and the right one depends on the prospect (e.g. a short intro call for startups, a longer discovery session for enterprise)
- You want to qualify leads before they can book — if a company has fewer than 5 employees, send a message; otherwise route to discovery
- You want one shareable URL that works for a mixed audience instead of managing separate links for each segment
Creating a form
Path: /calendar → Routing Forms tab → New form (or go directly to /settings/routing-forms).
Fields
Add questions that determine how the respondent is routed. Supported field types:
| Type | Use case |
|---|---|
| Text | Open-ended answer (company name, job title) |
| Textarea | Longer free-text response |
| Select | Single choice from a dropdown (team size, industry) |
| Checkbox | Boolean yes/no |
Mark fields as required if a missing answer should block submission.
Routes
Routes are evaluated in order — first match wins. Each route has:
- Conditions — one or more field checks (field + operator + value). Multiple conditions within a route are AND-joined
- Action — either route to a booking link or show a custom message
Operators available on Select / Checkbox fields: equals, not equals
Operators available on Text / Textarea fields: contains, not contains, equals, not equals
Route action types:
| Action | What happens |
|---|---|
| Route to booking link | Respondent lands on the chosen link's slot picker, pre-filled with their name and email if provided |
| Show message | A custom message is shown instead of a booking UI (useful for disqualified leads) |
| External URL | Respondent is redirected off-site to a URL you specify (e.g. a HubSpot landing page, your pricing page) |
| HubSpot lookup | Look up the matched contact in HubSpot, find their owner, route to that owner's booking link. See CRM Integrations. |
| Salesforce lookup | Same pattern, against Salesforce — looks up Lead/Contact/Account/Opportunity and routes to the SFDC owner's link |
Fallback action
If no route condition matches, the fallback fires. Default: "Thank you. We will be in touch." You can change this to any message or route it to a catch-all booking link.
Sharing a form
Each form gets a public URL: workestra.app/form/<id>. Share this URL anywhere you would otherwise share a booking link.
Embed snippet
Routing forms can also be embedded inline on your own site, the same way booking links can. On the form's settings page, the Share & Embed card has a snippet tab — copy-paste HTML that mounts the form inside your page. See Embed Widget for the loader script details. Both forms and links use the same embed.js runtime.
Pre-filling form answers in the URL
You can pre-populate answers via URL params: /form/<id>?a1=Acme%20Corp&a2=50-100&autofill=true. The autofill=true flag auto-submits the form on page load if all required fields are pre-filled — useful for routing-from-existing-tools workflows where your CRM already knows the answers.
Responses page + CSV export
Path: /calendar/routing-forms/<id>/responses. Lists every submission with the answers, the time, the route taken, and (if the route landed on a booking link) the resulting booking. Filter by date range, by route, or by destination link. CSV export is on the toolbar.
Useful for outreach attribution and conversion analysis: how many submissions ended up booking, on which link, with which answers.
The form page does not require authentication. Anyone with the URL can fill it out and be routed to the appropriate booking link (or message). The booking link they land on keeps its own access controls — if you've set a password on the link, it still applies after routing.
Routing logic example
A "Lead Qualification" form with one question — "Company size":
| Company size answer | Route |
|---|---|
| 1–5 | Show message: "We focus on growth-stage companies. Check back when you reach 10 people." |
| 6–20 | Route → Intro Call (15 min) |
| 21–50 | Route → Discovery Call (45 min, pre-meeting form) |
| 50+ | Route → Architecture Workshop (90 min, requires approval) |
| (no match) | Fallback → Route → Intro Call |
Disabling a form
Use the Active toggle on the Routing Forms tab or in the form settings. While disabled, the public URL returns "this form is no longer active." Existing bookings made through the form are unaffected.
Mirror form (queued)
Re-using a form schema from HubSpot, Marketo, or Pardot — so you don't rebuild your existing qualification form inside Workestra — is on the roadmap as mirror form. The submit handler will accept the upstream form's payload and run our routing logic. Not shipped yet.
Read next
- Booking Links — configure the links that routing forms point to
- CRM Integrations — HubSpot / Salesforce lookup routing in detail
- Embed Widget — embed routing forms on your own site
- Calendar Dashboard — the Routing Forms tab shows all forms at a glance
- Pre-Meeting Forms — collect structured info after routing, right before the slot is confirmed
Schedules, Holidays & Free/Busy Rules
Multi-schedule substrate — build "Standard hours" and "Demo hours" once, point as many booking links at them as you want. Plus country holidays and book-over-named-events rules.
Pre-Meeting Forms
Collect the info you need before the slot is confirmed — text fields, dropdowns, checkboxes, and file uploads.