Cal.com Booking
Let visitors check your availability and book a meeting without leaving the chat. Works with the free Cal.com plan — no OAuth or paid Platform account required.
When someone asks “when are you free?”, your agent checks your real Cal.com availability, offers a few times in the visitor’s own timezone, collects their name and email, and books it. Cal.com then sends the confirmation email and calendar invite exactly as it would for any other booking — the meeting link comes back into the conversation straight away.
No forms. No redirect to a booking page. Just a conversation.
Quick Start
Already have a Cal.com account and an event type? Setup takes about a minute:
- In Cal.com, create an API key under Settings → Developer → API Keys. Set it to never expire.
- In Jhunkoo, open your agent’s Tools tab and enable Cal.com Booking under Booking.
- Paste the key.
- Click Load event types.
- Pick the event type this agent should book.
- Click Update tools.
That’s the whole setup. The rest of this page explains each step, how the agent decides when to check your calendar, and what to do when something looks wrong.
What You’ll Need
- A Cal.com account — the free plan is enough.
- At least one event type set up — this is the meeting template Cal.com books against, e.g. “30 Minute Discovery Call”. Create one under Event Types in Cal.com if you haven’t already.
Each agent books one event type. If you offer several kinds of meeting, create a separate agent per event type, or pick the one that best matches what visitors to that page are looking for.
You Keep Using Your Own Calendar
Cal.com isn’t a calendar you have to move into — it’s a scheduling layer in front of the one you already use.
Connect Google Calendar, Outlook, Apple Calendar, Zoho, CalDAV, or an ICS feed under Calendars, and two things follow:
- Bookings land in your real calendar. A meeting your agent books shows up alongside everything else, with the usual reminders and invites. You don’t check Cal.com to see your day.
- Your existing meetings block slots. Cal.com’s Check for conflicts reads your connected calendars, so anything already in your diary — including events created outside Cal.com — is removed from what the agent can offer.
That second point is what makes this safe to put in front of visitors. The agent never sees a raw “9 to 5” grid; it sees what’s genuinely still free once your real commitments are accounted for. Double-bookings aren’t something the agent has to reason about.
If you connect more than one calendar, pick which ones count towards conflicts using the toggles on that page. A personal calendar you want kept private can stay off — it simply won’t affect availability.
Get Your Cal.com API Key
- Open your Cal.com API keys settings — or in Cal.com, go to Settings → Developer → API Keys.
- Click + New at the top right. A Create an API key dialog opens.
- Leave the API key option selected — not OAuth Client. Jhunkoo connects with a plain API key.
- Name it something you’ll recognise later, e.g.
Jhunkoo.ai agent. - Turn on Never expires, or choose the longest expiry available.
- Click Create, then copy the key. It starts with
cal_live_.
The key is only shown once. Copy it before closing the dialog. If you lose it, delete the key in Cal.com and generate a new one — you cannot view an existing key again.
Use a key that never expires, or the longest expiry Cal.com offers. When a key expires, booking stops working immediately: visitors are told the connection is no longer valid, and it stays broken until you generate a new key in Cal.com and paste it in again.
Nothing warns you when that day arrives — the first sign is usually a visitor who couldn’t book. An expiry you set today is an outage scheduled for a date you’ll have forgotten.
If you do use an expiring key, set a calendar reminder a few days before it lapses so you can rotate it before anyone is turned away.
Cal.com also offers OAuth for platform partners. Jhunkoo uses an API key instead, so there’s nothing to install, approve, or maintain — paste the key and you’re connected.
Connect It in Jhunkoo
- Open your agent and go to the Tools tab.
- Under Booking, enable Cal.com Booking.
- Paste your API key into the field that appears.
- Click Load event types.
- Choose the event type this agent should book.
- Click Update tools.
Load event types is also your key check. If the key is wrong or has been revoked, you’ll find out here rather than in front of a visitor. If it’s rejected, generate a new key in Cal.com rather than retrying the same one — a rejected key never starts working on its own.
If the key works but no event types appear, the key is valid and the account simply has none yet. Create one under Event Types, then use the refresh button to reload the list.
What Your Agent Can Do
Enabling Cal.com Booking gives your agent two abilities:
| What it does | When it happens |
|---|---|
| Check availability | A visitor asks about free times, or names a specific day |
| Book a meeting | A visitor picks a time and gives their name and email address |
Both are turned on together — an agent that can book but not check availability would have nothing to offer.
If you write your own instructions and want to reference these tools by name, use the runtime identifiers cal_get_available_slots and cal_book_meeting.
Booking or Lead Capture?
Both tools respond to a visitor who wants something scheduled, and it isn’t always obvious which one you need. The difference is who decides the time:
| Booking fits when | Lead Capture fits when |
|---|---|
| The appointment is a fixed length | A quote or scope has to come first |
| The visitor schedules it themselves | A person negotiates the time |
| One attendee | A group, or a custom arrangement |
| Your calendar decides what’s available | Your staff decide what’s available |
A 30-minute discovery call is a booking. A school visit for thirty children in November is a lead — it needs a date range, a group size, and a conversation, none of which fit a fixed slot.
They work well together. A visitor who books still belongs in your leads, and one who isn’t ready to book still leaves you a contact. Enabling both lets the agent take whichever path the conversation actually calls for, and the two guides below show that in practice.
- Local Service Quote Assistant — captures the lead, then books the free on-site quote
- Museum & Cultural Guide — books individual tours, routes group enquiries to the team
How the Agent Decides to Check Availability
The agent doesn’t look up your calendar every time someone mentions a meeting. It follows three rules, which is worth knowing so its behaviour isn’t surprising:
The visitor names a date or range — “tomorrow”, “next Tuesday”, “this Friday afternoon”, “next week” — the agent checks exactly that range.
The visitor asks generally — “when are you free?”, “I’d like to schedule something” — the agent looks ahead over the next couple of weeks and offers a handful of times across several days.
The visitor is only asking a question — “how long are your meetings?”, “do you offer consultations?”, “can I book a demo?” — the agent answers the question and does not check your calendar. Mentioning booking isn’t the same as asking to book.
Example
Visitor: “Do you offer consultations?”
Agent: “Yes, we do. They usually run about 30 minutes. Would you like me to find a time?”
Visitor: “Yes, what about next Tuesday?”
Agent: “On Tue, Aug 4 I have 9:00 AM, 10:30 AM or 2:00 PM (Asia/Kolkata). There’s more availability that week if none of those work.”
Visitor: “2pm works. Priya Sharma, [email protected]”
Agent: “Just to confirm — Tue, Aug 4 at 2:00 PM (Asia/Kolkata) for Priya Sharma. Shall I book it?”
Visitor: “Yes”
Agent: “Booked. Here’s your meeting link:
https://app.cal.com/video/…— a confirmation email is on its way.”
The agent always confirms the time back before booking. A booking creates a real calendar event and sends a real email from your account, so it never happens on an assumption — if the visitor misheard a time or the agent misread one, that exchange is where it gets caught.
Timezones
Times are shown in the visitor’s timezone, detected automatically from their browser. Your Cal.com availability is unchanged — only the presentation adapts, so a visitor in Mumbai and one in Berlin each see the same slot in their own local time.
The agent states the timezone when it offers times, and confirms it again before booking.
If a visitor’s browser doesn’t report a timezone, the agent falls back to UTC and says so explicitly rather than implying the times are local. It will convert if the visitor mentions where they are.
Cancelling and Rescheduling
Your agent cannot cancel or reschedule bookings in chat. If a visitor asks, it points them to the cancel and reschedule links in their Cal.com confirmation email.
This is a deliberate limitation, not an oversight. The links Cal.com emails are scoped to one specific booking, so each visitor can only change the meeting they made — which is both safer and what they already expect.
We may bring cancelling and rescheduling into the chat in the future. For now, using the links in the confirmation email is the safest way to ensure visitors can only modify their own booking.
Limits
- 3 bookings per visitor per hour, and 20 per agent per hour. Each booking creates a real calendar event and sends real email from your account, so these ceilings exist to stop a single visitor — or an automated one — filling your calendar.
- The agent will not book a time in the past, or more than a year ahead.
- The agent will not invent attendee details. If a visitor hasn’t given a real name and email, it asks rather than guessing.
- The agent only books times your calendar actually returned, and re-checks the slot immediately before booking. If someone else takes it in the meantime, the visitor is offered current times instead.
Troubleshooting
| What you see | What it means |
|---|---|
| ”The Cal.com connection is no longer valid” | The key was revoked or expired in Cal.com. Generate a new one and save it again. |
| Load event types returns nothing | The key works, but the Cal.com account has no event types. Create one under Event Types, then refresh the list. |
| Your API key is rejected when you load types | The key is wrong or has been revoked. Generate a fresh one — copying the same key again won’t help. |
| The agent never offers times | Check the tool is enabled and an event type is selected. Both are required before the agent can see your calendar. |
| The agent says there’s no availability | Check your Availability schedule — it defaults to Mon–Fri, 9–5. See the FAQ. |
| A booked time looks wrong | Check the timezone the agent stated when confirming. If it said UTC, the visitor’s browser didn’t report one. |
| A new event type doesn’t appear | The list is cached briefly. Use the refresh button next to the dropdown to fetch it again. |
Related
- Built-in Tools — the other tools your agent can use
- Lead Capture — capture contact details from visitors who aren’t ready to book
- API tool — connect a scheduler other than Cal.com via its REST API