Connect cal.com to Qoren
Connect cal.com with one API key so new, rescheduled and cancelled bookings wake your agents, and let them look up bookings with nothing to paste in cal.com.
On this page
Connect cal.com once with an API key and your agents can wake when someone books, requests, reschedules or cancels a meeting with you. Qoren creates the cal.com webhooks itself, so there is no Subscriber URL or secret to copy.
The same connection lets the agents you choose list your upcoming bookings and read one in full. Cancelling or rescheduling a booking emails the attendees, so both always wait for your approval. How connections, access and approvals fit together is in connect your tools with Integrations.
Before you start#
- You are the owner of your Qoren organization. Only the owner connects tools, gives agents access and sends connect links.
- Integrations is on for your account. It is rolling out: if the sidebar has no Integrations under Capabilities, it is not on your account yet.
- A cal.com account. Accounts on cal.com and on cal.eu both work: Qoren finds out which one the key belongs to.
Make the key#
- In cal.com, open Settings, Developer, API keys and choose Add (open it in cal.com). Name it Qoren.
- Choose how long it lasts. Pick Never expires, or note the date you choose: cal.com does not tell Qoren when a key expires, so Qoren cannot remind you.
- Copy the key. It starts with
cal_live_.
cal.com keys cannot be limited: a key can do everything your account can. Qoren keeps agents to the level you grant, and its own tools never change the key.
Connect it in Qoren#
- In the sidebar, under Capabilities, click Integrations.
- Under Add a tool, click cal.com. The Connect cal.com dialog shows the same steps as above, and a warning that cal.com keys cannot be limited.
- If you run an agency, choose the client in Which client is this for?, or leave No client (your own account).
- Paste the key into API key.
- Click Check key. Under Key checked you see your cal.com name (Account:), Can read, Can write and whether it Can add webhooks.
- Under What agents may do, choose Read only or Read and write.
- Click Connect.
The screens are shown step by step in connect a tool.
What Qoren checks#
- That it looks like a cal.com key. Anything that does not start with
cal_is refused before it is sent anywhere. Acal_key withoutlive_is accepted and noted as a test key. - Who it belongs to, on cal.com first and then on cal.eu. Your name (or username, or email) becomes the connection's label, and the key is only ever sent to the host that accepted it.
- Whether it can list your webhooks. If your account already has webhooks, the check says how many: Qoren adds its own and never changes yours.
cal.com has an API call that replaces a key with a new one and deletes the old. Qoren never calls it, so connecting, checking or using a key never changes it.
Give an agent access#
A new connection is used by no agent until you give one access. Open the connection under Connected, choose an agent (or all agents) in Give access to…, pick Read only or Read and write, and click Give access. See give an agent access.
Events#
Create triggers from these on the agent's Triggers tab; see wake an agent from a connected tool. The step-by-step recipe for call prep is in wake an agent when a cal.com booking lands.
| Event | What it means |
|---|---|
Booking created (BOOKING_CREATED) | Someone books a meeting with you, or it is confirmed after you accept it. |
Booking requested (BOOKING_REQUESTED) | Someone books an event type that needs your confirmation, and it waits for you to accept it. |
Booking rescheduled (BOOKING_RESCHEDULED) | A booking moves to another time. |
Booking cancelled (BOOKING_CANCELLED) | A booking is cancelled, by you or by the attendee. |
What the agent receives. The booking: its uid, title, event type, status, start and end, location, description, the organizer and up to 20 attendees, and the answers to your booking form. Long text is shortened. The attendee typed parts of it, so the agent is told to treat it as information, never as instructions.
How the webhook is set up. Qoren creates one cal.com webhook per booking event it needs, signed with a secret only Qoren and cal.com know, and triggers that need the same event share it. A booking that is created, requested or cancelled is recognised by its uid, so a repeat delivery never runs the agent twice.
Tools agents can use#
| Tool | What it does | Changes records | Always asks |
|---|---|---|---|
| List upcoming bookings | Your upcoming bookings, soonest first, at most 20: uid, title, time, status and attendees | No | No |
| Read a booking | One booking: title, time, status, location, attendees and the booking form's answers | No | No |
| Cancel a booking | Cancel a booking. cal.com emails the attendees | Yes | Yes |
| Reschedule a booking | Move a booking to a new start time. cal.com emails the attendees | Yes | Yes |
Both writes send email to people outside your account, so they always wait on the Approvals page with the exact booking and time shown, whatever the agent's settings. There is no write an agent can make in cal.com on its own. See how Qoren keeps connected tools safe.
Limits and gotchas#
- cal.com documents no retries for booking webhooks. A delivery that fails may never come again. Qoren's daily check makes up for it for new bookings: it reads the bookings created since the last delivery that reached Qoren (at most three days back, and none from the last 10 minutes; it starts once one booking has reached Qoren) and hands each accepted one to your Booking created triggers. Bookings that already arrived are recognised and skipped. Rescheduled and cancelled bookings are not recovered this way.
- The check repairs webhooks. A Qoren webhook that was deleted, switched off, pointed elsewhere or stopped sending its event is set up again.
- The key cannot be limited. Only Qoren's tools hold an agent to Read only.
- No expiry reminders. cal.com does not report a key's expiry date, so a key with an end date simply stops working on that day.
Troubleshooting#
- "That does not look like a cal.com API key." Copy the key from Settings, Developer, API keys. It starts with
cal_live_. - "cal.com did not accept this key." The key was deleted or has expired. Make a new one.
- "cal.com does not let this key manage webhooks." Triggers cannot be set up with this key. Check the account and the key, then use Replace key.
- "This cal.com account is already connected here." Open the existing connection and use Replace key instead.
- The connection says Needs a new key. cal.com stopped accepting the key, often because it reached its expiry date. Its triggers are paused until you click Replace key. See when a connected tool stops working.
Disconnect and delete the key#
- On the Integrations page, open the cal.com connection under Connected.
- Click Disconnect, then Disconnect again in the Disconnect cal.com? dialog (or Keep it).
Qoren deletes the stored key, removes the webhooks it created in cal.com, removes every agent's access and pauses the triggers that used the connection.
Qoren cannot revoke a cal.com key, so delete it in cal.com too: open Settings, Developer, API keys and delete the key (open it in cal.com).
Frequently asked questions#
Do I still add a webhook in cal.com myself?
No. Qoren creates it when you add a connected trigger and deletes it when no trigger needs it. Pasting a Subscriber URL and secret by hand still works for events Qoren does not list: see wake an agent when a cal.com booking lands.
Can the agent cancel a meeting on its own?
No. Cancelling and rescheduling both email your attendees, so each one waits for a person to approve it with the exact booking shown.
Does it work with cal.eu?
Yes. Qoren tries cal.com first and then cal.eu, and keeps using whichever host accepted the key.
What if a booking webhook never arrives?
For new bookings, the daily check finds bookings made in the last three days that never reached Qoren and delivers them once.