Platform
Chatbot Builder Bulk Messaging Team Inbox Mini CRM API & Webhooks AI Integration WhatsApp Flows
Industries
E-commerce & D2C Real Estate Education Healthcare Finance & BFSI Logistics Hospitality Retail
Integrations
Learn
Learning Hub Help & Docs Connect Guides Automation Codex Blog Message Templates
Pricing Start Free Trial →
HomeConnect › Connect Calendly to WhatsApp
Calendly Integration Guide · Forms / Productivity

Connect Calendly to WhatsApp

Send an instant WhatsApp confirmation to every new Calendly booking, alert your team the moment a slot is taken, and handle cancellations automatically. Calendly has native webhook support, so no third-party tools or code are required.

Published 23 June 2026  ·  6 min read  ·  Forms / Productivity
Calendly has native webhooks: no Apps Script or code needed

Unlike Google Calendar and Google Sheets, Calendly fires webhooks natively. When someone books, Calendly POSTs the booking details to a URL you specify. No third-party connector, no Apps Script, no API key in WA.Expert. Just register your WA.Expert webhook URL in Calendly's Integrations panel.

API v1 was discontinued in May 2025

Calendly's API v1 and its webhooks were shut down in May 2025. This guide uses API v2 only. If you have any v1 webhook integrations, they have stopped working and need to be rebuilt using v2.

Webhooks require Standard plan or above

Calendly's Free plan does not include webhook support. You need the Standard plan or higher to register webhook subscriptions. If you are on Free, you can use a Zapier step as an alternative connector.

Step 1: Add a WhatsApp Number question to your event type

Calendly does not collect phone numbers by default. Add a custom question so the invitee's WhatsApp number appears in the webhook payload.

1
In Calendly, go to Event Types and click edit on the event type you want to connect.
2
Open the Invitee Questions section and click Add a question.
3
Add a question with the label "WhatsApp Number", type Phone (or Text), and mark it Required. Save the event type.
Label the question consistently

The question label you use here appears in the webhook payload. If you label it 'WhatsApp Number', the payload will have "question": "WhatsApp Number". Note this exactly; you will use it to extract the phone number in WA.Expert.

Step 2: Get your WA.Expert webhook URL

In WA.Expert, create a new automation and set the trigger to Inbound Webhook. Copy the unique webhook URL from the trigger settings. This is the URL Calendly will POST to.

Step 3: Register the webhook in Calendly

Option A: via the Calendly UI (simpler)

1
In Calendly, go to Integrations → Webhooks.
2
Click New Webhook.
3
Paste your WA.Expert webhook URL, select invitee.created (and optionally invitee.canceled), and save.

Option B: via the Calendly API

If you want to automate the registration, use the API. First get your organisation URI, then register the webhook.

Step 1: get your organisation URI
GET https://api.calendly.com/users/me
Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN

Response:
{{
  "resource": {{
    "uri":                  "https://api.calendly.com/users/AAAA",
    "current_organization": "https://api.calendly.com/organizations/BBBB"
  }}
}}

Copy: resource.current_organization -> use as the organization value below.
Step 2: register the webhook subscription
POST https://api.calendly.com/webhook_subscriptions
Authorization: Bearer YOUR_PERSONAL_ACCESS_TOKEN
Content-Type: application/json

Body:
{{
  "url":          "YOUR_WA_EXPERT_WEBHOOK_URL",
  "events":       ["invitee.created", "invitee.canceled"],
  "organization": "https://api.calendly.com/organizations/BBBB",
  "scope":        "organization"
}}

Response (HTTP 201):
{{
  "resource": {{
    "uri":       "https://api.calendly.com/webhook_subscriptions/CCCC",
    "callback_url": "YOUR_WA_EXPERT_WEBHOOK_URL",
    "state":     "active"
  }}
}}

Personal access token from: Calendly → Integrations → API & Webhooks → Generate Token

Step 4: Map the webhook payload in WA.Expert

When someone books, Calendly sends a JSON payload like this to your WA.Expert webhook URL:

Calendly invitee.created payload (received by WA.Expert)
{{
  "event": "invitee.created",
  "payload": {{
    "event_type": {{"name": "30 Minute Consultation"}},
    "name":       "Priya Sharma",
    "email":      "priya@example.com",
    "status":     "active",
    "rescheduled": false,
    "calendar_event": {{
      "start_time": "2026-06-25T10:00:00Z",
      "end_time":   "2026-06-25T10:30:00Z"
    }},
    "questions_and_answers": [
      {{
        "question": "WhatsApp Number",
        "answer":   "+919820000001"
      }}
    ],
    "cancel_url":    "https://calendly.com/cancellations/...",
    "reschedule_url": "https://calendly.com/reschedulings/..."
  }}
}}

