Automate Calendly webhooks in Make.com to post booking and cancellation alerts to Slack, including invitee, start time, and meeting link.
Introduction
If your Calendly bookings are landing in email, spreadsheets, or a random mix of notifications, the result is always the same: people miss updates, cancellations get discovered late, and nobody trusts the “latest” status.
In this guide, you will build an XPA that sends real-time Calendly booking and cancellation alerts into Slack. When you finish, you will know exactly how to trigger from Calendly, format the payload, and post to Slack reliably.
What You'll Need
- Calendly account with permission to create webhook subscriptions.
- Slack workspace, with permission to post to the target channel.
- Make.com account (paid plan may be required depending on execution volume and your use of scenario runs).
- A Slack channel to post to, for example #appointments.
You will also reference the general XPA approach here: Cross-Platform Automation (XPA).
How It Works (The Logic)
Calendly sends an event to a webhook endpoint when something changes, like Invitee Created or Invitee Canceled. Make.com receives that webhook payload, extracts the fields you care about (invitee, start time, meeting link), formats a Slack message, then posts it to your chosen Slack channel.
Step-by-Step Setup
1) Pick your Slack “single source of truth” channel
Choose the channel your team already watches, for example #appointments.
- Decide whether to post to a public channel or a private one.
2) Create the Slack connection in Make.com
- In Make.com, add the Slack connection under your user profile.
- Make sure your Slack app can post messages to your chosen channel.
Gotcha to watch: if Make has a connection but posting fails, it is usually permissions or channel targeting (wrong channel, or missing bot permissions).
3) Create Calendly webhook subscriptions
In Calendly:
- Create webhook subscriptions for these event types:
- Invitee Created
- Invitee Canceled
- Point both subscriptions at the webhook URL that you will get from Make.com in the next step.
4) Create a Make.com scenario with a Webhook trigger
- In Make.com, create a new scenario.
- Add module: Webhooks > Custom webhook.
- Save the scenario and copy the generated webhook URL.
- Paste that URL into your Calendly webhook subscriptions.
Gotcha to watch: if you ever duplicate or recreate the scenario, the webhook URL changes. Update Calendly or you will get silent failures.
5) Branch logic by event type (new booking vs cancellation)
Add routing in Make so you can format the Slack message differently.
- Use the event type field that comes in the webhook payload.
- Create two paths:
- Path A: Invitee Created
- Path B: Invitee Canceled
6) Map fields into a clean Slack message
In each path, add a Slack action such as Post a message.
For the Invitee Created Slack message include:
- A header like
✅ New booking - Invitee name
- Start time (formatted in the timezone your team uses)
- Meeting link (Zoom/Teams link, location, or Calendly event URI depending on what your payload contains)
For the Invitee Canceled Slack message include:
- A header like
❌ Booking canceled - Invitee name
- Start time
- Meeting link or event reference (whatever is present in the payload)
Gotcha to watch: timezone handling. If your Slack message shows the wrong time, fix the timestamp formatting inside Make before posting.
7) Add a simple filter to reduce noise
If you only want specific bookings announced, add a filter module after the webhook trigger. Examples:
- Only notify when the event name equals your consult type.
- Only notify when invitee email domain matches your target.
Keep this filter simple, one condition is usually enough.
8) Test with two real webhook events
- Trigger Invitee Created from Calendly, then confirm Make receives the payload.
- Confirm a Slack message appears in the correct channel.
- Trigger Invitee Canceled for the same booking, then confirm the cancellation message posts.
9) Turn on monitoring and check execution logs
Keep the scenario enabled and watch Make’s execution history.
- If a Slack post fails, check:
- Slack connection
- Bot permissions for the channel
- That the scenario mapping does not reference an empty field
Real-World Business Scenario
An appointment-heavy services business (consulting and onboarding calls) had two issues:
- People missed new bookings because they were buried in email.
- Cancellations were discovered too late, which created wasted staff time.
They implemented this Make.com + Calendly webhook + Slack XPA. Invitee Created and Invitee Canceled now post concise alerts to #appointments with the start time and the meeting link. Admin work dropped, and the team stopped “checking everywhere” because Slack became the operational feed.
Common Variations
-
Route by event type to different channels
- Post consult bookings to #consults, interviews to #interviews, demos to #demos.
-
Write a log to Google Sheets
- After the Slack post, append a row with invitee email, start time, status, and the Slack message reference timestamp.
-
Create tasks in ClickUp or Monday.com
- On Invitee Created, create a task assigned to the right person, include the meeting link, and use Slack as the notification surface.
Getting this wired
You built a practical, simple XPA: Calendly webhooks trigger a Make.com scenario, Make formats booking data, and Slack receives consistent alerts for both new bookings and cancellations.
Olmec Dynamics builds these exact integrations for teams that want less admin and more reliable handoffs. If you want this adapted to your exact Calendly event types, Slack channels, and routing rules, you can see what we do here and explore Cross-Platform Automation (XPA).
Internal note: no related Olmec Dynamics posts were found for this exact Calendly to Slack topic during the search step.