Intermediate~20 min setupCRM & EmailVerified April 2026
HubSpot logo
Gmail logo

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

polling

Use case type

notification

Real-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.

1 op per trigger eventEach time this workflow runs counts as one operation toward your monthly limit.
/mo
505005K50K

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

Skip the setup

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.

HubSpot private app with contacts read permission
Gmail account with OAuth access enabled
N8n instance (cloud or self-hosted) with active subscription
HubSpot contacts using lifecycle stages (not custom properties)
Email templates written and tested for your sequence

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Contact Emailproperties.email
First Nameproperties.firstname
Lifecycle Stageproperties.lifecyclestage
3 optional fields▸ show
Company Nameproperties.company
Lead Sourceproperties.hs_analytics_source
Contact Ownerproperties.hubspot_owner_id

Step-by-Step Setup

1

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.

  1. 1Click 'New workflow' from your N8n dashboard
  2. 2Name it 'HubSpot SQL to Gmail Sequence'
  3. 3Click the gray '+' node to add your first step
What you should see: You should see an empty workflow canvas with one placeholder node ready for configuration.
2

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.

  1. 1Search for 'HubSpot' in the node selector
  2. 2Select 'HubSpot Trigger' (not regular HubSpot)
  3. 3Choose 'Contact Updated' as the event type
  4. 4Set 'Property Name' to 'lifecyclestage'
What you should see: The HubSpot node shows 'Contact Updated' with a purple HubSpot icon and requires credential setup next.
Common mistake — Don't use 'Contact Created' - that fires for new contacts regardless of lifecycle stage and will spam your Gmail.
n8n
+
click +
search apps
HubSpot
HU
HubSpot
Add HubSpot Trigger Node
HubSpot
HU
module added
3

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.

  1. 1Click 'Create New' under Credentials
  2. 2Select 'Private App Token' authentication method
  3. 3Paste your HubSpot private app token
  4. 4Click 'Save' then 'Test connection'
What you should see: Green checkmark appears with 'Connection successful' message and your HubSpot account name displays.
Common mistake — Your private app needs 'crm.objects.contacts.read' scope enabled or the connection will fail silently.
4

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.

  1. 1Click the '+' after your HubSpot node
  2. 2Add an 'IF' node from Core Nodes
  3. 3Set Condition to 'String' equals 'salesqualifiedlead'
  4. 4Map the Value field to {{$json.properties.lifecyclestage}}
What you should see: The IF node shows two output paths: 'true' and 'false' branches with the condition clearly visible.
Common mistake — HubSpot's lifecycle stage values are lowercase with no spaces - 'salesqualifiedlead' not 'Sales Qualified Lead'.
HubSpot
HU
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
5

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.

  1. 1Connect a Gmail node to the 'true' output of your IF statement
  2. 2Select 'Send Email' as the operation
  3. 3Set up OAuth2 credentials for your Gmail account
  4. 4Click 'Sign in with Google' and authorize N8n
What you should see: Gmail node shows 'Send Email' operation with green credential status and empty email fields ready for configuration.
6

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.

  1. 1Set 'To' field to {{$node.HubSpot Trigger.json.properties.email}}
  2. 2Add subject line with contact name: 'Next steps, {{$node.HubSpot Trigger.json.properties.firstname}}'
  3. 3Write email body with HubSpot property placeholders
  4. 4Enable 'HTML' if using formatted content
What you should see: Email preview shows your template with HubSpot field placeholders that will populate with real contact data.
Common mistake — Test the email field mapping first - if HubSpot contact has no email, Gmail node will error and stop the workflow.
7

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.

  1. 1Add a 'Wait' node after your Gmail node
  2. 2Set wait type to 'Amount of Time'
  3. 3Configure delay (e.g., '3 days' for next email)
  4. 4Choose 'Resume Workflow' to continue the sequence
What you should see: Wait node displays the configured delay time and shows 'Resume Workflow' as the continuation method.
Common mistake — N8n's Wait node requires your instance to stay running - if you restart N8n, waiting workflows will lose their position.
8

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.

  1. 1Connect another Gmail node after the Wait
  2. 2Use the same credentials as the first email
  3. 3Write follow-up subject and body content
  4. 4Reference HubSpot data for continued personalization
What you should see: Second Gmail node configured with follow-up content and same contact data mappings as the first email.
9

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.

  1. 1Click 'Execute Workflow' button at bottom
  2. 2Select 'Use test data' for HubSpot trigger
  3. 3Modify test contact to have 'salesqualifiedlead' status
  4. 4Watch each node execute and check Gmail for test email
What you should see: All nodes show green checkmarks with execution data, and you receive the test email in Gmail with populated contact fields.
Common mistake — The Wait node won't actually delay during testing - it executes immediately so you can verify the full sequence.
n8n
▶ Run once
executed
HubSpot
Gmail
Gmail
🔔 notification
received
10

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.

  1. 1Click the toggle switch at top right to 'Active'
  2. 2Verify the workflow shows 'Active' status
  3. 3Check 'Executions' tab to monitor real triggers
  4. 4Update a test contact in HubSpot to SQL stage
What you should see: Workflow status shows 'Active' with a green indicator and begins polling HubSpot every 5 minutes for changes.
Common mistake — Start with one test contact - if you have many existing SQL contacts, they might all trigger at once when you activate.

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.

1

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.

2

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.

3

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 trackingConnect webhook nodes to track opens and clicks if using SendGrid, or implement UTM parameter tracking through Google Analytics.
  • Build win/loss sequence branchesCreate additional workflows triggered by HubSpot deal stage changes to send different sequences when deals close won or lost.
  • Integrate with sales calendar bookingAdd Calendly or HubSpot meetings links to sequence emails and trigger different follow-ups based on whether prospects book meetings.

Related guides

Was this guide helpful?
HubSpot + Gmail overviewn8n profile →