Skip to main content

What are workflows?

Workflows send messages and run actions automatically when something happens with a booking, for example when a meeting is booked, cancelled or about to start. You build each workflow on a canvas, from the top down:
  • Trigger: when the workflow starts (for example, 24 hours before the event).
  • Steps: what happens next. A step can send an email, SMS or WhatsApp message, call the attendee with Cal.ai, wait, or check a condition.
Steps run in order from the trigger downwards. You can add as many as you need.

Example use cases

  • Email and text the attendee 24 hours before the meeting, then again 1 hour before
  • Send a follow-up email with a feedback link 1 hour after the meeting ends
  • Notify a teammate when a new meeting is booked
  • Email the host when an attendee cancels
  • Send a different message depending on the attendee, using Paths

Create a workflow

1

Go to Workflows

Click Workflows in the sidebar, or go to app.cal.com/workflows.
The Workflows page in Cal.com
2

Click Create

If you belong to a team, choose whether the workflow belongs to you or to one of your teams. Then pick Start from scratch, or AI Phone template to start with a Cal.ai phone call.
The New workflow dialog with Start from scratch and AI Phone template
3

Name the workflow

Click the pencil icon next to Untitled at the top of the canvas and type a name.
4

Set up the trigger

Click the trigger at the top of the canvas. Choose when the workflow starts and, for timed triggers, how long before or after the event. Then choose which links it runs on. Turn on Apply to all to include every link, including ones you create later. Click Done.
Trigger settings with Before event starts, 24 hours and one team selected
5

Add and edit steps

New workflows start with an email step. Click any step to edit it, or click + between two steps to add a new one there. See Steps you can add.
6

Click Save

The workflow only runs once it’s saved. If you leave the canvas with unsaved changes, Cal.com asks before discarding them.

Triggers

The list of available workflow triggers
  • Before event starts
  • When event is canceled
  • When new event is booked
  • After event ends
  • When event is rescheduled
  • When routing form is submitted
  • When routing form is submitted and no booking is created
  • When booking is rejected (for links that require confirmation)
  • When booking is requested (for links that require confirmation)
  • When booking payment is initiated
  • When booking payment is successful
  • When booking no-show is updated
Before event starts and After event ends also ask how many minutes, hours or days before or after. The two routing form triggers run on routing forms instead of links, so you choose which forms the workflow is active on.

Steps you can add

Click + on the canvas to open the step menu.
The step menu with Send email, Send SMS / WhatsApp, Paths, Filter and Delay

Send email

Email the attendees, the host, or a specific email address. You can pick a message template (for example Reminder or Thank you), set the sender name, and write your own subject and body with variables. Other options:
Email step settings with action, sender name, template, subject and body
Reminder emails always include links for the attendee to reschedule or cancel the booking.

Send SMS / WhatsApp

Text the attendee or a specific phone number, by SMS or WhatsApp. Messages to a specific number need that number to be verified first. SMS messages use credits.

Cal.ai phone call

Cal.ai calls the attendee with an AI voice agent. Start from the AI Phone template, or add the step from the step menu. Cal.ai phone calls use credits. See Cal.ai for setting up the agent.
Cal.ai isn’t available on organization workflows, or on workflows that apply to all links.

Delay

Waits before running the steps below it. Set Wait for to a number of minutes, hours or days. The step’s title shows the wait, for example Wait 1 hour.
A Delay step set to wait 1 hour between the trigger and an email step
For example, with the trigger When new event is booked, a Delay of 2 days and an email step, the email goes out 2 days after the booking is made. If the booking is rescheduled while a delay is running, the wait carries over and the steps after it still run.

Filter

Only continues when its conditions match. If they don’t match, none of the steps below the filter run. For example, filter on the attendee’s email or location so the next steps only run for some attendees.

Paths

Splits the workflow into branches. Each path has its own conditions and its own steps, and runs when its conditions match. Use paths when different attendees should get different messages. Paths are added at the end of a branch, so the step menu only shows Paths when you click the + below the last step.

Dynamic text variables

Click Add variable above a message to insert one. Variables are replaced with the booking’s details when the message is sent. You can also format dates and times, for example {EVENT_DATE_ddd, MMM D, YYYY h:mma}.

Booking question variables

You can put a booker’s answer to any booking question into a message. Each question becomes a variable named after its identifier.
1

Find the question's identifier

Open the link, go to Booking form, and click Edit next to the question. The Identifier field shows the identifier, for example Company-size for a question labeled “Company size”.
2

Make sure the workflow runs on that link

Booking questions only show up in the variable list for the links the workflow runs on. Choose them in the trigger settings.
3

Insert the variable

Click Add variable above the email subject, email body or text message. Pick the question under Booking question response variables, or type part of its name in the search box to find it. When the message is sent, the variable is replaced with the booker’s answer.
The Add variable menu with a Company size question under Booking question response variables

How the identifier becomes a variable

You can also type the variable yourself. Take the question’s identifier and:
  1. Change every letter to uppercase.
  2. Replace each dash (-) with an underscore (_).
  3. Wrap it in curly brackets.
The version with dashes kept, such as {COMPANY-SIZE}, also works. So does the version with no separators at all, such as {COMPANYSIZE}, which older templates used. If a question allows more than one answer, for example checkboxes or a multi-select, the answers are listed with commas between them.
  • The variable has to be in uppercase. Lowercase versions such as {company_size} aren’t replaced.
  • If a variable doesn’t match any question on the link, it’s sent exactly as typed, curly brackets included. Send yourself a test booking to check it.
  • If you change a question’s identifier, update every workflow that uses its old variable. When you edit a question’s label, its identifier changes with it unless you’ve set the identifier yourself.
  • The name and email questions aren’t listed. Use {ATTENDEE} and {ATTENDEE_EMAIL} instead.
  • Organization-level workflows don’t list booking questions in Add variable. Type the variable yourself instead.

Auto-translate for attendees

If you’re on an Organization plan, you can turn on auto-translation for steps that message attendees. Cal.com translates the message into the attendee’s preferred language before sending it. This works with:
  • Email to attendee steps
  • SMS to attendee steps

How to turn on auto-translate

  1. Open a workflow and click a step that sends a message to an attendee.
  2. Below the message editor, check Auto-translate for attendees.
  3. A note confirms which language your message is written in (your account’s default language). This is the language it’s translated from.
  4. Click Save.
If the attendee’s language is the same as yours, the message is sent as written.
Auto-translate is only available on Organization plans. On other plans, you’ll see an upgrade prompt instead of the checkbox.

Plan limitations

  • Free plan: you can build workflows, but email steps use the default template text and can’t be edited. SMS text can still be edited.
  • Teams, Organization and Enterprise plans: full access, including custom email content and routing form workflows.
  • Self-hosted instances: no restrictions on workflow usage.
WhatsApp messages can’t be customized on any plan at the moment. They always send a predetermined default message.