Meetings
Calendly / Cal.com scheduling, booking links, and the meetings timeline.
Booked calls are a first-class part of your pipeline: they appear on the Meetings page and the contact's timeline live, and can trigger automations.
Meetings arrive two ways. Auto, when a prospect self-books through a connected Calendly or Cal.com link, captured over that provider's webhook. Manual, when you log a call yourself with New meeting, created instantly with no external redirect.
The Meetings page
Live-updating, in the CRM section. Four counts sit on top, computed across all meetings rather than loaded rows: Upcoming, Today, Total booked, and Canceled. Timeframe tabs narrow to Upcoming, Past, or All, and search matches contact name, email, or event name.
Each row shows the time, who it is with, the meeting name and location, its source (Manual, Calendly, Cal.com), and a status:
| Status | Meaning |
|---|---|
| Booked | Scheduled |
| Rescheduled | The invitee moved it |
| Canceled | Called off |
| Completed | It happened |
| No-show | The invitee did not attend |
Row actions: Add to your calendar (a Google Calendar template or an .ics download, built locally with no calendar connection needed), Join call, Reschedule and Cancel for provider-booked calls, and Delete for manual ones.
Reschedule and cancel happen on the provider
For auto-booked calls those buttons hand off to Calendly or Cal.com. Warmbly does not move the call itself; it reflects the change when the webhook returns.
Logging a call manually
New meeting asks for a title (defaults to "Call"), contact name and email (at least one required), when (defaults to the next hour), duration (5 to 480 minutes, default 30), and optional location and meeting link.
The meeting links to a contact by matching the email. Opened from somewhere a contact is already in view, it locks to that contact so attribution is exact.
Connecting Calendly or Cal.com
Connection is webhook-based, not OAuth. From Integrations:
- Add the Calendly or Cal.com integration. Warmbly mints an inbound webhook URL.
- Paste it into the provider's webhook settings and subscribe to the events:
- Calendly:
invitee.created,invitee.canceled - Cal.com:
BOOKING_CREATED,BOOKING_RESCHEDULED,BOOKING_CANCELLED
- Calendly:
The connection shows as connected as soon as the URL exists.
The inbound URL is a shared secret
It contains a long random secret that authenticates incoming bookings, so treat it as a credential. Rotate it from the connection settings if exposed, then re-paste the fresh URL into the provider.
Bookings map to booked, rescheduled, and canceled states. Calendly models a reschedule as a cancel plus a new booking; Warmbly understands this and shows one Rescheduled event rather than a stray cancellation. Inbound bookings are idempotent, so a re-delivered event updates the existing meeting instead of duplicating it.
Attribution resolves in order: by the contact id carried in the booking link (confirmed to belong to your workspace), which survives the prospect booking under a different email; then by matching the invitee's email. If neither resolves, the meeting still appears, just untied to a contact.
Booking links
Save your public scheduling URL (https://calendly.com/you/intro) under the connection's Booking link settings, and contextual buttons appear wherever a contact is in view:
- Book a call on contact detail and Unibox threads opens your page in a new tab, prefilled with the contact's email and name, offering a picker if several links are connected.
- Booking link in the Unibox composer drops the prefilled link into your reply.
Booking from a contact-specific place embeds that contact's id as utm_content. Both providers echo it back in the webhook, which is what lets a self-booked call attribute correctly even under a different email.
No saved link, no button
These buttons only render with a connected provider and a saved link, so they never appear dead.
Automations
Meeting events drive Automations: booked, rescheduled, and canceled are notification triggers (Slack, Discord, Zapier, Make, n8n), while booked and canceled are also CRM triggers (HubSpot, Salesforce, Pipedrive, Close). So one flow can post "Meeting booked" to Slack and upsert the contact into your CRM every time a prospect books.