Overview
<a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com is the open-source scheduling stack used by individuals and teams to take bookings on their own terms. The <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com integration brings that scheduling layer directly into the Workflow Builder so customer-facing automations can react to booking events and the other way around. Booking lifecycle triggers and four booking actions cover the most common <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com use cases without webhook plumbing or third-party glue.
This means a new booking on a discovery call event type becomes a personalized welcome sequence in the same workflow that ran the form, with no manual hand-off and no relay tax.
About the Integration
The integration ships with two halves:
- Triggers (<a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com → Workflows): Webhook-backed booking lifecycle events — Booking Created, Booking Rescheduled, Booking Cancelled, Meeting Ended, and Out of Office Created / Updated.
- Actions (Workflows → <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com): Four actions — Create Booking, Cancel Booking, Reschedule Booking, and Find Booking — covering the most common booking operations.
All triggers and actions are flagged as premium — premium action credits apply at the standard automation rate.
Key Benefits of <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com in Workflows
- Full booking lifecycle coverage — created, rescheduled, cancelled, ended and (where supported) recording ready, all from one connected source of truth.
- Webhook-speed triggers — typically fire within 1–3 seconds of the booking event, with no polling lag.
- Programmatic scheduling — Create Booking lets workflows book on behalf of attendees without round-tripping a booking link.
- Mapping reference — pick a real recent booking as the schema reference so every downstream step maps cleanly against typed fields.
- Rich payload — each trigger delivers the full booking object — bookerUrl, title, startTime, endTime, additionalNotes, type, description, eventTypeId, hideCalendarNotes, attendees and organizer — so any field can be used downstream.
How to Set Up <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com
Before any <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com trigger or action can run, the integration has to be connected. The connection allows your workflows to securely receive <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com webhooks and call the <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com API on your behalf.
Connect via the Workflow Builder (recommended)
- Open Automation → Workflows and pick (or create) a workflow.
- Add a <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com trigger or action — search for <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com in the Apps tab.
- Select any <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com trigger or action.
- On the action card, click Connect Now.
- Paste your <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com API key (or sign in via OAuth, where available); authorize the workspace and event types you want to expose.
- Click Save to complete the connection.
Connect via Settings (alternative path)
- Go to Settings → Integrations.
- Locate <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com in the integrations list and click Connect.
- Authenticate and authorize.

List of Triggers
All triggers are Instant — they are powered by <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com webhooks and fire within seconds of the underlying event.
- Booking Created – Fires when a new booking is created in <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com. Returns the full booking payload.
- Booking Rescheduled – Fires when an existing booking is moved to a new start time. Returns new and previous times.
- Booking Cancelled – Fires when a booking is cancelled by attendee, organizer, or system. Returns cancellation reason if supplied.
- Meeting Ended – Fires automatically at the booking’s scheduled endTime. Re-armed automatically on reschedule.
- OOO Created / Updated – Fires when out of office entry is created / updated

List of Actions
- Create Booking – Creates a new booking on a specific event type. Required: Event Type, Attendee Name, Attendee Email, Start Time.
- Cancel Booking – Cancels an existing booking by ID, with optional cancellation reason.
- Reschedule Booking – Moves an existing booking to a new start time. <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com handles invite refresh and notifications.
- Find Booking – Looks up a booking by ID, attendee email, or filter; returns the matching booking(s).

Example: Setting Up a Trigger (Booking Created)
This walkthrough wires up a workflow that fires every time a new booking is made on <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com — and uses the booking payload as the source of all downstream actions.
Step 1: Add the trigger
- Open the workflow and click Add Trigger.
- Switch to the Apps tab and search for <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com.
- Select Booking Created from the <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com trigger list.
Step 2: Configure the trigger
- Workflow Trigger Name — Give the trigger a meaningful label, such as ‘New Discovery Call Booking’.
- Add filters (optional) — Constrain the trigger by event type, host, location, or any other field on the booking payload, so unrelated bookings don’t enroll.
- Webhook Status — The trigger panel shows whether the underlying <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com webhook is active. If it goes inactive, reconnect the integration in <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com settings.
Step 3: Test the trigger
- Click Find New Records inside the Test Your Trigger panel.
- The system fetches the most recent matching bookings from <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com.
- In the Records — Select Mapping Reference dropdown, pick one of the returned records — for example: Active: (2026-05-01 10:36:24) Reference 69f434d0e7358049c8b16ded. This locks the payload schema so every downstream step can map fields cleanly.
- Review the Trigger Data Response panel to confirm the payload contains the fields you plan to use — bookerUrl, title, startTime, endTime, additionalNotes, type, description, eventTypeId, hideCalendarNotes, attendees and organizer.
- Click Save Trigger to finish.

