Automate Calendly Cancelled → HubSpot Update + Reschedule Email in n8n — Step by Step
A prospect books a demo through Calendly, then cancels 20 minutes before the call. What happens next in most sales stacks? Nothing. The meeting vanishes from your calendar, HubSpot still shows the dea
A prospect books a demo through Calendly, then cancels 20 minutes before the call. What happens next in most sales stacks? Nothing. The meeting vanishes from your calendar, HubSpot still shows the deal as "Meeting Scheduled," and the prospect — who had real intent — drifts away without a single follow-up. That silent gap between a cancellation and a re-engagement is where pipeline dies. This guide shows you how to close it with a self-running n8n workflow that updates HubSpot the instant a Calendly event is cancelled and fires off a reschedule email with a direct booking link, no human in the loop.
The Problem: Cancellations Are Silent Pipeline Leaks
Calendly cancellations are not the same as rejections. A cancellation usually means "not now," not "never." The prospect had enough interest to book in the first place — a conflict, a fire drill, or a bad day got in the way. But your CRM does not know any of that. Left alone, three things break at once:
- HubSpot goes stale. The contact or deal still reads "Meeting Booked" while the meeting no longer exists. Your forecast is now wrong and your reps are working a mirage.
- Follow-up depends on memory. Someone has to notice the cancellation email, remember to reach out, and manually send a new link. On a busy team, that happens maybe 30% of the time — and always late.
- Speed collapses. The window to re-book is measured in hours, not days. A reschedule nudge sent two days later competes with a prospect who has already moved on.
Multiply one dropped cancellation by every rep, every week, and you are quietly leaking qualified meetings that you already paid to generate.
The Solution: An Event-Driven Reschedule Loop
The fix is an event-driven workflow that treats a cancellation as a trigger, not an ending. The moment Calendly reports an invitee.canceled event, n8n does three things in under a second:
- Reads the canceled invitee's email and event details from the Calendly webhook payload.
- Finds the matching HubSpot contact and updates it — deal stage, a lifecycle property, or a custom "Meeting Status" field — so the CRM reflects reality.
- Sends a personalized reschedule email containing a direct Calendly booking link, so the prospect can re-book in one click.
Because it is webhook-driven, there is no polling, no delay, and no cron job to babysit. The prospect gets a warm "no problem, grab another time" message while their intent is still fresh — and HubSpot never lies to your pipeline again.
Step-by-Step Setup in n8n
Here is the full build. It uses four core nodes: a Webhook trigger, an IF node, a HubSpot node, and an email node (Send Email via SMTP or the Gmail node). Total build time is about 20 minutes.
1. Capture the cancellation with a Webhook node
Add a Webhook node set to POST. Copy its production URL. In Calendly, go to your account's Webhook Subscriptions (via the Calendly API or the Integrations settings) and register that URL for the invitee.canceled event. Now every cancellation POSTs a JSON payload straight into n8n. The key fields you will use live at {{$json.payload.email}}, {{$json.payload.name}}, and {{$json.payload.scheduled_event.name}}.
2. Filter for genuine cancellations with an IF node
Add an IF node right after the webhook. Calendly can send several event types to one subscription, so confirm you are acting only on cancellations. Set the condition to check that {{$json.event}} equals invitee.canceled. This guard keeps reschedules and new bookings from accidentally triggering the update-and-email path.
3. Update the record with the HubSpot node
On the IF node's true branch, add a HubSpot node. Authenticate with a Private App token (Settings → Integrations → Private Apps → create a token with crm.objects.contacts.write scope). Configure:
- Resource: Contact
- Operation: Create or Update (upsert by email)
- Email:
{{$json.payload.email}} - Fields to update: set a custom property such as
meeting_statustoCancelled, and optionally push the deal back a stage. Use "Create or Update" so a missing contact does not throw an error.
If you manage deals rather than contacts, chain a second HubSpot node using the Deal resource and search by the associated contact to move the deal stage.
4. Send the reschedule email
Add a Send Email (SMTP) or Gmail node after HubSpot. Configure the fields with expressions so every message is personal:
- To:
{{$json.payload.email}} - Subject:
Still want to talk, {{$json.payload.name}}? Grab a new time - Body (HTML): a short, warm note — "Totally understand things come up. Whenever you're ready, pick a new slot here:" followed by a direct booking link to your Calendly event type, e.g.
https://calendly.com/your-name/demo.
Keep the email under 60 words. One clear sentence, one link, one call to action. The lower the friction, the higher the re-book rate.
5. Activate and test
Toggle the workflow to Active so the production webhook goes live. Book a test meeting on your own Calendly, then cancel it. Within seconds you should see the execution appear in n8n, the HubSpot contact flip to Cancelled, and the reschedule email land in your inbox. Check the execution log for any red nodes and fix mappings before going live for real prospects.
The Benefits: Faster Re-Books, Cleaner Data
Once this loop is running, the payoff compounds:
- Instant re-engagement. Prospects get the reschedule link while intent is still warm — response rates on same-hour nudges beat next-day follow-ups by a wide margin.
- A CRM you can trust. HubSpot always reflects the true state of every meeting, so your forecast and reporting stop lying to you.
- Zero manual work. No rep has to watch for cancellation emails or remember to resend links. The system does it every single time, 24/7.
- It scales for free. One cancellation or a hundred a day — the workflow handles the same. Your process no longer depends on someone's attention span.
Common Pitfalls (and How to Avoid Them)
- Skipping the IF filter. If you wire the webhook straight into HubSpot, non-cancellation events will trigger false updates. Always gate on
invitee.canceled. - Wrong webhook mode. The Test webhook URL only listens while you have the editor open. Register Calendly against the Production URL and keep the workflow Active, or events silently disappear.
- Under-scoped HubSpot token. A Private App token without
crm.objects.contacts.writereturns a 403. Grant the write scope up front. - Emails landing in spam. Send from an authenticated domain (SPF/DKIM set up) rather than a raw SMTP relay. The Gmail node with OAuth is the safest quick start.
- No error path. Add an Error Trigger workflow or a Slack notification node so a failed HubSpot lookup does not fail silently. You want to know when a cancellation slips through.
- Overwriting good data. Use "Create or Update" and only touch the meeting-status property — don't blanket-overwrite lifecycle stage and undo other automations.
That is the entire system: a cancellation stops being a dead end and becomes an automatic second invitation, with your CRM kept honest along the way. Build it once, and every future cancellation quietly works to win the meeting back for you.
Ja construimos isso pra voce
Nao comece do zero. O Calendly Cancelled → HubSpot Update + Reschedule Email e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $39.0 →