> For the complete documentation index, see [llms.txt](https://docs.dapta.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dapta.ai/dforms/connect/scheduler-and-calendly.md).

# Scheduler step & Calendly

Let respondents book a meeting without leaving your form. Connect Calendly once, add a Scheduler step, pick an event type, autofill the booking form from earlier answers and decide what happens after

A **Scheduler** step embeds one of your Calendly event types inside the form. Respondents pick a time on the spot, and the booking counts as their answer to that question. No extra link, no second page, no lost leads between "interested" and "booked".

You connect Calendly once for the whole account. After that, every form can drop in a **Scheduler** step and choose which event type it offers.

***

**Step 1:** In the left menu, open **Integrations**. On the **Connections** page, find the **Calendly** card and click **Connect**. The card asks for **Paste your Calendly token**: paste your Calendly personal access token there and click **Connect** again.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-556d8dac2690f1b81c3a64952f51bb5a2d50ffbf%2Fforms-scheduler-and-calendly-01-connections.png?alt=media" alt="The Connections page with the Calendly card connected, showing which event types forms can pick"><figcaption><p>Calendly is connected once for the account. The card then shows <strong>Connected</strong>, the account it belongs to, when it was connected, and which event types forms can pick.</p></figcaption></figure>

Once it is connected, the card reads **Connected as {your Calendly account}** and offers **Disconnect**. Connecting and disconnecting is limited to admins and owners; any member can then use the connection when building a form.

The card also says *Forms can pick the event types this account owns or hosts. To use a team event, connect an account that is one of its hosts.* That matters for team events such as a round robin: they only appear in the list when the connected account is one of their hosts. Any event can still be used by pasting its link, as Step 3 shows.

> **⚠️ Note:** Field mapping is not configured here. This page only makes the connection; the event type is picked per form, in the question itself.

***

**Step 2:** Open the form you want in the editor, click **Add question** and pick **Scheduler** from the **Content** group.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-b654f95ef34c9b7b26588f995228210678c066a9%2Fforms-scheduler-and-calendly-02-add-scheduler.png?alt=media" alt="The Add a question gallery with the Scheduler type highlighted in the Content group"><figcaption><p><strong>Scheduler</strong>: "Book a meeting on your calendar". It sits with <strong>Message</strong> and <strong>Reveal screen</strong> under <strong>Content</strong>.</p></figcaption></figure>

Type the question text straight on the canvas, exactly as with any other step, for example "Pick a time that works for you".

***

**Step 3:** In the **Question settings** pane on the right, open the **Scheduler** section and choose an **Event type**.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-0aa33cdf0848754e7d99fd6930dadf36ab1bd998%2Fforms-scheduler-and-calendly-03-event-type.png?alt=media" alt="The Event type picker open, listing the Calendly event types of the connected account and ending with Other event: paste its link"><figcaption><p>The picker lists your active Calendly event types, and its last option lets you paste a link instead. Type in the search box to filter a long list.</p></figcaption></figure>

The list holds the active event types the connected Calendly account owns or hosts, sorted by name. Under the picker, a line names that account: *Showing the event types {email} owns or hosts. A team event only appears if that account is one of its hosts.*

While the list loads, the picker shows a grey placeholder. If it cannot load, you see **Could not load your event types.** and a **Try again** button.

As soon as you pick one, the canvas replaces **No event type picked yet** with the real booking page, so you can check the event, its duration and its description without leaving the editor.

**An event that is not in the list.** Choose **Other event: paste its link**, the last option, and paste into **Calendly event link** one of these:

* the event page link, such as `https://calendly.com/your-team/intro-call`;
* that link with Calendly's own parameters after it;
* the whole embed code Calendly gives you.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-08b5e437beb7d2e3f74656defaff4016b8dbaf30%2Fforms-scheduler-and-calendly-06-event-link.png?alt=media" alt="The Scheduler section in link mode, with a Calendly event link pasted in the Calendly event link field"><figcaption><p>A pasted link works for events the connected account cannot see, and without a Calendly connection at all.</p></figcaption></figure>

When you leave the field, a pasted embed code turns into the clean event link. Anything that is not a Calendly event link shows *That is not a Calendly event link. It should look like <https://calendly.com/team/event>.* If you paste the link of an event that is in the list, that event is picked for you instead.

If Calendly is not connected yet you will see **Connect Calendly in Integrations to pick an event type.** and a **Go to Integrations** button, plus **Or paste the event link instead**: the step works with a link and no connection.

***

**Step 4:** Set the rest of the **Scheduler** section: **Show event details**, **After booking** and **Autofill the booking form**.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-f06ec44e7137cf98c38dc33c0cd97760b2042a3f%2Fforms-scheduler-and-calendly-04-scheduler-settings.png?alt=media" alt="The form editor with the live Calendly embed on the canvas and the Scheduler settings on the right, including the line that names the connected Calendly account"><figcaption><p>Left: the live embed on the canvas. Right: the whole <strong>Scheduler</strong> section, from <strong>Event type</strong> to the autofill rows.</p></figcaption></figure>

| Setting                       | What it does                                                                                                           |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Event type**                | Which Calendly event type is embedded, picked from the list or pasted as a link. Only active event types are listed.   |
| **Show event details**        | On: the embed shows the event header (name, duration, description). Off: the respondent goes straight to the calendar. |
| **After booking**             | What happens once the respondent picks a time. See the options below.                                                  |
| **Autofill the booking form** | Which earlier answer feeds each field the booking page asks for.                                                       |

**After booking** offers three kinds of destination:

* **Continue to the next question**: the form moves on in order. This is the default.
* **Submit the form and show the ending**: the booking is the last thing you ask for, and the respondent lands on the ending screen.
* Any later step in the form: jump straight to that question or screen, skipping what sits in between.

***

**Step 5:** Under **Autofill the booking form**, map each field the event asks for to an earlier answer.

Calendly always asks for a **Name** and an **Email**, and the rows below them are the custom questions of the event type you picked, with the exact wording your Calendly event uses. An event added by its link only gets the **Name** and **Email** rows: *Name and email are autofilled. To map this event’s own questions, pick it from the list instead.* Each row offers:

* **Automatic**: dForms matches the field to the conventional answer of that kind, so a Name question fills the name and an Email question fills the email. Leave the rows on **Automatic** unless your form asks for those details in an unusual way.
* Any earlier question in the form: pick it by name to feed that exact answer into the booking page.

Only questions that come **before** the scheduler can be used: an answer that has not been given yet cannot prefill anything.

> **💡 Tip:** Autofill is what makes the step feel like one flow instead of two forms. When the name and email are already filled in, most respondents only have to click a slot and confirm.

***

**Step 6:** Decide whether the step can be skipped. In **Question settings**, the **Required** toggle is on by default, and a required scheduler has no way out: the respondent books or stops. Turn **Required** off and the public form adds a **Skip for now** link under the calendar.

Click **Publish** when you are happy with the step. Then open the public link and check it end to end.

<figure><img src="https://3835013762-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FCy5rSNtQmtqYCGzJlNEB%2Fuploads%2Fgit-blob-52b0c579bf01b0952e2792d9458f7b34267fabe7%2Fforms-content-steps-08-public-scheduler.png?alt=media" alt="The published form showing the embedded Calendly calendar and the Skip for now link" width="400"><figcaption><p>What the respondent sees: your question, the embedded booking page, and (when the step is not required) <strong>Skip for now</strong>.</p></figcaption></figure>

While the embed loads, the respondent sees **Loading the calendar…**. If the calendar cannot be shown at all, the form offers **Open the scheduling page** so the booking can still happen in a new tab.

***

## What a booking does to the rest of the form

* The booking **is** the answer to that question. The answer value is the start time of the meeting the respondent chose.
* The step counts as completed, so **After booking** takes over and the form continues, submits or jumps.
* The meeting itself is created in Calendly, with Calendly's own confirmations and reminders. dForms does not send the invitation.
* Calendly collects the invitee's email address on its own booking page. That address can identify the lead in your CRM even when the form never asks for an email. See [Booking sync](/dforms/connect/hubspot/booking-sync.md).

> **⚠️ Note:** If Calendly is disconnected later, a form that already has an event type keeps letting people book, but dForms can no longer read the booking back, so nothing is stamped on the contact. The same happens with a pasted link to an event the connected account cannot see: people can book, but the invitee's details cannot be read back.

With [spam protection](/dforms/connect/spam-protection.md) on and a scheduler as the last step, the human check runs on the submitting screen, right after the booking.

## Reference: what the respondent can see

| Copy                                        | When it appears                                                           |
| ------------------------------------------- | ------------------------------------------------------------------------- |
| **Loading the calendar…**                   | While the booking page is being embedded.                                 |
| **Open the scheduling page**                | When the embed cannot be shown, as a fallback link.                       |
| **Skip for now**                            | Only when the scheduler question is not **Required**.                     |
| **This scheduler has not been set up yet.** | The step was published without an event type. Pick one and publish again. |

## What's next

* [Booking sync](/dforms/connect/hubspot/booking-sync.md): stamp the booking date, the meeting time and a stage on the HubSpot contact.
* [Connections (account level)](/dforms/connect/connections.md): how the Calendly and HubSpot connections are made and revoked.
* [HubSpot](/dforms/connect/hubspot.md): what a submission sends to your CRM.
* [Question settings](/dforms/builder/question-settings.md): **Required**, field keys and the rest of the per-question options.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.dapta.ai/dforms/connect/scheduler-and-calendly.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
