For the complete documentation index, see llms.txt. This page is also available as Markdown.

Cal.com

Cal.com is an open-source scheduling platform that lets you create booking pages, define your availability, and manage meetings across multiple calendar integrations. It's used by individuals and teams to automate appointment scheduling without the back-and-forth.

Connecting Cal.com to Coupler.io lets you pull your scheduling data into spreadsheets, dashboards, or AI tools — so you can analyze booking trends, audit your availability setup, or build reports around meeting activity.

Why connect Cal.com to Coupler.io?

  • Centralize scheduling data — combine bookings, event types, and availability into a single report

  • Track booking trends — see which meeting types are most popular and when people book

  • Sync to your destination of choice — send data to Google Sheets, BigQuery, Looker Studio, or AI tools like ChatGPT or Notion

  • Combine with other sources — use Append or Join transformations to merge Cal.com data with CRM or project management data

Prerequisites

  • A Cal.com account (free or paid)

  • A Cal.com API key (available in your Cal.com settings under Developer → API Keys)

Quick start

How to connect

1

Create a new data flow in Coupler.io. Log in to Coupler.io, go to the Data flows section, and click Add data flow.

2

Select Cal.com as your source. Search for Cal.com in the source list and select it.

3

Enter your API key. In your Cal.com account, go to Settings → Developer → API Keys, generate a new key, and paste it into the API key field in Coupler.io.

4

Choose an entity. Select the data entity you want to import — for example, Bookings, Event types, or Schedules. You can add more entities to the same data flow later.

5

Choose a destination. Select where you want your data to go — Google Sheets, Excel, BigQuery, Looker Studio, or an AI destination like ChatGPT, Claude, or Gemini.

6

Run the data flow. Click Run to execute a manual run and confirm your data loads correctly.

Cal.com data overview

Cal.com gives you access to six entities through Coupler.io, covering everything from your personal profile and availability setup to individual bookings and conferencing integrations.

Available entities

Entity
What it contains

Bookings

Scheduled meetings with attendee info, timing, and booking responses

Event types

Meeting templates — duration, slug, location type, and visibility

Schedules

Weekly availability windows and time slot configurations

Calendars

Connected calendar accounts and their integration status

My profiles

User profile: name, username, email, timezone, and avatar

Conferencings

Conferencing tools linked to the account (Zoom, Meet, etc.)

Bookings

Fields

Field
Description

id

Unique booking identifier

uid

Public-facing unique ID for the booking

title

Meeting title

start_time

Scheduled start date and time

end_time

Scheduled end date and time

status

Booking status: accepted, cancelled, pending

attendees

Names and emails of attendees

event_type_id

ID of the event type used for this booking

location

Meeting location or conferencing link

description

Notes or custom questions answered at booking

created_at

When the booking was created

Event types

Fields

Field
Description

id

Unique event type identifier

title

Display name of the event type

slug

URL-friendly identifier used in booking links

length

Duration in minutes

hidden

Whether the event type is publicly visible

locations

Allowed meeting locations (Zoom, Google Meet, in-person, etc.)

description

Event type description shown to bookers

require_confirmation

Whether bookings require manual approval

Schedules

Fields

Field
Description

id

Schedule identifier

name

Schedule name

timezone

Timezone the schedule is set in

availability

Day-by-day time slot configuration

is_default

Whether this is the user's default schedule

Calendars

Fields

Field
Description

integration

Calendar type (e.g., google_calendar, office365)

name

Calendar display name

external_id

External calendar account identifier

is_selected

Whether this calendar is used for availability checking

My profiles

Fields

Field
Description

id

User ID

name

Full name

username

Cal.com username

email

Account email

timezone

User's configured timezone

avatar

Profile image URL

Conferencings

Fields

Field
Description

type

Integration type (e.g., zoom_video, google_meet)

app_data

App-specific connection details

Common field combinations

  • Booking volume analysis — use start_time, status, and event_type_id to see how many bookings each event type generates over time

  • Cancellation tracking — filter status = cancelled and group by event_type_id or date to identify drop-off patterns

  • Availability auditing — combine Schedules and Calendars to verify that availability is set correctly across time zones and integrations

  • Attendee reporting — flatten attendees from Bookings to build a contact list of everyone who has booked with you

Use cases by role

  • Pull Bookings data into Google Sheets or a CRM pipeline to track how many discovery calls are scheduled and completed each week

  • Use the status field to monitor no-shows and follow up automatically

  • Join Bookings with Event types to see which meeting format (demo, intro call, check-in) drives the most conversions

  • Audit Schedules and Calendars to make sure team members have consistent availability windows and no misconfigured integrations

  • Send data to BigQuery or Looker Studio for team-wide booking dashboards

  • Use Append transformation to combine bookings from multiple Cal.com accounts into one unified report

  • Track meeting volume and duration over time using Bookings + Event types in Google Sheets

  • Export attendee data for invoicing or follow-up

  • Send booking summaries to ChatGPT or Claude for AI-generated meeting prep notes or weekly recaps

Platform-specific notes

  • The Cal.com API returns attendees as a nested array — Coupler.io will flatten this into individual rows or columns depending on your destination

  • status values in Bookings are: accepted, cancelled, pending, and awaiting_host — filter accordingly in your destination

  • Conferencings data reflects linked integrations at the account level, not per-booking conferencing links (those appear in Bookings under location)

  • If you use Cal.com Teams, the API key must belong to the team member whose data you want — there is no org-wide API key for pulling all team members' bookings at once

Cal.com common issues

Connection issues

My API key is rejected when connecting

Double-check that you copied the full API key from Cal.com — they can be long and easy to truncate. Go to Settings → Developer → API Keys in Cal.com and regenerate a new key if needed. Also make sure the key hasn't been manually expired or deleted.

I can connect but get no data back

This usually means the API key belongs to a user account that has no data for the selected entity. For example, if you select Bookings but haven't received any bookings yet, the response will be empty. Try selecting My profiles first to confirm the connection is working and returning your user info.

Missing data

Cancelled bookings are missing from my export

By default, some API responses filter by status. Coupler.io pulls all bookings regardless of status, so if cancelled bookings aren't appearing, check whether you've applied a filter in your destination (e.g., a Google Sheets filter view). The status field in the Bookings entity includes cancelled records — make sure you're not filtering them out.

I don't see bookings from my team members, only my own

Cal.com's API is scoped to the authenticated user. The API key you provide only returns data for that user's account. To pull data for multiple team members, you need to create separate data flows using each member's API key, then use the Append transformation in Coupler.io to combine them into one dataset.

Attendee fields are missing or appear as a single concatenated string

Attendees are returned as a nested array by the Cal.com API. Coupler.io flattens this automatically, but in some destinations the data may appear differently depending on how many attendees a booking has. If attendee emails or names look merged, check the column structure in your destination and consider splitting the field manually.

Permission errors

I get a 401 Unauthorized error

This means your API key is invalid or has been revoked. Go to Settings → Developer → API Keys in Cal.com and confirm the key is still active. If you recently rotated your key, update it in Coupler.io under the source settings for your data flow.

I get a 403 Forbidden error on certain entities

Some entities may require specific account types or permissions. If you're on a free Cal.com plan, certain API endpoints may have restricted access. Check Cal.com's documentation for any plan-level API restrictions.

Data discrepancies

The booking count in Coupler.io doesn't match what I see in Cal.com

Cal.com's dashboard may show bookings differently depending on whether it includes recurring instances, rescheduled bookings, or pending bookings. In Coupler.io, check the status field to make sure you're counting only accepted bookings if that's what the Cal.com dashboard is showing. Recurring bookings may also appear as multiple rows.

Rate limits

My data flow fails with a rate limit error

Cal.com enforces API rate limits that vary by plan. If you're running large data flows frequently or have multiple data flows hitting the API at the same time, you may hit this limit. Try reducing the frequency of scheduled runs or staggering multiple data flows so they don't all run simultaneously.

Cal.com FAQ

Where do I find my Cal.com API key?

Log in to Cal.com and go to Settings → Developer → API Keys. Click Add to generate a new key. Copy it immediately — Cal.com won't show it again after you navigate away. Paste it into the API key field when setting up your Cal.com source in Coupler.io.

Can I pull booking data for my entire team, not just myself?

Not with a single API key — Cal.com's API is scoped to individual users. To get data across your whole team, each team member needs to generate their own API key. Create a separate data flow in Coupler.io for each person, then use the Append transformation to merge all their booking data into one unified table.

Can I filter bookings by date range or status?

Coupler.io pulls all available bookings from the Cal.com API. You can then filter the data in your destination (for example, using Google Sheets filters or Looker Studio date controls). The status field lets you filter by accepted, cancelled, pending, or awaiting_host, and start_time lets you apply date-based filtering.

How do I combine bookings with event type details in one table?

Add both the Bookings and Event types entities to your data flow, then use the Join transformation in Coupler.io. Join them on event_type_id (from Bookings) and id (from Event types) to get a flat table that includes meeting metadata — like duration and title — alongside each booking record.

Will Coupler.io capture recurring bookings?

Yes — Cal.com returns each instance of a recurring booking as a separate record. This means a weekly recurring meeting will appear as multiple rows in your Bookings data, one per occurrence. Use the uid field to identify and group recurring instances if needed.

Can I send Cal.com booking data to an AI tool?

Yes. Coupler.io supports AI destinations including ChatGPT, Claude, Gemini, Perplexity, Cursor, and OpenClaw. You can route your Bookings data directly to any of these to generate summaries, identify patterns, or draft follow-ups based on attendee responses.

Why does the Conferencings entity return very little data?

The Conferencings entity reflects the conferencing integrations connected to your Cal.com account (like Zoom or Google Meet), not the individual meeting links for each booking. Actual meeting links per booking appear in the location field of the Bookings entity. If you haven't connected any conferencing integrations, this entity will be empty.

How often should I refresh my Cal.com data?

For most use cases, a daily refresh is sufficient. If you're tracking bookings in near real time (e.g., for a live dashboard), you can set a more frequent schedule — but be mindful of Cal.com's API rate limits, especially if you're running multiple data flows.

For field-level details on each entity, see the Data Overview article. For help with connection errors or missing data, check Common Issues.

Last updated

Was this helpful?