Guide

Conditional Logic for Booking Forms

Show or hide questions, make fields required, or block a booking entirely based on how your attendees answer earlier questions. The logic runs inside the booking form itself, not on a separate routing step.

10 min read Updated June 2026 Booking Forms

What is conditional logic?

Conditional logic lets you show, hide, require, or block questions on your booking form depending on how a previous question is answered. The form adapts in real time as your attendee fills it in.

Without conditional logic, every attendee sees every question regardless of relevance. With it, you can build a smart, focused form that asks different things to different people based on their own answers.

Why use conditional logic

Most scheduling tools force every attendee to see every question. TimelyDo's conditional logic changes that. Here is why it matters:

1
Shorter, more relevant forms
Show each attendee only the questions that apply to them. A client booking a "discovery call" does not need to answer the same questions as someone booking a "deep-dive session."
2
Pre-qualify before the slot is taken
Block the booking or redirect the attendee if their answers reveal they are not a fit. No more wasted calendar time on unqualified leads.
3
Collect richer, contextual data
Follow-up questions appear only when triggered by the answer above. "Which social platform?" only appears if they chose "Social media" as how they heard about you.
4
Higher conversion on the booking page
A shorter, smarter form reduces drop-off. Attendees are not confused by irrelevant fields they do not know how to answer.
What TimelyDo gives you: logic that runs inside the booking form itself, with 13 trigger question types, AND/OR matching across multiple rules, and 5 action types (Show, Hide, Require, Block booking, and Redirect). Many scheduling tools offer branching only on a separate routing form, or not at all.

Enabling conditional logic

Conditional logic is disabled by default to keep the event editor clean for hosts who do not need it. Enable it once you are ready to add logic to an event.

1
Open any event in the editor
Go to Events → click an event → scroll to the Form Questions section.
2
Add at least two questions
Conditions reference answers from earlier questions. You need at least two questions assigned to the event before the logic builder becomes useful.
3
Toggle "Logic" on
In the top-right of the Form Questions section you will see a Logic toggle button with an iOS-style switch. Click it to enable. Three things appear immediately: the Logic tab in the tab bar, a branch icon button on every question card, and a ? docs link next to the toggle.
Auto-enabled when editing: If you reopen an event that already has conditions saved from a previous session, the Logic toggle enables automatically so your existing rules are immediately visible.
Turning it back off: Disabling the Logic toggle will ask for confirmation and then clear all configured conditions from every question on this event. This cannot be undone.

UI indicators

Once conditional logic is enabled, several visual signals appear across the question list to help you see the state of your logic at a glance, without opening every card.

Logic tab count badge
The Logic tab in the tab bar shows a violet number badge that counts the total conditions configured across all questions on this event. It updates instantly as you add or remove rules.
Branch icon dot badge
Every question card has a branch icon button on its right side. When that question has at least one condition configured, a small violet dot appears on the icon, similar to a notification badge. Questions without any conditions show a plain grey icon.
Condition summary strip
When a question has conditions set and its logic panel is collapsed, a one line summary appears directly below the card row. For example: "Shows only if 'Service type' equals 'In-person'". If a reorder has made a source question stale, the strip turns amber with a warning instead.
Amber border for stale conditions
If you drag a question to a new position and that reorder causes one of its condition sources to now appear below it, the card border turns amber and the condition summary strip shows a warning. Open the card and fix or remove the highlighted rules before saving.

Step-by-step setup

Once the Logic toggle is on, here is how to add a condition to any question:

