Cal.com + Gmail: warm prospects before every call
Your calendar gets booked… and then the prospect shows up cold. No context, no prep, and sometimes no-show silence that wastes a clean 30 minutes you could’ve spent selling or servicing.
If you’re a consultant running discovery calls, a sales lead trying to lift show rates, or a founder juggling back-to-back demos, this Cal.com Gmail emails automation warms people up automatically so the call starts in motion, not in small talk.
This workflow watches for new Cal.com bookings, checks how far away the meeting is, then schedules a short email sequence through Gmail. You’ll see what it does, what you need, and where teams usually tweak it to match their voice.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Cal.com + Gmail: warm prospects before every call
flowchart LR
subgraph sg0["Cal.com Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/cal.dark.svg' width='40' height='40' /></div><br/>Cal.com Trigger"]
n1@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Calculate time"]
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Extract prospect"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Wait 1 Day", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Switch: Days Until Meeting", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Quick prep email", pos: "b", h: 48 }
n7@{ icon: "mdi:message-outline", form: "rounded", label: "Casual flex", pos: "b", h: 48 }
n8@{ icon: "mdi:message-outline", form: "rounded", label: "Casual press", pos: "b", h: 48 }
n9@{ icon: "mdi:message-outline", form: "rounded", label: "Casual knowledge flex", pos: "b", h: 48 }
n10@{ icon: "mdi:message-outline", form: "rounded", label: "Send it", pos: "b", h: 48 }
n11@{ icon: "mdi:cog", form: "rounded", label: "Wait another day", pos: "b", h: 48 }
n12@{ icon: "mdi:cog", form: "rounded", label: "Wait 1 Day1", pos: "b", h: 48 }
n13@{ icon: "mdi:message-outline", form: "rounded", label: "Casual flex 8+ days", pos: "b", h: 48 }
n14@{ icon: "mdi:message-outline", form: "rounded", label: "Casual press 8+days", pos: "b", h: 48 }
n15@{ icon: "mdi:cog", form: "rounded", label: "Wait another day 8+days", pos: "b", h: 48 }
n16@{ icon: "mdi:message-outline", form: "rounded", label: "Casual knowledge flex 8+days", pos: "b", h: 48 }
n17@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Quick prep email2", pos: "b", h: 48 }
n19@{ icon: "mdi:message-outline", form: "rounded", label: "Quick prep", pos: "b", h: 48 }
n20@{ icon: "mdi:message-outline", form: "rounded", label: "Quick prep +8days", pos: "b", h: 48 }
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Quick prep email (2)", pos: "b", h: 48 }
n22@{ icon: "mdi:cog", form: "rounded", label: "Wait1", pos: "b", h: 48 }
n1 --> n2
n17 --> n21
n22 --> n18
n4 --> n8
n7 --> n4
n12 --> n14
n8 --> n11
n2 --> n5
n0 --> n3
n3 --> n1
n6 --> n10
n11 --> n9
n18 --> n20
n13 --> n12
n14 --> n15
n21 --> n19
n9 --> n17
n15 --> n16
n5 --> n6
n5 --> n7
n5 --> n13
n16 --> n22
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n5 decision
class n2,n3 code
classDef customIcon fill:none,stroke:none
class n0,n2,n3 customIcon
The Problem: Booked calls that still feel “unbooked”
A meeting confirmation isn’t the same thing as commitment. People book quickly, then forget why they booked, what they should bring, or what will happen on the call. Meanwhile you’re guessing: Are they a fit? Do they understand the agenda? Will they even show? If you try to fix this manually, you end up sending one-off “prep” emails at random times, usually right before the meeting, usually while you’re already slammed. And honestly, the inconsistency is what kills results. Some prospects get nurtured. Others don’t.
It adds up fast. Here’s where it breaks down in the real world:
- You lose about 10 minutes per booking rewriting “quick prep” emails, then you do it again tomorrow.
- No-shows sting more when they’re preventable, especially on high-intent consult calls.
- Prospects arrive without the basics, so the first 10 minutes becomes calendar therapy instead of progress.
- Your follow-up cadence changes based on mood and workload, which means pipeline quality gets weirdly unpredictable.
The Solution: Cal.com-triggered warm-up emails in Gmail
This workflow turns every Cal.com booking into a timed “pre-call runway.” When someone books, n8n captures the prospect details, sanity-checks the email (so you don’t nurture obvious personal addresses if you don’t want to), and calculates how many days remain until the meeting. Then it routes the prospect into the right warm-up sequence based on lead time. If the meeting is soon, they get a tight set of emails that clarify the agenda and what to prepare. If the meeting is further out (8+ days), the cadence stretches out with natural spacing using Wait nodes, so you stay top-of-mind without sounding like a bot. The final output is simple: a few well-timed Gmail sends that make your calls sharper and your prospects more ready.
The workflow starts the moment a booking hits Cal.com. It decides which sequence to use by computing days remaining, then schedules and sends a series of pre-written warm-up messages via Gmail. Those waits are the quiet hero here, because timing is the difference between “helpful” and “spammy.”
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you book 12 Cal.com calls a week. Manually sending three warm-up emails (prep note, value teaser, insight nudge) takes maybe 5 minutes each time you write, tweak, and double-check details, which is about 15 minutes per prospect, or roughly 3 hours weekly. With this automation, your “work” is basically zero after setup: the booking triggers instantly, then n8n schedules the sequence in the background with Wait nodes. You get those 3 hours back, and the emails go out on time even when your day is chaos.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Cal.com to trigger automations from bookings
- Gmail to send the warm-up email sequence
- Cal.com API key (get it from Cal.com developer settings)
Skill level: Intermediate. You’ll mostly connect accounts and edit email copy, with light comfort around testing dates and waits.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A Cal.com booking kicks everything off. When a meeting is scheduled, the workflow receives the booking data and pulls out the prospect’s contact details you’ll use for the emails.
Prospect details are cleaned up and checked. It parses fields like name and email, then runs a simple check to confirm you’re dealing with a company email (useful if your offers are B2B and you don’t want to nurture personal inboxes).
Lead time decides the sequence. n8n computes how many days remain until the meeting, then a switch routes the prospect to the “short notice” path or the “8+ days” path. Same intent, different pacing.
Gmail sends the warm-up emails with natural spacing. Your prep email goes out, then a value teaser follows, then a background note and insight nudge. Wait nodes handle the timing so you don’t have to babysit it.
You can easily modify the email cadence to match your sales cycle based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Calendar Booking Trigger
This workflow starts when a new booking is created in Cal.com.
- Add the Calendar Booking Trigger node as the workflow trigger.
- Set Events to
BOOKING_CREATED. - Credential Required: Connect your calApi credentials.
Step 2: Connect Gmail for All Email Sends
Multiple Gmail nodes deliver the nurture sequence. Connect Gmail once and apply it across all email nodes.
- Open each Gmail node: Send Prep Email, Send Value Teaser, Send Background Note, Send Insight Nudge, Dispatch Prep Email, Send Value Teaser 8+, Send Background Note 8+, Send Insight Nudge 8+, and Dispatch Prep Email 8+.
- Credential Required: Connect your gmailOAuth2 credentials on each Gmail node.
- Confirm each Gmail node uses the attendee email field in Send To, e.g.
{{ $('Compute Meeting Lead Time').item.json.attendee_email }}.
Step 3: Set Up Prospect Parsing and Lead-Time Logic
These nodes extract booking data, validate company email, and calculate days until the meeting to route the sequence.
- In Parse Prospect Details, keep the provided JavaScript that extracts
attendee_email,company_name, andwebsite_urlfrom the Cal.com payload. - Configure Verify Company Email to check
{{ $json.is_company_email }}istrue. - In Compute Meeting Lead Time, keep the JavaScript that calculates
days_until_meetingusing{{ $('Parse Prospect Details').item.json.meeting_start_time }}. - In Route by Days Remaining, confirm the switch rules use
{{ $json.days_until_meeting }}with outputs0–1 days,2–7 days, and8+ days, and Fallback Output set tonone.
attendees or responses['Company-Name'], update Parse Prospect Details to match your payload structure.Step 4: Configure the Email Sequences and Delays
The workflow routes into three paths based on meeting lead time, then sends a timed sequence of emails with delays.
- For the
0–1 dayspath, verify Route by Days Remaining → Compose Prep Note → Send Prep Email, where Compose Prep Note sets email to the long JavaScript template and Send Prep Email uses{{ $json.email }}for the message. - For the
2–7 dayspath, confirm Route by Days Remaining → Send Value Teaser → Delay One Day A → Send Background Note → Delay Additional Day → Send Insight Nudge → Delay One Day B → Compose Prep Note B → Dispatch Prep Email. - For the
8+ dayspath, confirm Route by Days Remaining → Send Value Teaser 8+ → Delay One Day C → Send Background Note 8+ → Delay Additional Day 8+ → Send Insight Nudge 8+ → Delay One Day D → Compose Prep Note C → Dispatch Prep Email 8+. - In each wait node, set the intended delay, such as Delay One Day B with Unit
daysand Amount1, and Delay One Day D with Unitdaysand Amount1.
Step 5: Test and Activate Your Workflow
Run a controlled test to ensure the sequence routes correctly and all emails are delivered.
- Use Calendar Booking Trigger to send a test booking payload or run the workflow manually from the trigger node.
- Verify the output of Parse Prospect Details includes
attendee_email,company_name, andmeeting_start_time, and that Compute Meeting Lead Time outputsdays_until_meeting. - Confirm Route by Days Remaining sends the execution down the correct branch and that Gmail nodes show successful send logs.
- When satisfied, toggle the workflow to Active so it runs automatically on new bookings.
Common Gotchas
- Cal.com credentials can expire or need specific permissions. If things break, check your Cal.com API key and booking webhook settings first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 30 minutes if your Cal.com and Gmail accounts are ready.
No. You’ll connect Cal.com and Gmail, then edit the email text in a few nodes.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Gmail/Google Workspace costs if you’re sending from a paid business inbox.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can route by event type or duration, then swap the email copy in the “Compose Prep Note” and “Send Value Teaser” nodes so a discovery call gets different messaging than an onboarding call. Common tweaks include changing the Wait timing, adding a “bring this checklist” email, and skipping the sequence for existing customers.
Most of the time it’s an expired or wrong Cal.com API key. Regenerate the key, update it in n8n, then trigger a new test booking to confirm the Cal.com node fires. Also check that the booking trigger is pointed at the right event and workspace, because it’s easy to test on one event and go live on another. If failures happen only during busy periods, you may be hitting rate limits, so spacing or retries can help.
A lot, as long as your Gmail sending limits and n8n plan match your volume. On n8n Cloud, the practical ceiling is your monthly execution limit (Starter is fine for many small teams; higher tiers handle more). If you self-host, there’s no execution cap, but your server resources and Gmail daily send limits become the bottleneck. For most service businesses, this workflow comfortably handles dozens of bookings a day.
Often, yes. This sequence relies on timing control, branching, and wait states, and n8n handles that kind of logic cleanly without turning each “delay + send” into a pricey chain of steps. The self-host option is also a big deal if your booking volume grows and you want predictable costs. Zapier or Make can still be fine for a basic single reminder email. If you’re unsure, Talk to an automation expert and pick the simplest tool that meets the need.
You set the tone before the call, every time, without touching your inbox. The workflow handles the repetition so you can focus on the conversation that actually moves revenue.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.