Calendly integration: bookings promote leads to meeting-booked
A Calendly webhook tells ZenMode when a prospect books, and the lead is promoted to meeting_booked automatically.
Verified against the product on September 3, 2026 · Updated · Set up in /dashboard/settings
What this integration is
Calendly is an inbound webhook: Calendly does the talking, ZenMode listens. There is no OAuth connection and no API key to paste. Instead, the Calendar section of ZenMode's settings shows you a webhook URL that is unique to your account — it carries a per-user token and tells ZenMode which provider is posting — and you register that URL inside Calendly as a webhook destination.
When a prospect books a slot, Calendly posts the booking to that URL and ZenMode marks the matching lead as booked. That is the entire integration: one URL, one direction, one outcome. Calendly is one of four providers ZenMode parses properly, alongside Cal.com, Acuity Scheduling and HubSpot Meetings.
What it triggers
| Direction | Event | What ZenMode reads | What it does |
|---|---|---|---|
| Calendly to ZenMode | invitee.created | the invitee's name and email from the payload | promotes the lead's status to meeting_booked and stamps meeting_booked_at |
Two things are worth reading twice. First, only the invitee's name and email are taken from the payload — not the event type, not the slot time, not the invitee's answers to your booking questions. ZenMode uses them to identify the person, not to mirror your calendar.
Second, the promotion is one-way. A lead sitting at an earlier stage moves forward to
meeting_booked; a lead already further along is never knocked backwards by a booking, and a later
cancellation or reschedule does not walk the status back either.
Matching the booking to a lead happens in two ways: the signed token carried on the tracked booking link the prospect clicked, and — where there is no token — a fallback match on the invitee's name. If a prospect books under a name that does not resemble their LinkedIn profile and never clicked your tracked link, the booking arrives with nobody to attach it to.
How to set it up
- Open the Calendar section of ZenMode's settings. It shows a webhook URL with per-provider instructions beside it.
- Choose Calendly and copy the URL shown for it. The URL contains a token that is yours alone, so treat it like a password and do not share it — anything holding it can post bookings to your account.
- In Calendly, create a webhook subscription pointing at that URL and subscribe it to the invitee.created event.
- Book a slot on your own link as a test, and confirm the lead in ZenMode flips to
meeting_booked.
Attribution works best when prospects reach Calendly through the tracked booking link ZenMode serves through its own redirect — that is what carries the signed token the webhook matches on, and it is what saves the match from resting on the invitee's name alone.
When it runs
It fires on the booking, when Calendly sends it — there is no polling, no nightly job and no manual
sync to press. Because this webhook comes into ZenMode, the properties that describe ZenMode's
outbound webhooks do not apply here: there is no 10-second delivery timeout on your side and no
X-ZenMode-Signature header to verify, since ZenMode is the receiver. What authenticates the
delivery is the token embedded in the URL you pasted into Calendly. A request that names a provider
ZenMode does not parse is rejected outright.
What it's useful for
The point is that nobody has to tag anything. A prospect who accepts a connection request, replies,
and then books a slot ends up marked meeting_booked in ZenMode with a timestamp, without a rep
remembering to update a row — which is what makes "meetings booked" usable as an outcome number
rather than a hand-maintained one.
It also closes the loop on a campaign. Because attribution runs off the tracked booking link, a meeting can be traced back to the sequence that produced it instead of appearing as a booking from nowhere.
What it doesn't do (yet)
invitee.createdis the only event read. Cancellations, reschedules and no-shows are not reflected in ZenMode.- Nothing goes the other way. ZenMode never creates, edits, reads or cancels events in Calendly, and it does not know your availability.
- Only name and email are stored from the payload. Meeting time, duration, event type and custom question answers are not imported.
- A booking with no token and no name match attaches to nobody, and stays unattributed.
- Only four providers get real booking detection: Calendly, Cal.com, HubSpot Meetings and Acuity Scheduling. Microsoft Bookings, Google Calendar, Chili Piper and SavvyCal are link-only — you can paste your booking link and ZenMode tracks the click, but there is no automatic booking detection for them at all.
FAQ
Which plans include the Calendly webhook?
All plans. Booking detection carries no tier gate — every ZenMode plan can paste the tokenized URL into Calendly.
Does it need my LinkedIn password?
No. Calendly posts booking data to a ZenMode URL; nothing in the exchange involves LinkedIn credentials, and no ZenMode integration ever asks for them.
Is it two-way?
No. Calendly writes to ZenMode and ZenMode writes nothing back. Your Calendly account, event types and availability are untouched.