Map these to WA.Expert variables:
  payload.name                            -> customer_name
  payload.email                           -> customer_email
  payload.questions_and_answers[0].answer -> customer_phone
  payload.calendar_event.start_time       -> appointment_start
  payload.event_type.name                 -> event_type
  payload.cancel_url                      -> cancel_url
  payload.reschedule_url                  -> reschedule_url
  payload.rescheduled                     -> is_rescheduled

Key fields at a glance:

WA.Expert variablePayload pathExample value
customer_namepayload.namePriya Sharma
customer_phonepayload.questions_and_answers[0].answer+919820000001
customer_emailpayload.emailpriya@example.com
appointment_startpayload.calendar_event.start_time2026-06-25T10:00:00Z
event_typepayload.event_type.name30 Minute Consultation
cancel_urlpayload.cancel_urlhttps://calendly.com/cancellations/...
reschedule_urlpayload.reschedule_urlhttps://calendly.com/reschedulings/...
is_rescheduledpayload.rescheduledfalse (true on a rescheduled booking)

The questions_and_answers array index depends on the order of questions in your event type. If WhatsApp Number is the first question, use index [0]. If it is the second, use [1]. Check the payload in WA.Expert's test mode to confirm.

Worked example: booking confirmation and team alert

Full flow — Calendly booking to WhatsApp messages
1. Priya books a 30-minute consultation on your Calendly page.
   She enters her WhatsApp number: +919820000001.

2. Calendly fires the invitee.created webhook to WA.Expert.

3. WA.Expert receives the payload and maps variables:
   customer_name  = Priya Sharma
   customer_phone = +919820000001
   appointment_start = 2026-06-25T10:00:00Z
   event_type = 30 Minute Consultation

4. WA.Expert sends Priya a confirmation:
   'Hi Priya, your 30 Minute Consultation is confirmed for
    25 June at 10:00 AM IST.
    Need to reschedule? Tap here: {{reschedule_url}}'

5. WA.Expert sends your team an alert:
   'New booking: Priya Sharma (+919820000001)
    30 Minute Consultation — 25 June at 10:00 AM
    Email: priya@example.com'

Handling cancellations and reschedules

Subscribe to invitee.canceled to handle cancellations. A reschedule fires both an invitee.canceled (for the old slot) and an invitee.created (for the new slot). The new booking has rescheduled: true in the payload.

Calendly eventpayload.rescheduledWA.Expert action
invitee.createdfalseSend a booking confirmation to the invitee.
invitee.createdtrueSend a reschedule confirmation: 'Your appointment has been moved to...'.
invitee.canceledn/aSend a cancellation message and optionally re-engage: 'Your slot has been cancelled. Book again here: [link]'.

Troubleshooting

SymptomLikely causeFix
No webhook firingUsing old API v1 webhookRebuild the webhook in Calendly Integrations using v2. API v1 was discontinued May 2025.
Webhook not available in IntegrationsFree Calendly planWebhooks need Standard plan or above. Upgrade or use Zapier as a bridge.
Phone number missing from payloadWhatsApp Number question not addedEdit the event type and add a WhatsApp Number question (Required). Test with a new booking after saving.
Wrong phone at questions_and_answers indexMultiple custom questionsThe index depends on question order. Check the full payload in WA.Expert test mode to find the correct index for your WhatsApp Number question.
Reschedule sending duplicate confirmationsNot checking rescheduled fieldAdd a conditions step: if is_rescheduled = true, send a reschedule message; if false, send a new booking confirmation.
Webhook shows active but no messagesWA.Expert automation not publishedEnsure the WA.Expert automation is published (not in draft). The webhook URL only receives calls when the automation is live.

Common questions

Does Calendly have native webhooks?
+
Yes. Calendly fires webhooks for invitee.created, invitee.canceled, and routing_form_submission.created. Register them under Integrations → Webhooks. No code or third-party tools needed.
How do I get the invitee's WhatsApp number?
+
Add a WhatsApp Number custom question to the event type. It appears in questions_and_answers[N].answer in the payload.
Which plans support webhooks?
+
Standard and above. Free plan does not support webhooks.
What happens on a reschedule?
+
Two events fire: invitee.canceled (old slot) and invitee.created (new slot). The new booking has rescheduled: true. Branch your WA.Expert flow on this field.
Do I need to use the API to register a webhook?
+
No. You can do it in the Calendly UI under Integrations → Webhooks. The API method is optional for automated registration.
Does this incur extra WA.Expert charges?
+
Each WhatsApp message uses a message credit. Utility messages: Rs. 0.14 on Starter, same Meta rates on Complete. No charge for receiving the webhook.

Connect Google Calendar to WhatsApp

Create Google Calendar events from WhatsApp bookings using Apps Script.

Read guide →

Connect Typeform to WhatsApp

Typeform native webhooks: send WhatsApp messages when a form is submitted.

Read guide →

External API Request Step

Master every field in WA.Expert's HTTP action step.

Read foundation guide →

Connect Calendly to WhatsApp today

Free trial, no credit card. If you get stuck, we answer live on WhatsApp.

Start Free Trial → Book a Demo
1