# Cal.com scheduling

Let respondents choose and book a Cal.com appointment without leaving your form. Add a Schedule appointment question and get the booking with each submission.

This works on every plan, including Free. [Compare plans](https://formstep.io/pricing/)

## What you get

Schedule appointment is a question built into the form, so it uses your form’s theme and language. Cal.com supplies the event types, availability, calendar invitations, and meeting links.

- Show or hide scheduling based on earlier answers.
- Fill in the attendee name and email from earlier questions.
- Show free times in the respondent’s time zone.
- Get the booking details with the submission.

## Connect Cal.com

1. **Insert Schedule appointment**

   Type / in the editor, search for "Schedule appointment", and insert the question where the booking should appear.

2. **Connect Cal.com**

   Click **Connect Cal.com** in the question. Allow access in the Cal.com window, then return to the editor.

3. **Choose account and event type**

   Pick a connected Cal.com account, then select the event type respondents should book.

4. **Map attendee fields**

   Optionally set **Name from** and **Email from**. They list Text and Email questions above the scheduler, plus hidden fields. Leave them on "Do not autofill" to have respondents type both.

5. **Preview and publish**

   Test the booking in Preview. You cannot publish while the setup is incomplete.

Cal.com accounts belong to the workspace. The workspace owner can also connect them under **Workspace › Integrations**, in **Payments & scheduling**. Every member can then pick one on any form.

## Configure the question

| Setting | What it controls |
| - | - |
| Account | Which connected Cal.com account owns the event type. |
| Event type | The Cal.com event type, duration, location, and availability respondents book. |
| Name from | Optional earlier Text question or hidden field used to fill in the attendee name. |
| Email from | Optional earlier Email question or hidden field used to fill in the attendee email. |

Without these, respondents type their name and email in the question.

## Respondent experience

1. The respondent picks a date, then a free time. Times show in the browser’s time zone. The respondent can pick another in the **Time zone** list, and the booking uses it.

2. They confirm the attendee name and email, then click **Book**.

3. Cal.com creates the booking and sends its normal confirmation and calendar invitation.

4. Formstep shows the booking as **What**, **When**, **Who**, and **Where**, with the meeting link.

5. Before they submit, they can click **Cancel booking** and choose another time.

> **Booking happens before form submission**
>
> Cal.com confirms the appointment when the respondent clicks **Book**. It joins the submission when they submit the form. Until then, the appointment stays on the host’s calendar, even if the respondent leaves. Formstep cancels it in these cases:
>
> - On a public link, the form is still not submitted 24 hours after booking.
> - On a request, the request is canceled or expires.
> - You delete the submission or the form.

If someone else takes the time first, the respondent sees the times that are still free. If a booking fails halfway, Formstep cancels the calendar entry it created. A second device cannot book the same question twice.

## Use scheduling with logic

Logic can show or hide Schedule appointment like any other question. For example, show booking only to leads with budget and authority.

- A visible Schedule appointment question needs a confirmed booking before submission. A hidden one does not block submission.

- After a booking, the answers that decide whether the question shows are locked. To change one, the respondent cancels the booking first.

- If the question is hidden at submission anyway, for example because a branching rule skipped its page, Formstep cancels the booking on Cal.com.

## Publish checks

You cannot publish while a Schedule appointment question is missing its account or event type. The error points to the question, and in the editor the question shows a **Not connected**, **Event missing** or **Configured** badge.

A form can book only event types that need just a name, an email and a time. Event types that need confirmation, recur, have seats, cost money or have required booking questions show as **Not bookable from a form**, and you cannot select them.

## After submission

The booking shows under the question in the submission, and in notification emails, PDFs, exports and integrations. Automations such as Zapier, Make and n8n get it as data too. Developers: see [Bookings and payments](https://formstep.io/docs/developers/webhooks-reference/#bookings-and-payments).

The booking stays up to date after submission. When the respondent or host reschedules or cancels in Cal.com, or the host rejects it or marks a no-show, its text starts with **Rescheduled**, **Cancelled**, **Rejected** or **No-show**. Integrations are not sent again. Deleting a submission or the form cancels its appointments on Cal.com.

Respondents cannot [edit their answers after submitting](https://formstep.io/docs/submissions-analytics/edit-after-submit/) a form with a Schedule appointment question, so the booking always matches the answers.

## Connection health

Formstep keeps its Cal.com access fresh on its own and retries through short Cal.com outages, so neither needs anything from you.

If access is revoked, the connection expires:

- The question shows a **Disconnected** badge, and respondents cannot book.

- The person who connected the account gets an email that lists each published form that books through it.

- Reconnect Cal.com under **Workspace › Integrations**. Then select the account again and confirm the event type on each of those questions.

When you disconnect a Cal.com account under **Workspace › Integrations**, Formstep lists the published forms that book through it. Those forms stop taking bookings, and their owner gets an email. Reconnect the same Cal.com account to restore them. You do not need to select anything again.

## Next steps

[Conditional logic](https://formstep.io/docs/building-forms/conditional-logic/) — Reveal booking only for qualifying answers

[Question types](https://formstep.io/docs/building-forms/field-types/) — See every question available in Formstep

[Health and monitoring](https://formstep.io/docs/integrations/health-monitoring/) — Reconnect an account that expired

[Submission inbox](https://formstep.io/docs/submissions-analytics/submission-inbox/) — View booking details with submissions
