Cal.com is open-source, self-hostable scheduling. Your dialnote AI voice agents can check your Cal.com availability and book meetings while they're on a call. A caller asks for an appointment, the agent finds open slots, offers times, and creates the booking in Cal.com.
There are two parts to this: connect your Cal.com account once, then add a calendar action to an agent.
What you'll need#
- A Cal.com account on cal.com (self-hosted Cal.com instances can't be connected)
- At least one Event Type set up in Cal.com
- A Cal.com API key
Step 1: Connect Cal.com#
Go to Settings → Integrations and find the Scheduling section. Click Connect on the Cal.com card. You'll enter a label (so you can tell accounts apart) and paste your API key.
To get the key, click Where do I find my API key? in the modal, or follow these steps in Cal.com:
- Open Cal.com → Developer → API keys
- Click + Add and name the key (e.g. "dialnote")
- Turn the Never expires toggle on so the integration doesn't break later
- Click Save
- Copy the key right away — Cal.com only shows it once
Cal.com keys are full-access
A standard Cal.com API key grants full account access — there's no scope list to set, unlike Calendly. For team scheduling, generate a team-scoped key (you'll need a team owner or admin role).
You can connect more than one Cal.com account — use Connect Another to add a second. Each connected account can be renamed (pencil icon) or removed (trash icon, with a confirmation).
Connecting just stores your credentials. To actually use Cal.com on a call, add an action to an AI agent next.
Step 2: Add a calendar action to your agent#
Open an AI agent and go to the Actions step in the wizard. Click Add action, then pick one of these:
| Action | What it does |
|---|---|
| Check Availability | Looks up open time slots so the agent can offer times |
| Book Meeting | Creates a confirmed booking in Cal.com |
Most agents use both. The agent checks what's open, then books the caller's pick.
For Book Meeting, you'll go through a short two-step setup (Basic Info, then Configuration):
- Choose Cal.com as the provider
- Pick the connected Cal.com account (or connect a new one right there)
- Select the Event Type the agent should book
- Choose a Meeting Location from the dropdown — it lists the locations configured on that Event Type and defaults to the first one
Location comes from your Event Type
The location dropdown is single-select. It only shows the location types you set up on that Cal.com Event Type — Cal Video, Google Meet, Zoom, Microsoft Teams, Whereby, Around, Riverside, a phone call, an attendee-provided location, or a custom link.
Time zone is set on the agent
The time zone isn't set on the action. When the caller's time zone is clear from their phone number, the agent offers and books times in the caller's zone. Otherwise it uses the Fallback Timezone from the agent's Basic Info step (Step 1), which is also your calendar's time zone.
Test the connection#
Each calendar action has a Test connection panel so you can confirm it's wired up before going live. For Book Meeting, the test creates a real booking on your calendar and then cancels it automatically, so you can see the full flow without leaving a stray event behind. You'll confirm a Run a real test booking? dialog first, and you'll get an invite email and a cancellation email for the test. If the automatic cancellation fails, click Cancel the test booking to remove it yourself.
How a booking goes#
- Caller asks to schedule a meeting
- Agent uses Check Availability to find open slots
- Agent offers times and the caller picks one
- Agent collects the caller's name and email
- Agent uses Book Meeting to create the appointment
- Cal.com sends confirmation emails to both parties
The whole thing takes under a minute. Callers get instant confirmation with no callback.
Troubleshooting#
"Invalid Cal.com API key" — The key may have been deleted or, if you set an expiration, expired. Generate a new one in Cal.com's Developer settings and reconnect.
"Your Cal.com event type is missing or misconfigured" — The Event Type may have been deleted or turned off in Cal.com. Edit the action, click Change next to API Key, and pick a different one.
Team events don't show up — A personal API key only sees your own event types. For team scheduling, reconnect with a team-scoped key.
The slot was taken — Someone booked it between the check and the confirmation. The agent tells the caller that time isn't available anymore and asks if they'd like to pick a different one.
What's next#
- Calendar integrations overview — how scheduling fits with AI agents
- Calendly integration — the other supported scheduling provider
- Custom agent tools — every action your agent can take
- Creating an AI agent — build the agent that books these meetings
The full list of tools dialnote connects to is on the integrations page.