1
Click the branch icon on a question card
The branch/fork icon appears on the right side of each question card in the Questions tab. Click it to expand the logic builder beneath that card.
2
Click "Add a condition"
If no conditions exist yet, an empty state appears with an "Add a condition" button. Clicking it creates the first rule row. Once at least one rule exists, a Clear all link appears in the top-right of the logic builder so you can wipe all rules for that question in one click.
3
Select the source question
The picker shows all eligible questions that appear above this one in the form. Pick the question whose answer should drive this condition. Only supported trigger types appear here (see below).
4
Choose the operator and value
The operator dropdown is automatically filtered to operators that are valid for the source question type. The value input changes based on the source type: a choices dropdown for Dropdown/Radio/Checkbox questions, Yes/No for boolean, a number field for Number, a date picker for Date questions (or a time picker for Time format, or a datetime picker for Date and time format), or a text input for text types.
5
Select the action
Choose what happens when the condition is met: Show, Hide, Require, Block booking, or Redirect to URL.
6
Save the event
Conditions are saved when you click Save on the event editor. Until then, they are drafts. After saving, the logic is immediately live on the public booking form.

Which question types can trigger conditions

Any question that appears above the current question in the form can be a trigger source, as long as its type supports operators. Here are all supported trigger types and what they can do:

Question type Operators available Value input
Dropdown equals, does not equal, is answered, is blank Picks from the dropdown's options
Radio equals, does not equal, is answered, is blank Picks from the radio's options
Checkbox contains, does not contain, is answered, is blank Picks from the checkbox's options
Yes / No equals (Yes or No), is answered, is blank Yes or No dropdown
One Line Text equals, does not equal, contains, does not contain, is answered, is blank Free text input
Multi Line Text equals, does not equal, contains, does not contain, is answered, is blank Free text input
Number equals, does not equal, greater than, less than, greater than or equal to, less than or equal to, is answered, is blank Numeric input
Rating equals, greater than, less than, is answered, is blank Numeric input
Date is before, is after, is answered, is blank Date picker, time picker, or datetime picker depending on the date format configured on the source question
Email is answered, is blank No value needed
Phone is answered, is blank No value needed
URL is answered, is blank No value needed
File Upload is answered, is blank No value needed
Hidden and Signature questions cannot be trigger sources. A hidden field is never shown to the attendee and carries no user-supplied value. A signature captures a drawn image rather than a comparable value. Neither appears in the source question picker.

Operators explained

An operator defines how the attendee's answer is compared to the value you configure. The operator list is automatically filtered to only show operators that make sense for the source question type.

Operator What it checks Example
equalsAnswer exactly matches the configured valueService type equals "Legal"
does not equalAnswer is anything except the configured valueMeeting format does not equal "Remote"
containsOne of the checked values includes the target (Checkbox) or the text includes the substring (text types)Topics contains "Pricing"
does not containInverse of containsInterests does not contain "Enterprise"
greater thanNumeric answer is above the valueTeam size greater than 50
less thanNumeric answer is below the valueBudget less than 1000
greater than or equal toNumeric answer is at or above the valueAge greater than or equal to 18
less than or equal toNumeric answer is at or below the valueGuests less than or equal to 10
is beforeDate answer is earlier than the configured value. For date range questions, compares the start date. For time questions, compares the selected time.Project start is before 2026-01-01
is afterDate answer is later than the configured value. For date range questions, compares the end date. For time questions, compares the selected time.Deadline is after 2026-06-30
is answeredThe attendee filled in anything at allPhone number is answered
is blankThe attendee left the field emptyCompany name is blank

AND / OR matching across multiple conditions

A single question can have multiple condition rules. When you add more than one rule, a match selector appears letting you choose how the rules are evaluated together.

ANY (OR)
The action fires if at least one of the rules is true. Use this when any of several answers should trigger the outcome.
Service equals "Legal"
OR
Service equals "Compliance"
Show: NDA upload field
ALL (AND)
The action fires only if every single rule is true. Use this when multiple conditions must all be satisfied together.
Existing client equals "Yes"
AND
Plan equals "Enterprise"
Show: Priority support question
Tip: The AND/OR toggle only appears once you have 2 or more rules on the same question. With a single rule it has no effect.

The 5 actions

Show

Display a question only when the condition is met
Most common

The question is hidden by default and appears only when the condition is met. When the attendee changes their earlier answer so the condition is no longer met, the question hides again immediately and any answer they gave is cleared.

Best for
  • Follow-up questions that only apply to certain answers
  • Service-specific intake fields
  • "Which office?" only if they chose "In-person"
  • "Which social platform?" only if they chose "Social media"
