n8n Tutorial: Demo Booked → Rep Prep Email + HubSpot Note + Slack Alert Automation
A prospect just picked a time on your Calendly demo link. The clock is now running against you. Industry data is brutal here: reps who prepare with real context close demos at a materially higher rate
A prospect just picked a time on your Calendly demo link. The clock is now running against you. Industry data is brutal here: reps who prepare with real context close demos at a materially higher rate than reps who walk in cold — and the difference between a booked demo and a closed deal often comes down to the 30 minutes of prep that never happened. In most sales orgs, that prep doesn't happen because nobody knew the demo was booked until it appeared on the calendar an hour before. This n8n workflow closes that gap: the instant a demo is scheduled, your rep gets a briefing email, HubSpot logs a timeline note, and your sales channel in Slack lights up.
The problem: the booking-to-prep gap kills demo conversion
The moment between "prospect booked" and "rep shows up" is where deals quietly die. Here's what typically happens without automation: Calendly sends a generic confirmation, the event lands on a shared Google Calendar, and that's it. The rep discovers the demo when a reminder pops up. They have no idea who this person is, what company they're from, what pages they visited, or whether HubSpot already has an open deal with them.
So the rep improvises. They pull up the CRM in the first two minutes of the call, ask questions the prospect already answered in the booking form, and burn goodwill by looking unprepared. Meanwhile, the sales manager has zero visibility — they can't jump in, can't reassign a hot lead, and can't coach because they didn't know the demo existed.
The failure isn't effort. Your reps are willing to prep. The failure is that the booking signal never gets routed to the three places it needs to go — the rep's inbox with context, the CRM record, and the team channel — fast enough to matter. Manual routing doesn't scale past a handful of demos a week, and it breaks completely the moment someone is on PTO.
The solution: one trigger, three synchronized actions
This workflow treats a Calendly booking as a single event that fans out into three parallel outcomes. The architecture is deliberately simple so it stays reliable:
- Rep Prep Email — a formatted briefing sent to the assigned rep with the prospect's name, company, email, booking questions, meeting time, and a direct link to the HubSpot record.
- HubSpot Note — a timeline engagement logged against the contact so the entire history lives in the CRM, not in someone's inbox.
- Slack Alert — a message to your
#salesor#demoschannel so managers and SDRs have real-time visibility and can react.
Because all three fire off the same trigger, there's no polling, no delay, and no chance of one channel getting the update while another goes stale. The prospect books, and within seconds everyone and every system that needs to know, knows.
Step-by-step: building it in n8n
Here's the exact node structure. The whole flow is five nodes and takes about 20 minutes to wire up.
1. Calendly Trigger node
Start with the Calendly Trigger node and select the invitee.created event. Authenticate with a Calendly Personal Access Token (Calendly's v2 API deprecated the old API keys — use OAuth or a PAT). This node registers a webhook with Calendly automatically, so no manual webhook setup is needed. When someone books, it emits a payload containing payload.invitee.name, payload.invitee.email, payload.event.start_time, and any custom questions_and_answers from your booking form.
2. Set node — normalize the data
Add a Set (Edit Fields) node to map the raw Calendly payload into clean variables. Create fields like prospect_name, prospect_email, company (pull from a custom question or parse the email domain), meeting_time, and notes. Use an expression such as {{ $json.payload.invitee.name }}. This keeps your downstream nodes readable and makes the flow easy to debug — you configure the mapping once here instead of digging through nested JSON in three places.
3. HubSpot node — find contact and log the note
Use the HubSpot node with the Contact → Get / Search operation, filtering by prospect_email, to retrieve the contact ID. If the contact might not exist yet, set the operation to Create or Update so you never lose the record. Then chain a second HubSpot node with the Engagement → Create operation, type NOTE, associating it with the returned contact ID. Write the note body with an expression that includes the meeting time and the booking answers: Demo booked for {{ $json.meeting_time }}. Questions: {{ $json.notes }}. Authenticate with a HubSpot Private App token scoped to crm.objects.contacts.
4. Send Email node — the rep briefing
Add a Send Email node (SMTP) or the Gmail/Microsoft Outlook node depending on your stack. Set the recipient dynamically — either a static rep address or, better, a round-robin/owner lookup from HubSpot's contact owner field. Build an HTML body with the prospect details, the questions they answered, and a clickable link back to the HubSpot record: https://app.hubspot.com/contacts/YOUR_PORTAL/contact/{{ $json.contactId }}. Give it a subject that grabs attention in a busy inbox, like Demo booked: {{ $json.prospect_name }} ({{ $json.company }}) — {{ $json.meeting_time }}.
5. Slack node — team alert
Finish with the Slack node, operation Message → Post, targeting your sales channel. Use Block Kit formatting for a clean card: prospect name, company, meeting time, and a button linking to HubSpot. Authenticate via a Slack app OAuth token with the chat:write scope. Connect nodes 3, 4, and 5 to run in parallel off the Set node so no single channel blocks the others.
Benefits: what changes the day you turn this on
The payoff shows up immediately and compounds over time:
- Reps walk in prepared. Every briefing arrives with full context the moment the demo is booked, so prep happens on the rep's schedule instead of in the first two panicked minutes of the call.
- Nothing lives in one person's head. The HubSpot note means the entire booking history is in the CRM — searchable, reportable, and safe when someone leaves or goes on vacation.
- Managers get real-time visibility. The Slack alert lets leadership reassign hot leads, coach in the moment, or simply feel the pulse of the pipeline without asking for updates.
- It scales to zero marginal effort. Whether you book 5 demos a week or 500, the workflow costs the same and never forgets a step.
- Faster follow-up. Because the signal is instant, reps can send a personalized pre-demo message within minutes — the single highest-leverage move for reducing no-show rates.
Common pitfalls and how to avoid them
Calendly authentication drift. Personal Access Tokens don't expire the way OAuth tokens can, but if you use OAuth, add error handling so an expired token pauses the flow loudly instead of silently dropping bookings. Test the trigger with a real test booking, not just the n8n "listen" button.
Missing HubSpot contacts. If you filter by email and the contact doesn't exist, the engagement node throws an error and the whole run fails. Always use Create or Update upstream, or add an IF node to branch on whether the contact was found.
All-or-nothing failure. By default, if the HubSpot node errors, the email and Slack nodes never run. Set each node's Continue On Fail setting (Settings → On Error → Continue) so a HubSpot hiccup doesn't cost you the rep briefing. The demo prep matters more than the log entry.
Timezone confusion. Calendly returns start_time in UTC. Format it into the rep's local timezone in the Set node using an expression like {{ DateTime.fromISO($json.payload.event.start_time).setZone('America/New_York').toFormat('ff') }}, or your reps will show up an hour off.
Noisy Slack channels. If you already pipe everything into #sales, these alerts get buried. Create a dedicated #demos-booked channel and use threading or emoji reactions so reps can claim demos without cluttering the feed.
Wire these five guardrails in from the start and this becomes a set-and-forget system: every demo booked, every rep prepped, every record logged, every manager in the loop — automatically.
Ja construimos isso pra voce
Nao comece do zero. O Demo Booked → Rep Prep Email + HubSpot Note + Slack Alert e um workflow n8n pronto para instalar — conecta suas ferramentas em minutos, sem codigo.
Instalar por $29 →