Example: Setting Up an Action (Create Booking)
This walkthrough programmatically books a meeting on a host’s calendar from inside a workflow — for instance, after a high-intent form submission.
Step 1: Add the action
- Inside the workflow, click Add to insert a new step.
- Open the Apps tab and select <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com.
- Choose Create Booking from the action list.
Step 2: Connect (first time only)
- If the integration is not yet connected, click Connect Now on the action card.
- Paste your <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com API key and authorize the workspace.
Step 3: Configure the action
- Action Name — Give the step a meaningful label such as ‘Book Discovery Call’.
- Event Type (required) — Pick the <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com event type to book. The dropdown lists every event type the integration is authorized to access.
- Attendee Name (required) — Use inline workflow variables, e.g. {{contact.fullname}}.
- Attendee Email (required) — Use inline workflow variables, e.g. {{<a href="http://contact.email" rel="ugc nofollow noopener noreferrer" target="blank”>contact.email}}.
- Attendee Timezone — IANA format, e.g. America/NewYork or Europe/London. Defaults to the sub-account timezone if not provided.
- Start Time (required) — Use the suggested format (e.g. 12-21-2026 08:30 AM) or ISO-8601. The interpreted timezone is the Attendee Timezone (or sub-account default if unset).
Step 4: Save and use the output
- Click Save action. The new booking’s ID and metadata are exposed as workflow output variables. Chain a Send Email or Send SMS step to confirm the booking to the attendee, or use the booking ID later in a Cancel Booking or Reschedule Booking step if downstream conditions change.

How to Test the Trigger and Action
Always test before publishing. Testing locks the payload schema and gives downstream steps a real record to map against.
Test the trigger
- Inside the trigger panel, click Find New Records.
- Select a recent booking from the dropdown to use as the mapping reference.
- Confirm the Trigger Data Response shows the fields you plan to use downstream.
- Confirm the Webhook Status indicator reads ‘active’.
Test the action
- Inside the action panel, click Test Action.
- The action runs against the live <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com workspace using sample values.
- Verify the booking appears in <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com (and on the host’s calendar) at the expected time and timezone.
- If the result is not right, re-check the Start Time format and the Attendee Timezone, then test again. Once happy, click Save action, then run a full Test Workflow before publishing.
Common Use Cases
Use Case 1: New Booking → CRM Contact + Welcome Sequence
Goal: Turn every new booking into a fully-onboarded contact with the right context attached.
Workflow Setup:
- Trigger: Booking Created
- Action: Create/Update Contact (use attendee email as the merge key)
- Action: Tag the contact with the booking’s event type
- Action: Send Welcome Email with prep materials sized to the meeting type
- Action: Add the contact to a follow-up campaign that ends 24 hours before the meeting
Example: A prospect books a 30-minute discovery call. The workflow creates a contact, tags them as ‘discovery’, sends a personalized prep email, and ensures a reminder fires the day before the call.
Use Case 2: No-Show Recovery
Goal: Auto-recover no-shows without requiring a CSM to track them down.
Workflow Setup:
- Trigger: Meeting Ended
- Action: Find Booking (refresh state to capture no-show flag)
- Conditional: only proceed if the attendee was a no-show
- Action: Send a personalized rescheduling link with one-click rebook
- Action: Tag the contact for follow-up if no rebook within 48 hours
Example: Whenever a meeting ends, the workflow checks the booking state. If the attendee was a no-show, they get a softening message with a one-click rebook link — instead of falling through the cracks.
Use Case 3: Cancellation Retention
Goal: Treat a cancellation as the start of a save flow, not a dead end.
Workflow Setup:
Trigger: Booking Cancelled
- Conditional: branch on cancellation reason (schedule conflict vs. lost interest)
- Action: Send retention message with rebook link (for schedule conflict)
- Action: Hand off to CSM with full context (for lost interest)
Example: A prospect cancels their demo because of a calendar conflict. The workflow sends a friendly reschedule message with two pre-filled time options — and tags the contact for CSM follow-up if there’s no rebook within a week.
Use Case 4: Programmatic Scheduling from a Form
Goal: Eliminate the email-back-with-a-booking-link round-trip for high-intent leads.
Workflow Setup:
- Trigger: Form Submission (with preferred time captured)
- Action: Create Booking on the assigned host’s event type
- Action: Send confirmation message
Example: A lead requests a same-day call via a high-intent form. The workflow books the meeting on the assigned AE’s calendar at the requested slot and confirms it instantly — no manual scheduling, no missed lead.
Use Case 5: Recording Distribution
Goal: Get Cal Video recordings to the right place automatically.
Workflow Setup:
Trigger: Recording Ready (where supported)
- Action: AI summarize the recording into a customer-friendly note
- Action: Send the recording URL and the summary to the attendee
- Action: Log a CRM activity with the recording link attached
Example: Right after a recording finishes processing, the attendee receives a thank-you email with the recording link and an AI-generated recap — and the CRM activity log captures the same context for the rep.
Best Practices
- Always supply Attendee Timezone explicitly when booking on behalf of leads from different regions — relying on the sub-account default is fine for single-region operators only.
- Use the suggested Start Time format (e.g. 12-21-2026 08:30 AM) or ISO-8601 strings. Ambiguous formats can drift the booked time by hours.
- Pair Find Booking with Cancel Booking or Reschedule Booking — confirm the booking exists and is in the expected state before mutating it.
- Use Meeting Ended (not Booking Created) as the entry point for post-meeting follow-up flows — <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com schedules it automatically and re-arms it on reschedule.
- Watch the Webhook Status indicator on the trigger panel — if it goes inactive, the underlying webhook needs to be reconnected in <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com settings.
- Test the trigger first to lock the mapping reference, then build downstream actions against the captured sample payload. The Records — Select Mapping Reference field is the foundation of clean field mapping.
Frequently Asked Questions
Q: What is <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com?
<a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com is the open-source scheduling stack used by individuals and teams to take bookings on their own terms. It supports cloud-hosted and self-hosted deployments and exposes a rich webhook surface for automation.
Q: Are <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com actions premium workflow actions?
Yes. All four actions are flagged as premium and consume premium action credits at the standard automation rate.
Q: How fast do triggers fire?
<a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com sends webhooks typically within 1–3 seconds of the booking event. Workflows enroll as soon as the webhook arrives.
Q: What does the trigger payload include?
Each booking event delivers the full booking object — bookerUrl, title, startTime, endTime, additionalNotes, type, description, eventTypeId, hideCalendarNotes, attendees and organizer. Use Find New Records and Records — Select Mapping Reference to lock the schema.
Q: What does the Webhook Status indicator mean?
It reflects the live status of the underlying <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com webhook. ‘Active’ means events are flowing; if it goes inactive, the webhook needs reconnection in your <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com settings.
Q: How do I supply a timezone in Create Booking?
The Attendee Timezone field accepts IANA format strings such as America/NewYork or Europe/London. If left empty, <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com falls back to the sub-account timezone.
Q: What format should I use for Start Time?
A standard date-time value. The suggested format is ‘12-21-2026 08:30 AM’; ISO-8601 strings (e.g. 2026-12-21T08:30:00) are also accepted. The interpreted timezone is the Attendee Timezone (or sub-account default if unset).
Q: Does Cancel Booking notify the attendee?
Yes. <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com sends its standard cancellation email, including the cancellation reason if supplied.
Q: Will Reschedule Booking re-issue calendar invites?
Yes. <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com cancels the original calendar event and sends an updated invite for the new time. Confirmation emails fire automatically.
Q: What happens to Meeting Ended when a booking is rescheduled?
<a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com cancels the pending Meeting Ended webhook for the original time and re-schedules it for the new time. The trigger fires once, at the booking’s actual end.
Q: Will the workflow fire twice if a booking is rescheduled?
No. Booking Rescheduled is its own trigger; Booking Created does not re-fire on reschedule. Use the right trigger for the lifecycle event you care about.
Q: Does the integration work on self-hosted <a href="http://Cal.com" rel="ugc nofollow noopener noreferrer" target="blank”>Cal.com?
Self-hosted Cal.com supports the same webhook surface, so triggers work the same way once the webhook URL is configured. Some self-hosted setups have known issues with Meeting Started / Meeting Ended — verify with a real test booking before production use.
Q: Can I use workflow variables in action fields?
Yes. Inline variables work in Attendee Name, Attendee Email, Start Time and any other field exposed by the action.
Q: What if the booking I am trying to cancel no longer exists?
Cancel Booking surfaces the error to the workflow execution log, and the workflow continues based on its branching. Use Find Booking as a guard step if downstream logic depends on the cancellation succeeding.
Q: Are these actions production-ready?
All triggers and actions are released as Beta. They are safe to use in live workflows; expect incremental UX changes — additional filters, additional fields — as the integration moves out of Beta.