Behaviour on the form
  • Hidden from view until condition is met
  • Appears with a smooth animation
  • Disappears again if the trigger answer changes
  • Cleared answer when hidden, never submitted empty
#1 How did you hear about us? equals "Social media"
Show: #2 Which platform?

Hide

Remove a question that is shown by default when the condition is met
Inverse of Show

The question is visible by default and disappears when the condition is met. Think of it as the inverse of Show: the question is there for everyone except those who trigger the condition.

Best for
  • Hiding fields that become redundant given a previous answer
  • "Company name" can be hidden if "I'm an individual" is selected
  • Removing advanced questions for beginner-level clients
Behaviour on the form
  • Visible to everyone by default
  • Disappears when the condition is met
  • Answer is cleared when hidden
#1 Client type equals "Individual"
Hide: #2 Company name

Require

Make a question mandatory only when the condition is met
Conditional mandatory

The question is always visible but only becomes mandatory when the condition is met. Attendees who do not trigger the condition can leave it blank. Those who do trigger it must answer before they can submit.

Best for
  • A company name that is optional for individuals but required for business bookings
  • A licence number required only if the client is a professional
  • A project brief required only for longer session types
Behaviour on the form
  • Always visible, optional by default
  • A red asterisk (*) appears when condition is met
  • Form will not submit without an answer when required
#1 Booking type equals "Business"
Require: #2 Company registration number

Block booking

Prevent the attendee from completing the booking
Pre-qualification

When the condition is met, the form's submit button is disabled and a red message banner appears explaining why the booking cannot proceed. You can configure the message text. If the attendee changes their earlier answer so the condition is no longer met, the block is lifted immediately.

Best for
  • Age-gating (must be 18+ to book)
  • Membership checks ("Existing clients only")
  • Geography restrictions
  • Budget qualification (minimum spend required)
  • B2B lead qualification (company size below threshold)
Block message

You can write a custom message that appears on the booking page when the block is triggered. Leave it blank to show a default message.

Example: "This session is for existing clients only. Please contact us directly to become a client."

No separate routing form needed: TimelyDo blocks the booking inline, on the same page the attendee is already on. There is no redirect to a different URL and no drop-off between steps.
#1 Are you an existing client? equals "No"
Block booking → "This session is for existing clients only."

Redirect

Send the attendee to a different URL
Routing

When the condition is met, the attendee is shown a brief message and then automatically navigated to a URL you configure after 1.5 seconds. Use this to route people to a different booking page, a self-serve resource, or an external intake form.

Best for
  • Routing enterprise clients to a dedicated booking page
  • Sending SMB clients to a self-serve signup
  • Directing international clients to a region-specific page
  • Routing to a partner's booking link based on service type
Redirect URL

Enter the full URL including https://. The attendee sees a brief message ("Based on your answers, we're taking you to the right page") and is redirected after 1.5 seconds.

Works inside embedded booking forms too. The redirect escapes the embed iframe automatically.

#1 Team size greater than 200
Redirect → https://yoursite.com/enterprise-booking

Real-world examples

Example 1
Coaching business: qualify before the slot is taken
Questions on the form:
  • #1 What stage is your business? (Dropdown: Idea stage / Early revenue / Growth / Established)
  • #2 What is your monthly revenue? (Number)
  • #3 Which areas do you want coaching on? (Checkbox)
Logic:
  • #2 is shown only when #1 equals "Growth" or "Established" (ANY match)
  • Block booking when #1 equals "Idea stage" → "Our coaching programme is for businesses already generating revenue. Join our waitlist instead."
Result: Pre-revenue founders cannot book at all. Revenue-generating businesses see a relevant revenue question. Idea-stage visitors are redirected to the waitlist instead of consuming a calendar slot.
Example 2
Legal firm: different questions for different case types
Questions:
  • #1 What type of legal matter? (Dropdown: Family / Corporate / Criminal / Employment)
  • #2 Are children involved? (Yes/No, shown only when #1 = Family)
  • #3 Is the company registered in the UK? (Yes/No, shown only when #1 = Corporate)
  • #4 Please upload any relevant documents (File upload, always shown)
