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 (cloud at cal.com or self-hosted)
- 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 booking time zone comes from the agent's Basic Info step (Step 1), not from the action. Set it once on the agent and every calendar action uses it.
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.
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.
"Event type not found" — The Event Type may have been deleted or turned off in Cal.com. Edit the action 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 offers alternative times automatically.
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