Productivity

Send WhatsApp Reminders for Calendly Bookings (API)

Calendly can fire a webhook when someone books or cancels. Here is what the payload holds, where the phone number comes from, and how a small bridge turns it into a WhatsApp reminder.

Daniel Roth7 min read

Send WhatsApp Reminders for Calendly Bookings (API)
On this page

Someone books a call on Calendly and you want a WhatsApp confirmation, then a reminder the day before. This guide shows what Calendly sends when a booking happens, where the phone number comes from, and the bridge step that calls the Blueticks API. Every Calendly rule below was read on 2026-11-12.

How does a Calendly booking turn into a WhatsApp message?

Calendly posts a webhook to a URL you choose when an invitee books or cancels. A small bridge, built in Zapier, Make or n8n, receives it and makes the Blueticks send call. Calendly does not send WhatsApp messages itself, so the bridge is what connects the two.

  1. Create a Calendly webhook subscription for invitee.created and invitee.canceled.
  2. Point it at a bridge: a Zapier Catch Hook, a Make custom webhook or an n8n Webhook node.
  3. In the bridge, read the invitee's name, phone number and the event start time.
  4. Send a confirmation through the Blueticks API, then schedule a reminder with sendAt.
  5. Test with your own number and your own booking before real invitees see it.

Common mistake: assuming the phone number is always in the payload. Calendly marks text_reminder_number as nullable, so a booking can arrive without one.

What does Calendly send when someone books?

Calendly's webhook guide says payloads go to your endpoint in real time when events are scheduled or canceled. The invitee.created event covers scheduled events, and invitee.canceled covers canceled ones. Subscribe to both, so the bridge hears about every booking and every cancellation.

The payload holds the invitee's name and email, a text_reminder_number, and a scheduled_event object that includes start_time in UTC. Calendly's API page says the events used here are available on all plans, including Free, while routing form, meeting recap and contact events need a plan that includes the feature.

Where does the phone number come from?

The invitee object has a text_reminder_number field, described as the number used for text (SMS) reminders, and it can be null. Calendly does not say why it is null. Its webhook guide says you can call the invitee URI from the payload to get invitee details, and the invitee reference lists the answers to booking form questions as questions_and_answers.

So one option is a phone question on your booking form, then reading its answer from questions_and_answers. Map the number into international format with a plus before it goes to Blueticks. Only message people who gave you the number for this purpose.

What does the Blueticks send call need?

One HTTPS request. The recipient is the last path segment, the key goes in the Authorization header, and the body says what to send. Any tool that can make an HTTPS request can send it. The fields are covered one by one in the n8n, Make and Zapier guide.

PartValue
MethodPOST
URLhttps://api.blueticks.co/v1/scheduled-messages/+5511987654321
HeaderAuthorization: Bearer bt_live_YOUR_KEY_HERE
BodyJSON with type and text; sendAt is optional

Calendly's docs describe a webhook that posts to a URL, with an optional signing key. They do not describe adding a Bearer header or putting a field in the URL path, so the bridge builds the Blueticks request. The own-number REST API guide explains the key.

How do you schedule the reminder?

Add sendAt to the body: an ISO 8601 timestamp with an offset. Blueticks accepts it at least 10 seconds ahead and up to 365 days out. For a reminder the day before, take start_time from the payload and subtract 24 hours in the bridge.

If the booking starts in less than 24 hours, that time is already past, so skip sendAt and send the reminder now or skip it. Each request is one send, so the confirmation and the reminder are two requests. The response includes an id, which you can store.

What happens when the invitee cancels or reschedules?

Calendly's guide says that when an invitee reschedules, both invitee.created and invitee.canceled fire. The canceled payload carries true on its rescheduled key, while a plain cancellation shows false. The created payload is for the new event, so your bridge should treat the pair as one change.

Match the cancellation to the booking by the invitee URI in the payload, which is your own matching rule, then cancel the queued reminder using the id you stored. Without that step, a reminder for a canceled call still goes out. Cancel with POST /v1/scheduled-messages/{id}/cancel, which works while the message is still pending; the Node.js bot guide shows it. Editing a pending message is in the REST API guide.

What are the API limits, and does WhatsApp need to be on?

On a free plan, the Blueticks API allows 5 requests per 6-hour window, shared with MCP. Any active subscription lifts that limit. A request over the free limit gets a 429 response, so a busy calendar can hit it quickly.

Sending needs a connected engine: the browser extension with your browser open, or the always-on Gateway on the Pro plan. If none is connected, the API can accept the message and return a no_engine_connected warning. The message then stays pending until an engine connects.

What if Calendly sends the same event twice?

Calendly's docs say a failing endpoint keeps being retried for 24 hours with a growing delay, and after that the webhook is disabled if another message fails, so you have to recreate it. They also give a 10 second connection timeout and a 15 second read timeout, and advise acknowledging fast and working asynchronously.

So answer Calendly right away, then do the send. Keep a record of the invitee URIs you already handled, so a retry does not send a second message. Idempotent automated sends covers the pattern.

How do you get delivery status back?

Register a Blueticks webhook for the events you need, such as message.delivered, message.failed and message.read, and point it at a second bridge flow. message.read is best effort, so do not build logic on it. Registration, signing and parsing are covered in the webhooks guide. Pace the sends if many bookings can land at once, and start with your own number.

FAQ

Is there a native Blueticks app for Calendly?

No native Calendly app is documented here. You connect through the HTTP API with a bridge such as Zapier, Make or n8n.

Do I need a paid Calendly plan for the webhook?

Calendly's API page says the booking and cancellation events are available on all plans, including Free. Check your own plan on that page, because Calendly can change it.

Can I skip the bridge?

Calendly's webhook docs do not describe a Bearer header or a path field, so a bridge is the documented route.

Where does the API key go?

In the bridge, as an Authorization header with the word Bearer first. Do not paste it into a field that colleagues can read.


Sources read on 2026-11-12: Calendly's developer pages on webhook subscriptions, webhook payloads for rescheduled events, webhook errors and timeouts, and the Get Event Invitee and sample webhook data references; the Blueticks send endpoint, rate limit and engine warning in existing Blueticks guides. Blueticks is not affiliated with Calendly, WhatsApp or Meta.

Share this article

The Dispatch, every week.

One sharp WhatsApp growth tactic in your inbox each week. Joined by 238,000+ founders, marketers and support leads.

Free forever. No spam, unsubscribe in one click.

Also on TikTok: @blueticksagents