

How to Trigger Gmail Email Sequences from HubSpot with N8n
Automatically start personalized Gmail sequences when HubSpot contacts reach Sales Qualified Lead status.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
HubSpot Gmail extension exists as a native integration, but it requires manual setup per user and doesn't create contacts automatically. This guide uses an automation platform for full control. View native option →
Best for
Teams that need complex email sequences with custom logic based on HubSpot contact properties and deal data.
Not ideal for
Simple 3-email sequences without conditional branching where Zapier's templates would be faster to set up.
Sync type
pollingUse case type
notificationReal-World Example
A 25-person B2B SaaS company uses this to send different email sequences based on company size stored in HubSpot - enterprise prospects get a 5-email sequence with case studies while SMB leads get 3 emails focused on quick setup. Before automation, sales reps manually tracked which prospects needed follow-up emails and often forgot to send timely sequences, reducing response rates by 40%.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Contact Email | properties.email | |
| First Name | properties.firstname | |
| Lifecycle Stage | properties.lifecyclestage | |
3 optional fields▸ show
| Company Name | properties.company |
| Lead Source | properties.hs_analytics_source |
| Contact Owner | properties.hubspot_owner_id |
Step-by-Step Setup
Workflows > New workflow
Create New N8n Workflow
Start a fresh workflow in N8n to handle the HubSpot trigger and Gmail sequence. The trigger will check for lifecycle stage changes every 5 minutes by default.
- 1Click 'New workflow' from your N8n dashboard
- 2Name it 'HubSpot SQL to Gmail Sequence'
- 3Click the gray '+' node to add your first step
Node Library > HubSpot > HubSpot Trigger
Add HubSpot Trigger Node
Configure N8n to poll HubSpot for contacts whose lifecycle stage changed to 'salesqualifiedlead'. This uses HubSpot's contacts API with a property filter.
- 1Search for 'HubSpot' in the node selector
- 2Select 'HubSpot Trigger' (not regular HubSpot)
- 3Choose 'Contact Updated' as the event type
- 4Set 'Property Name' to 'lifecyclestage'
HubSpot Node > Parameters > Credentials
Connect HubSpot Credentials
Authenticate N8n with your HubSpot account using a private app token. This gives read access to contacts and their properties.
- 1Click 'Create New' under Credentials
- 2Select 'Private App Token' authentication method
- 3Paste your HubSpot private app token
- 4Click 'Save' then 'Test connection'
Core Nodes > Flow > IF
Filter for SQL Stage Only
Add a filter node to catch only contacts moving TO Sales Qualified Lead status. Without this, you'll trigger on every lifecycle change including backwards movement.
- 1Click the '+' after your HubSpot node
- 2Add an 'IF' node from Core Nodes
- 3Set Condition to 'String' equals 'salesqualifiedlead'
- 4Map the Value field to {{$json.properties.lifecyclestage}}
Communication > Gmail
Add Gmail Node for Sequence
Connect Gmail to send the first email in your sequence. N8n will compose and send individual emails rather than using Gmail's native sequences.
- 1Connect a Gmail node to the 'true' output of your IF statement
- 2Select 'Send Email' as the operation
- 3Set up OAuth2 credentials for your Gmail account
- 4Click 'Sign in with Google' and authorize N8n
Gmail Node > Parameters
Configure Email Content
Set up the email template using HubSpot contact data. Map contact properties like first name and company to personalize each message.
- 1Set 'To' field to {{$node.HubSpot Trigger.json.properties.email}}
- 2Add subject line with contact name: 'Next steps, {{$node.HubSpot Trigger.json.properties.firstname}}'
- 3Write email body with HubSpot property placeholders
- 4Enable 'HTML' if using formatted content
Core Nodes > Flow > Wait
Add Delay for Sequence Timing
Insert a Wait node between emails to create sequence timing. This prevents all emails from sending immediately and spaces them appropriately.
- 1Add a 'Wait' node after your Gmail node
- 2Set wait type to 'Amount of Time'
- 3Configure delay (e.g., '3 days' for next email)
- 4Choose 'Resume Workflow' to continue the sequence
Communication > Gmail
Add Second Email in Sequence
Create the follow-up email with different messaging. Reference the previous email and provide additional value or next steps.
- 1Connect another Gmail node after the Wait
- 2Use the same credentials as the first email
- 3Write follow-up subject and body content
- 4Reference HubSpot data for continued personalization
Workflow Controls > Execute Workflow
Test with Sample Data
Run the workflow with test data to verify email sending and timing. N8n provides sample HubSpot data for testing without triggering on real contacts.
- 1Click 'Execute Workflow' button at bottom
- 2Select 'Use test data' for HubSpot trigger
- 3Modify test contact to have 'salesqualifiedlead' status
- 4Watch each node execute and check Gmail for test email
Workflow Header > Active Toggle
Activate Live Workflow
Turn on the workflow to start monitoring HubSpot for real lifecycle changes. N8n will check every 5 minutes for new Sales Qualified Leads.
- 1Click the toggle switch at top right to 'Active'
- 2Verify the workflow shows 'Active' status
- 3Check 'Executions' tab to monitor real triggers
- 4Update a test contact in HubSpot to SQL stage
Drop this into an n8n Code node.
JavaScript — Code Node// Add this JavaScript code node before Gmail to prevent duplicate sends▸ Show code
// Add this JavaScript code node before Gmail to prevent duplicate sends
const processedContacts = $('Set').all()[0]?.json?.processed_ids || [];
const contactId = $json.id;... expand to see full code
// Add this JavaScript code node before Gmail to prevent duplicate sends
const processedContacts = $('Set').all()[0]?.json?.processed_ids || [];
const contactId = $json.id;
if (processedContacts.includes(contactId)) {
return null; // Skip this contact
}
processedContacts.push(contactId);
return [{...}json, processed_ids: processedContacts];Scaling Beyond 200+ leads/month+ Records
If your volume exceeds 200+ leads/month records, apply these adjustments.
Split Gmail sending across accounts
Gmail limits sending to 500-2000 emails per day depending on account type. Route different sequence steps through different Gmail accounts to avoid hitting limits.
Switch to transactional email service
Replace Gmail nodes with SendGrid or Mailgun for better deliverability and higher sending limits. These services handle 10,000+ emails per day without throttling.
Batch process contacts
Add a delay between individual email sends using Wait nodes to spread Gmail API calls over time. Process contacts in groups of 50 rather than sending everything at once.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use N8n for this if you need custom email logic beyond basic sequences and want to avoid per-execution costs at scale. N8n's code nodes let you build complex conditional sequences based on HubSpot data - like different email paths for different industries or deal sizes. The main downside: you're building email sequences from scratch instead of using Gmail's native tools, which means more setup work upfront. Pick Zapier instead if you just need simple A-B-C email sequences without custom logic.
This workflow uses 3 executions per qualified lead (trigger check, email send, sequence continuation). At 100 SQLs per month, that's 300 total executions fitting N8n's Starter plan at $20/month. The same volume costs $29/month on Zapier's Professional plan and $10.59/month on Make's Core plan. Make wins on price but N8n's unlimited workflow complexity and code nodes justify the extra $10 for advanced sequences.
Make handles email sequences better with built-in delay modules that don't require persistent storage - their delays survive system restarts unlike N8n's Wait nodes. Zapier offers pre-built Gmail sequence templates that reduce setup time to under 10 minutes. However, N8n's JavaScript code nodes let you build sophisticated logic like checking if contacts opened previous emails before sending follow-ups, or dynamically adjusting send times based on contact timezone data from HubSpot.
You'll discover that HubSpot's lifecycle stage changes don't always trigger immediately - contacts bulk-imported or updated via API may not fire webhooks for several hours. N8n's 5-minute polling catches these delayed changes but creates a lag between stage change and first email. Gmail's daily sending limits (500 emails for regular accounts, 2000 for Workspace) will throttle high-volume sequences, requiring you to spread sends across multiple Gmail accounts or switch to a transactional email service.
Ideas for what to build next
- →Add email engagement tracking — Connect webhook nodes to track opens and clicks if using SendGrid, or implement UTM parameter tracking through Google Analytics.
- →Build win/loss sequence branches — Create additional workflows triggered by HubSpot deal stage changes to send different sequences when deals close won or lost.
- →Integrate with sales calendar booking — Add Calendly or HubSpot meetings links to sequence emails and trigger different follow-ups based on whether prospects book meetings.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup