Cal.com + Make: send every booking to Google Sheets, then remind the client the day before (free blueprints)
Part of: How to reduce no-shows: what the evidence says, and a free three-message reminder chain
Short answer
Paste a Make webhook address into Cal.com under Settings → Developer → Webhooks, subscribe it to Booking Created, and every booking becomes a row in a Google Sheet with the date and time converted to your time zone. A second scenario reads that sheet every morning and emails tomorrow's clients a reminder with a "can't make it" link. Both run on Cal.com's and Make's free plans at small-business volume: about 230 Make credits a month for 40 bookings (checked 2026-10-05).
Send every Cal.com booking to Google Sheets with a Make webhook, in your time zone, then email a reminder the day before. Two free blueprints, every field.
Disclosure: links marked "paid link" pay us a commission from the vendor if you sign up. Your price is unchanged, and every file here works without them. How we choose tools →
Cal.com already knows about every meeting. Your Google Sheet does not, and that is the gap this page closes. Once each booking is a row, the sheet can do what a booking tool does not: send the reminder from your own Gmail, count who never showed up, and answer "what happened with that client in March?" long after the calendar has moved on.
This is the how-to of the appointments series: the pillar covers why reminders work, the Cal.com vs Calendly page which tool to pick. Here we wire the two scenarios together, field by field.
Why reminders work, and the full three-message chainFive studies on no-shows, and the 48-hour, 24-hour and 2-hour messages
The two scenarios
| Scenario | Starts on | Modules | What it does | Credits a month at 40 bookings |
|---|---|---|---|---|
| 1. Booking → sheet | Cal.com's Booking Created webhook | Webhook, Google Sheets, Telegram | Writes name, email, date, time, status "booked"; tells you on Telegram | 120 (3 per booking) |
| 2. No-show reminder | A daily schedule, e.g. 09:00 | Google Sheets search, Gmail, Google Sheets update | Finds tomorrow's "booked" rows, emails each client, marks the row | About 111 (one search a day, two per reminder) |
Together that is about 231 credits a month, inside the Free plan's 1,000, and exactly the Free plan's two active scenarios (make.com/pricing, checked 2026-10-05). A third automation for the same business is the point where Core, at $12 a month (checked 2026-10-05), becomes the answer.
Put your own booking volume into the calculatorPick the two automations, type your bookings a month, see the credits and the plan that fits
Scenario 1: every Cal.com booking becomes a row
Booked on Cal.com → logged in the meetings sheet → you know in seconds
Every Cal.com booking becomes a row in your meetings sheet, in your time zone, and a Telegram alert. The no-show reminder takes it from there.
Get all 23 blueprints in one ZIP, by email
Why a plain webhook and not the Cal.com app in Make
Make has a Cal.com app with a Watch Booking Created trigger that connects with a Cal.com API key (apps.make.com/cal-com, checked 2026-10-05). We use Make's Custom webhook instead. It needs no API key, so there is nothing to rotate or leak. It does not depend on the app connection, which users in Make's community forum reported failing with a 404 from November 2024 to January 2025; the workaround in that thread was a custom webhook. And it maps Cal.com's documented payload, cloud or self-hosted.
Set it up
- Copy the meetings sheet template on this page: client, email, date, time, status, reminder_sent, in that order.
- Import the booking blueprint into Make. Open the Webhooks module, add a webhook, and copy the address it shows.
- In Cal.com, open Settings → Developer → Webhooks (app.cal.com/settings/developer/webhooks) and add a new webhook. Paste the address as the subscriber URL.
- Under event triggers, keep only Booking Created. Leave the custom payload template empty.
- In Make, click Run once, then book a test meeting from a second email address. Make catches it and learns its structure.
- Connect Google Sheets and Telegram, fill in the spreadsheet id and chat ID, test once more, and switch the scenario on.
Which payload field goes into which column
| Sheet column | Cal.com payload field | Note |
|---|---|---|
| A client | payload.attendees[1].name | Make counts arrays from 1, so this is the first attendee |
| B email | payload.attendees[1].email | Where the reminder is sent |
| C date | payload.startTime, formatted YYYY-MM-DD | Converted with payload.organizer.timeZone |
| D time | payload.startTime, formatted HH:mm | Same conversion |
| E status | the text "booked" | The reminder only picks rows with this status |
| F reminder_sent | left empty | The reminder writes the date here |
The time zone is the line that matters. Cal.com sends startTime in UTC, for example 2026-10-09T08:00:00Z. Make's formatDate takes a time zone as its third argument (Make Help Center, checked 2026-10-05), and the blueprint passes the organizer's time zone from the same payload. Without it, Make uses your Make organization's time zone; a meeting near midnight can land on the wrong date, and the reminder goes out a day early or not at all.
The booking tool this blueprint is built for. Webhooks, unlimited event types and workflows are on the free plan (cal.com/faq and cal.com/pricing, checked 2026-10-05): Set up free scheduling → paid link · we earn a commissionPaid link. If you upgrade to a paid plan through it we earn 20% from Cal.com for a year, and you get 20% off for 12 months. The free plan covers one calendar.
Scenario 2: the reminder the day before
A meeting tomorrow → a reminder 24 hours ahead, with a "can't make it" link
A no-show is a slot nobody could refill. Every morning, each of tomorrow's meetings gets a reminder email with the time and a "can't make it" link.
Import the reminder blueprint as a second scenario and point it at the same sheet. Schedule it once a day in the morning. Each run searches for rows with status "booked", tomorrow's date and an empty reminder_sent cell, sends each client one email with the time and a "can't make it" link, and writes today's date into reminder_sent so the same reminder never goes out twice.
Two rules keep the pair honest. First, one sender per message: Cal.com's free workflows can also email attendees before a meeting (cal.com/faq, checked 2026-10-05), and running both means two reminders. Use the workflow for a same-day nudge and this scenario for the 24-hour email. Second, add a "no-show" status and mark it on the day; after a month, no-shows against bookings is your rate, the number this is meant to move.
Both scenarios run on Make's free plan at this volume; this is the link we use when a business adds a third: Sign up (one month of Core free) → paid link · we earn a commissionPaid link. If you sign up through it we earn a commission from Make; your price is the same, and the link gives you one month of Core free.
When to choose a booking form instead
If the business does not want a scheduling tool at all, a free Tally booking form can write the same row in the same sheet and send the confirmation itself. It does not check availability, so two clients can pick the same slot. For a calendar with real availability, Cal.com is the trigger; for a simple "request a time" form, the Tally blueprint is enough. Both feed the same reminder.
Booking form → meetings sheet → confirmation email. Feeds the no-show reminder
A booking arrives and nobody confirms it. A Tally form writes the meeting to the sheet, emails the client a confirmation and pings you on Telegram.
The free form behind the booking-form blueprint; webhooks are free for every Tally user (tally.so/help/webhooks, checked 2026-10-05): Create a free form → paid link · we earn a commissionPaid link. If you ever upgrade to a paid plan through it we earn a commission from Tally; your price is the same, and the free plan covers every automation here.
Cal.com vs Calendly free plans for automationWebhooks, workflows, event types and the Make connection, compared line by line
What does not work
- Cancellations and reschedules. The blueprint listens to Booking Created only, so a cancelled meeting stays "booked" and still gets a reminder. Mark it by hand, or add a scenario on Booking Cancelled.
- A wrong time zone in Cal.com. The conversion uses the organizer's time zone from the payload. If your Cal.com profile says UTC and you work in New York, every row is off by four or five hours.
- Signature checks. Cal.com can sign each delivery with a secret in the X-Cal-Signature-256 header (cal.com/help/webhooks, checked 2026-10-05). This blueprint does not verify it. Anyone who learns the webhook address could post a fake booking; keep the address private, and add a check if it ever leaks.
- Group bookings. The mapping takes the first attendee only.
- Meetings booked for later today. The reminder runs in the morning and looks at tomorrow. A booking made at 11:00 for 15:00 the same day gets Cal.com's confirmation, but no reminder from this pair.
Does this work on Cal.com's free plan?
Yes. Cal.com's FAQ lists webhooks and automated workflows among the features free users get, and its pricing page lists unlimited event types and calendars for one user on the free plan (checked 2026-10-05).
Do I need the Cal.com app in Make?
No. This blueprint starts with Make's Custom webhook, and you paste its address into Cal.com's webhook settings. The Cal.com app with its Watch Booking Created trigger also works; it needs an API key from Cal.com.
How many Make credits does it use?
Three per booking for the sheet scenario and about 111 a month for a daily reminder at 40 reminded meetings: roughly 231 credits a month at 40 bookings. Make's Free plan includes 1,000 credits and two active scenarios (make.com/pricing, checked 2026-10-05).
Why is the time in my sheet an hour off?
Cal.com sends the start time in UTC. The blueprint converts it with the organizer's time zone from the payload, so check the time zone in your Cal.com profile settings; a profile left on UTC gives UTC times.
- Cal.com Help — Webhooks (Settings → Developer → Webhooks; trigger events; optional secret, X-Cal-Signature-256; checked 2026-10-05)
- Cal.com Docs — Webhooks (payload format: triggerEvent, payload.startTime in UTC, attendees, organizer.timeZone; checked 2026-10-05)
- Cal.com — Pricing (Free: 1 user, unlimited event types and calendars, email and SMS notifications; Teams $12 per user/month; checked 2026-10-05)
- Cal.com — FAQ (free users get webhooks and automated workflows; no limit on workflows; checked 2026-10-05)
- Make Apps Documentation — Cal.com (API key; Watch Booking Created / Cancelled / Rescheduled / Meeting Ended; checked 2026-10-05)
- Make Community — "Cal.com webhook" (404 when saving the Cal.com connection, November 2024 to January 2025; custom webhook workaround)
- Make Help Center — Date and time functions (formatDate with an optional time zone; checked 2026-10-05)
- Make — Pricing (Free: 1,000 credits, 2 active scenarios; Core $12/month; checked 2026-10-05)