Logic:
  • #2 shown only when #1 equals "Family"
  • #3 shown only when #1 equals "Corporate"
Result: A family client sees an entirely different question set than a corporate client. The form is shorter and more relevant for everyone.
Example 3
B2B SaaS: multiple condition AND gate
Questions:
  • #1 Company size (Number)
  • #2 Current tooling (Dropdown: Spreadsheets / Basic CRM / Enterprise CRM / Custom)
  • #3 Would you like a custom demo? (Yes/No, always shown)
  • #4 Assign to enterprise team (Hidden, shown only to enterprise leads)
Logic:
  • #4 is required when #1 greater than or equal to 500 AND #2 equals "Enterprise CRM" (ALL match)
Result: Only large companies already using enterprise tooling trigger the enterprise routing field. Both conditions must be true simultaneously.

Viewing your logic in the Logic tab

The event editor has two tabs in the Form Questions section: Questions and Logic (visible only when conditional logic is enabled). The Logic tab renders your entire form as a flow diagram.

What the diagram shows
  • Every question as a labelled node with its type and position number
  • Single-condition questions: one solid arrow from the source to the target, labelled with the action and condition
  • Multi-condition questions: each source connects with a dashed arrow to a central diamond gate node labelled ANY (OR) or ALL (AND), then one solid arrow from the gate to the target
  • Colour-coded by action (blue = Show, grey = Hide, green = Require, red = Block, orange = Redirect), applied to both the arrows and the gate node
  • A colour legend in the toolbar at the top of the diagram
Navigating the diagram
  • Scroll to zoom (mouse wheel or trackpad)
  • Pinch to zoom (two fingers on trackpad)
  • Drag to pan around the canvas
  • +/− buttons and a percentage counter for precise zoom
  • Full-screen button opens the diagram to fill the entire browser window
  • Press Esc to exit full screen
Downloading the diagram
A download icon button sits in the toolbar next to the fullscreen button (in both the inline panel and the fullscreen view). Clicking it opens a two-option menu:
  • PNG image exports a high resolution raster image (at least 2000px on the long side) with a white background. The file is named {event-name}-conditional-logic.png. Use this for sharing in documents, slide decks, or emails.
  • SVG vector exports the diagram as a scalable vector file named {event-name}-conditional-logic.svg. Use this for editing in Figma, Illustrator, or embedding in web pages at any size without quality loss.
Tip: downloading from the fullscreen view uses the larger rendered size as the base, so the PNG is even sharper.
The diagram is view-only. To edit a question's conditions, switch back to the Questions tab and click the branch icon on the question card you want to change.

Tips and things to know

Source questions must appear above the dependent question
A condition can only reference questions that appear before it in the form order. If you reorder questions, any conditions referencing questions that are now below will be flagged with an amber warning on the card. Reorder your questions first, then add conditions.
Hidden questions are never submitted
When a condition hides a question, any answer the attendee may have typed is cleared before the form is submitted. You will never receive a stale, irrelevant answer from a hidden field.
Required questions hidden by conditions are not enforced on submit
If a question is marked Required but its conditions hide it for a specific attendee, that attendee is not required to answer it. The server automatically skips required validation for hidden questions. The attendee will never see an error for a field they cannot see.
Conditions work with newly added questions only after saving
A newly added question (not yet saved to the event) will not appear in the condition source picker for other questions on the same page. Save the event first, then come back to add conditions that reference the new question.
Conditions are per-event, not per-question-library
The question library at /questions stores reusable questions. Conditions are configured in the event editor and only apply to that specific event. The same library question can have different conditions (or no conditions at all) on different events.
No depth limit on chains
Q1 can trigger Q2, Q2 can trigger Q3, Q3 can trigger Q4, and so on with no limit. The form evaluates conditions as a single linear pass from top to bottom every time an answer changes.

Was this article helpful?

Let us know so we can keep improving our documentation.