> ## Documentation Index
> Fetch the complete documentation index at: https://docs.os.default.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Switch from Cal.com to Default

> Migration guide from Cal.com to Default: how routing forms, round robin, collective, and managed event types, Workflows, embeds, and the Salesforce and HubSpot apps map to Default, the setup steps in order, and what has no direct equivalent.

Switching from Cal.com to Default means rebuilding your Cal.com event types as Default events and
your routing forms as Default workflows that start from the forms on your website. Default connects
to Salesforce or HubSpot, looks up the lead's record, picks the right rep from a queue, and shows
the booking calendar in 1 workflow.

This guide is for admins moving a sales team's scheduling. Default does not import Cal.com event
types, routing forms, workflows, or bookings, so plan to rebuild them.

<Note>
  Cal.com's app now calls event types **Links**, and uses **Events** for happenings on a fixed date
  that guests register for. This guide says event types, the name most of Cal.com's help center
  uses.
</Note>

## Cal.com and Default at a glance

| Cal.com feature | What it does in Cal.com | In Default |
| - | - | - |
| **Routing Forms** | Ask questions, then send the booker to an event type, an external URL, or a custom message. | [Forms](/forms) picks up the forms on your website. A [workflow](/workflows) with the **Form Submission** trigger branches on the answers and shows a **Display Scheduler** node or a **Redirect**. |
| Salesforce and HubSpot owner routing | Book a known attendee with the owner of their CRM record. | The **Match Record** node, then **Display Scheduler** with the record's owner as host. |
| Personal event types | Meetings that people book with you alone. | A **Quick event**. |
| **Round Robin** event types | Assign each booking to 1 available host by weights, priorities, or the host booked least recently. | A **Team event** with a [queue](/queues) as host. The queue's [routing policy](/policies) picks the rep. |
| **Collective** event types | Book 1 meeting with several team members at once. | A **Team event** with several hosts, each marked required. |
| **Managed Events** | An admin's event type, with locked fields, that team members receive. | No direct equivalent. Each member hosts their own **Quick event**, or the team shares 1 **Team event**. |
| **Workflows** | Emails and texts when a booking is created, canceled, or about to start, and after it ends. | Templates in [Messages](/scheduling-messages), sent by email or SMS, plus workflows that start from the **Meeting Status** trigger. |
| Embeds | Show a booking page inline, in a pop-up, or from a floating button on your site. | The calendar opens on your page after a form submission, over the page or inside an element you choose. See [Cal.com embeds in Default](#cal-com-embeds-in-default). |
| Salesforce and HubSpot apps | Write booked meetings to the attendee's CRM record. | Workflows that write to the CRM with **Create Record**, **Update Record**, **Create Activity**, and **Create Engagement**. |
| Webhooks and API | Send booking events to other systems, and book through the Cal.com API. | The **Meeting Status** trigger with a **Send to Webhook** node, and the [Default API](/api/route-and-book). |

## Cal.com Routing Forms in Default

A Cal.com routing form asks questions and sends each booker to the right event type. In Default,
the questions stay on a form on your website, and a workflow does the routing.

| Cal.com routing | Default |
| - | - |
| Routing form questions | The fields of your existing website form. **Catalog forms** adds the form, and you map each field to a **Person** or **Company** field. See [Your forms](/forms/your-forms). For questions that only exist in Cal.com, create the form in Default and put it on your site. See [Create a form in Default](/forms/your-forms#create-a-form-in-default). |
| **Headless Routing**, which routes the answers from your own form | The Pixel, installed once for each site. It captures HTML, HubSpot, and Marketo form submissions itself. For a Pardot form or a custom form, send its submissions with the Forms SDK. See [Set up the Pixel and Forms SDK](/pixel-sdk-setup) and [Pardot forms](/forms/pardot). |
| Routes that check the answers | A **Multi-Branch** node, or a [Rules of Engagement](/rules-of-engagement) ruleset that picks a queue from form, CRM, and enrichment data. |
| **Event Redirect** | **Display Scheduler** with that event. See [Routing and scheduling nodes](/workflows/steps-routing-scheduling#display-scheduler). |
| **External Redirect** and **Custom Page Message** | A [**Redirect**](/workflows/steps-actions#redirect) node to a page on your site. |
| Fallback when no route matches | The **Else** branch of **Multi-Branch** or of **Rules of Engagement**. |
| Routing with attributes on team members, such as `Country` or `Language` | 1 queue for each group of reps, for example by region, and a **Multi-Branch** node or a Rules of Engagement ruleset that sends each lead to the right queue. |
| Salesforce ownership routing: the lead, contact, or account owner | **Match Record** on the Salesforce object. On **Match**, **Display Scheduler** uses the record's owner as host. |
| Routing form answers passed to booking questions | No second form. When a workflow shows the calendar, Default already has the visitor's email from the form. |
| Routing trace | Workflow [run logs](/workflows/run-logs), and **Routing** → **Assignments**. |

Default can also enrich the lead before it routes. An **Enrich Data** node right after the trigger
fills in company and person data from a waterfall, and later nodes can branch on it. See
[Enrichment nodes](/workflows/steps-enrichment).

## Cal.com event types and round robin in Default

| Cal.com | Default |
| - | - |
| Personal event type | **Quick event**, hosted by 1 member. Any member can create a **Quick event**. |
| **Round Robin** event type | **Team event** with a queue as host. See [Round robin and group meetings](/scheduling/round-robin-and-group-meetings). |
| Round robin weights | **Enable weighted distribution** on the policy, then each member's **Weight**. |
| Round robin priority | Default has no priorities. The policy's distribution rule picks the member: **Take turns equally**, **Most available calendar time**, or **Least recent assignment**. |
| The host booked least recently | The **Least recent assignment** rule, or the **Recency** tiebreaker. |
| **Round-Robin Groups**: 1 host from each group | A **Team event** with 1 queue for each group, each marked required. Each queue adds the 1 member it picks. |
| **Fixed Hosts** on a round robin event type | A **Team event** with a queue and a member as hosts. |
| **Collective** event type | **Team event** with several hosts marked required, so a time appears only when all of them are free. |
| **Managed Events** | No direct equivalent. Each member creates their own **Quick event**. **Duplicate** in the events list copies an event. |
| Teams | A [queue](/queues) groups the reps who share meetings. You invite members in **Settings** → **Users**. |
| **Offer seats** | No equivalent. Default books 1 meeting for each booking. The person who books can add up to 10 guests with **Invite guests**. |
| Booking questions | The event's **Booking Form Questions**. Select **Add Question**, choose a person or company field, and turn on **Required** to make it mandatory. See [Events](/events#booking-form-questions). |
| Email rules on the booking form | **Require work email** on the Email question rejects free and personal addresses. |
| Guests on a booking | The booking page's **Invite guests** field, for up to 10 guests. |
| Links to your event types | **Permanent** and **Expiring** booking links from the event's **Booking links** drawer, plus 1 shorthand link for each host. |
| **Private Links** that expire on a date | **Expiring** booking links, which stop working on their expiration date. |
| **Reassign** a round robin booking | **Reassign** in [Meetings](/meetings), which moves a meeting to a new host or queue. |
| **Mark as No Show** | **Mark as no-show** in [Meetings](/meetings). |

## Cal.com availability, limits, and buffers in Default

| Cal.com | Default |
| - | - |
| Availability schedules | Work schedules in [Work Hours](/settings/availability/working-hours). A member can have several, and Default uses the 1 marked **Primary** for open times. |
| A different schedule for 1 event type | **Set custom hours** on the event, which replaces host working hours for that event. |
| **Date overrides** | No equivalent. To block time, add an [Out of Office](/settings/availability/ooo) block. |
| **Out of office** | Out of Office blocks and **Vacation mode**. Queues skip members who are out of office while the policy's **Exclude members currently out of office** is on. |
| **Forward bookings** while out of office | In a workflow, **Fallback Host (Optional)** on **Display Scheduler** offers a backup host when the event's hosts have no available times. |
| Before and after event buffers | **Pre-meeting buffer** and **Post-meeting buffer** on the event. Each member's defaults are in [My Calendar](/settings/availability). |
| Minimum notice | **Notice Period** on the event, or **Use host default**. |
| Time-slot intervals | **Start time increments**: 5, 15, 30, or 60 minutes. |
| Limit future bookings | **Invitees can schedule...** with **Days into the future**, **Date range**, or **Indefinitely**. |
| Booking frequency and total booking duration limits | No equivalent. Default has no cap on how many meetings an event or a member takes. |
| Multiple durations on 1 event type | Each event has 1 **Meeting duration**. Create 1 event for each length. |

## Cal.com Workflows and CRM apps in Default

| Cal.com | Default |
| - | - |
| **Workflows**: **Before the event starts** | Reminder templates in [Messages](/scheduling-messages) that send before the meeting, assigned to each event's **Reminders**. |
| **Workflows**: **After the event ends** | Reminder templates that send after the meeting. |
| **Workflows**: **When a new event is booked**, **When the event is canceled**, **When event is rescheduled**, and **When booking no-show is updated** | Notification templates for **On booking**, **On cancel**, **On reschedule**, and **On no-show**. |
| Emails and texts to the host or the attendees | Each template goes to the **Guest** or the **Host**, by email, SMS, or both. Default sends them itself. |
| **Workflows**: **When the routing form is submitted and no booking is created** | The **Not booked** branch of **Display Scheduler**, where you can alert the owner or add the lead to a sequence. See [Leads who didn't book](/scheduling/follow-up-unbooked-leads). |
| Salesforce app: an event record under the lead or contact on booking | A workflow with the **Meeting Status** trigger set to **Booked**, **Match Record**, then **Create Activity** with **Type** set to **Event**. In **Fields**, set the Event's `WhoId` to the matched record's ID, so the Event appears under that Lead or Contact. |
| Salesforce app: event dates updated on reschedule, and the event removed on cancel | A **Meeting Status** workflow set to **Rescheduled** or **Canceled**. **Match Activity** finds the Event, and **Update Activity** changes its fields. Default does not delete Salesforce activities. |
| Salesforce app: **Change record owner on booking** | **Update Record** in the **Booked** workflow, with the owner field set to the meeting's primary host. |
| HubSpot app: a meeting record on the attendee's contact | **Match Record** on the Contact, **Create Record** on **No Match**, then **Create Engagement** with **Engagement type** set to **Meeting**. Set **Associated record type** to **Contact** and **Associated record** to the matched or new Contact's ID, so the meeting appears on the contact. |
| HubSpot app: **Set booking organizer as contact owner** | **Update Record** on the Contact, with the owner set to the meeting's primary host. |
| **If attendee exists in Salesforce, book directly with the owner**, and the same HubSpot option | A workflow with **Match Record**, then **Display Scheduler** with the record's owner as host. See [Salesforce routing](/lead-routing/salesforce) and [HubSpot routing](/lead-routing/hubspot). |
| Zoom, Google Meet, and Microsoft Teams | The event's **Location**. **Zoom** and **Zoom Personal** work after an admin connects Zoom once for the workspace. **Calendar Default** adds Google Meet or Microsoft Teams links from each member's calendar connection. |
| In person location | **In Person**. |
| Calendars | Google Calendar and Outlook Calendar, connected by each member. |

Default writes to your CRM only from the workflow nodes you add. See
[Salesforce](/settings/integrations/salesforce) and [HubSpot](/settings/integrations/hubspot).

## Cal.com embeds, webhooks, and API in Default

| Cal.com | Default |
| - | - |
| **Inline** embed | After a form submission, the calendar opens inside an element on your page. Set `autoDisplayScheduler: { target: "#meeting-section" }` in the Pixel install snippet. |
| **Pop-up via element click** | After a form submission, the calendar opens as a full-screen overlay on your page. This is the default. |
| **Floating button pop-up** | No equivalent. Link a button to the event's booking link, which opens the booking page. |
| Embedded routing form | The form on your site. A form you create in Default has its code under **Embed this form** on the **Install** tab. |
| Embed events such as `bookingSuccessfulV2` | `scheduler.onMeetingBooked()` and the other scheduler events. See [Pixel SDK reference](/pixel-sdk-reference#scheduler). |
| Webhooks: **Booking Created**, **Booking Cancelled**, **Booking Rescheduled**, and **Booking No-Show Updated** | A workflow with the **Meeting Status** trigger set to **Booked**, **Canceled**, **Rescheduled**, or **No show**, then [**Send to Webhook**](/workflows/steps-actions#send-to-webhook). |
| Webhooks: **Form Submitted** | A workflow with the **Form Submission** trigger, then **Send to Webhook**. |
| Cal.com API v2 | The Default public API lists bookable events, returns open slots, books, reschedules, and cancels meetings, and runs workflows. Create a key in **Settings** → **API Keys**. See [Route and book through the API](/api/route-and-book). |

### Cal.com embeds in Default

A Default calendar opens on your page as the step after a form. When a visitor submits a form that a
**Display Scheduler** workflow uses, the calendar opens over the page. To show it inside an element
instead, set `autoDisplayScheduler: { target: "#meeting-section" }` in the Pixel install snippet.
See [Book meetings from forms](/forms/scheduler) and
[The scheduler experience](/pixel-sdk-integration-guide#the-scheduler-experience).

The calendar on your page books the visitor that the workflow already knows from the form, so
Default has no embed for a booking link on its own. Where a Cal.com embed opened a booking page from
a button, use 1 of these:

* Link the button to the event's booking link, from the **Booking links** drawer. It opens Default's
  booking page, which asks for the visitor's email.
* Put a short form in front of the calendar, for example a form you create in Default with an email
  field, and route it with a **Form Submission** workflow that ends in **Display Scheduler**.

## Rebuild a Cal.com routing form as a Default workflow

This example replaces a Cal.com routing form behind a `Request a demo` form. Known people book with
their record owner. New people with more than 500 employees book the `Enterprise demo` event, and
everyone else books the `Demo` event. Both events are **Team events** hosted by queues.

<Steps>
  <Step title="Start from the form">
    In **Workflows**, create a workflow and add the **Form Submission** trigger. Set
    **Connected Form** to `Request a demo`.
  </Step>

  <Step title="Look up the record">
    Add **Match Record**. Set **CRM** to Salesforce or HubSpot, set **Record** to the object your team
    owns people on, and match on the submitted email.
  </Step>

  <Step title="Book known people with their owner">
    On the **Match** branch, add **Display Scheduler** with the `Demo` event. Turn off
    **Use event hosts** and set the host to the matched record's owner.
  </Step>

  <Step title="Branch new people on company size">
    On the **No Match** branch, add **Multi-Branch**. Add a branch named `Enterprise` where the
    company size field is greater than `500`. Leave everyone else on **Else**.
  </Step>

  <Step title="Show the right event">
    On `Enterprise`, add **Display Scheduler** with the `Enterprise demo` event. On **Else**, add
    **Display Scheduler** with the `Demo` event. Keep **Use event hosts** on, so each event's queue
    picks the rep.
  </Step>

  <Step title="Test and publish">
    Select **Test**, then **Run Test** once for each case: a known person, a large new company, and a
    small new company. Then select **Publish**, and check that the status next to the
    [deployment switch](/workflows#the-deployment-switch) reads **Live**. A new workflow goes live
    when you first publish it. If the status reads **Paused**, turn the switch on.
  </Step>
</Steps>

<Warning>
  A workflow test performs real actions. It can book meetings, count routing assignments, and write
  to your CRM. Use test people.
</Warning>

If a Cal.com route showed a **Custom Page Message** or an **External Redirect**, add a branch for
it in **Multi-Branch** and end it with a **Redirect** node to a page on your site.

## Move from Cal.com to Default step by step

<Steps>
  <Step title="Connect your CRM and conferencing tool">
    Select **Settings** in the sidebar, then **Integrations** under **Workspace Settings**. Connect
    Salesforce or HubSpot. Salesforce needs the Default managed package installed first. See
    [Salesforce](/settings/integrations/salesforce) and [HubSpot](/settings/integrations/hubspot).
    If your team meets on Zoom, connect Zoom once for the workspace. Google Meet and Microsoft Teams
    links come from each member's own calendar connection.
  </Step>

  <Step title="Invite your team and connect calendars">
    In **Settings** → **Users**, select **Invite People**. Each member connects Google Calendar or
    Outlook Calendar, sets up a work schedule, and creates their own **Quick event** for a personal
    link. See [Member onboarding](/member-onboarding) and
    [Work Hours](/settings/availability/working-hours).
  </Step>

  <Step title="Map each rep to their CRM user">
    In **Settings** → **Users**, add each rep's Salesforce User ID or HubSpot Owner ID. Default needs
    this mapping to write CRM owners and to use a record owner as a meeting host. See
    [Users](/settings/users).
  </Step>

  <Step title="Rebuild Round Robin and Collective event types">
    In **Routing** → **Policies**, select **Create Policy**, and include **Meetings** in
    **Assignment Units**. In **Routing** → **Queues**, select **Create Queue** for each team that
    shares meetings. Then in **Scheduling** → **Event Types**, select **Create new event** and choose
    **Team event**. Add the queue as host for round robin, or several required members for a
    collective meeting. See [Policies](/policies), [Queues](/queues), and [Events](/events).
  </Step>

  <Step title="Rebuild Workflows as messages">
    In the sidebar, under **Scheduling**, select **Communications** to open the Messages library.
    Create reminder and notification templates, then assign them in each event's **Messages**
    section. See [Messages](/scheduling-messages).
  </Step>

  <Step title="Install the Pixel and add your forms">
    Open **Signals**, select **Add Domain**, and install the Pixel snippet. Then open the domain's menu,
    select **Catalog forms**, add each form you routed with Cal.com, and map its fields. For a routing
    form that only existed in Cal.com, open **Forms**, select **Create new**, then **New form**, and
    put it on your site with the code from the **Install** tab. See
    [Set up the Pixel and Forms SDK](/pixel-sdk-setup).
  </Step>

  <Step title="Rebuild each routing form as a workflow">
    Build 1 workflow for each routing form, as in
    [Rebuild a Cal.com routing form](#rebuild-a-cal-com-routing-form-as-a-default-workflow). Add a
    **Meeting Status** workflow if the Cal.com Salesforce or HubSpot app logged meetings in your CRM,
    or if you used Cal.com webhooks.
  </Step>

  <Step title="Switch over 1 form at a time">
    When a workflow passes its tests, publish it so it goes live. Then remove the Cal.com embed or
    routing from that form's pages, so visitors see 1 scheduler. Share the new booking links in place
    of your Cal.com links.
  </Step>

  <Step title="Export your Cal.com history">
    Before your Cal.com access ends, export what you need for reporting. Cal.com's **Insights** page
    has a **Download** button that saves the current view as a CSV file.
  </Step>
</Steps>

## What does not carry over from Cal.com

* **Configuration.** Default has no importer for Cal.com event types, routing forms, **Workflows**,
  or availability schedules. You rebuild them in Default.
* **Meetings already booked.** Meetings booked in Cal.com stay in Cal.com. Default's
  [Meetings](/meetings) list starts with the first meeting booked through Default.
* **Cal.com-hosted routing forms.** Default doesn't design or host forms, so questions that only
  exist in a Cal.com routing form move to a form on your website. You can create that form in
  Default: in **Forms**, select **Create new**, then **New form**, and put it on your site with the
  code from the **Install** tab. See
  [Create a form in Default](/forms/your-forms#create-a-form-in-default).
* **Seats.** Default has no event type that lets several invitees book the same time slot
  separately. The person who books can add up to 10 guests to their meeting. Webinar events are
  coming soon.
* **Managed Events.** Default has no event type that an admin pushes to members with locked fields.
* **Date overrides and booking limits.** Default can't set different hours for a single date, and it
  has no booking frequency or total booking duration limits.
* **Confirmation, recurring, and paid bookings.** Default has no step where the host approves a
  booking, no recurring event type, and no payment collection at booking.
* **Cal Video and other locations.** An event has 1 location: **Calendar Default** for Google Meet
  or Microsoft Teams, **Zoom**, **Zoom Personal**, or **In Person**. Cal Video, phone call
  locations, and other conferencing apps such as Webex are not supported.
* **WhatsApp, voice calls, and texts to a fixed number.** Messages go to the guest or the host by
  email or SMS.
* **Other calendars.** Default connects Google Calendar and Outlook Calendar. Apple Calendar,
  CalDav, and ICS feeds are not supported.
* **Other CRMs.** Default connects to Salesforce and HubSpot. Pipedrive, Zoho CRM, and Close are not
  supported. Attio is coming soon.
* **Owner lookup from a link.** A Default booking link books with the link's hosts. It does not look
  up a CRM owner from an `email` URL parameter, the way Cal.com's owner options do on a round robin
  link. To book with the owner, route the lead through a workflow.
* **Meeting Started and Meeting Ended webhooks.** Default doesn't mark meetings as held, so no
  workflow starts when a meeting starts or ends.
* **Event types through the API.** The Default API books and changes meetings and runs workflows.
  It does not create or edit events, and it does not list all meetings.
* **Booking page embeds without a form.** Default's calendar opens on your page after a form. It
  has no inline, pop-up, or floating button embed for a booking link on its own.
* **Existing Cal.com links and embeds.** Links and embeds you shared keep pointing at Cal.com.
  Replace links with Default booking links, and embeds with a form that opens the Default calendar.

Related: [Default vs Cal.com](https://www.default.com/comparison/calcom)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.