

How to Auto-Create HubSpot Tasks from Gmail Meeting Requests with N8n
Automatically detect meeting request phrases in Gmail and create HubSpot tasks for assigned sales reps.
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
Sales teams needing custom meeting detection logic with complex contact routing and HubSpot integration.
Not ideal for
Teams wanting simple keyword triggers without coding or those processing under 50 emails monthly.
Sync type
pollingUse case type
notificationReal-World Example
A 25-person B2B SaaS company uses this to auto-assign meeting requests from their pricing page contact form to territory-based sales reps. Before automation, inbound leads waited 4-6 hours for initial response because reps manually checked a shared inbox. Now tasks appear in HubSpot within 2 minutes with proper rep assignment based on company domain matching.
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 | ||
| Task Subject | hs_task_subject | |
| Task Body | hs_task_body | |
| Task Type | hs_task_type | |
| Due Date | hs_task_completion_date | |
| Assigned Owner | hubspot_owner_id | |
2 optional fields▸ show
| Associated Contact | associations |
| Task Priority | hs_task_priority |
Step-by-Step Setup
Workflow > + > Gmail > Gmail Trigger
Install Gmail Node
Add the Gmail trigger node to monitor your inbox for new messages. This will be the starting point for detecting meeting requests.
- 1Click the + button to add a new node
- 2Search for 'Gmail' in the node list
- 3Select 'Gmail Trigger' from the available options
- 4Drag the node onto your workflow canvas
Gmail Node > Credentials > Gmail OAuth2 API
Connect Gmail Account
Authenticate your Gmail account to allow N8n to read incoming emails. You'll need OAuth2 credentials from Google Cloud Console.
- 1Click the Gmail Trigger node to open settings
- 2Click 'Create New Credential' next to Gmail OAuth2 API
- 3Enter your Google Client ID and Client Secret
- 4Click 'Connect my account' and complete OAuth flow
- 5Select 'On new email' as the trigger event
Gmail Trigger > Node Parameters
Configure Email Filter
Set up the Gmail trigger to only fire on relevant emails by filtering for your sales inbox or specific labels.
- 1In Gmail Trigger settings, set 'Label Names' to your sales label
- 2Set 'Format' to 'Full' to get complete email content
- 3Enable 'Include Spam and Trash' to false
- 4Set polling interval to 1 minute for faster detection
Workflow > + > Function
Add Text Analysis Node
Insert a function node to scan email content for meeting request phrases. This JavaScript code will return true/false for meeting detection.
- 1Click + to add a new node after Gmail
- 2Search for and select 'Function' node
- 3Connect the Gmail node output to Function node input
- 4Open the Function node settings panel
Function Node > JavaScript Code
Write Meeting Detection Code
Add JavaScript logic to identify meeting request phrases in email subject and body text. The function returns meeting intent and extracts key details.
- 1Paste the meeting detection function into the code editor
- 2Set the function to analyze both subject and body content
- 3Configure it to extract sender details and email timestamp
- 4Test with sample meeting request language
Drop this into an n8n Code node.
JavaScript — Code Node// Enhanced meeting detection with urgency scoring▸ Show code
// Enhanced meeting detection with urgency scoring const emailContent = $node["Gmail Trigger"].json.snippet.toLowerCase(); const subject = $node["Gmail Trigger"].json.subject.toLowerCase();
... expand to see full code
// Enhanced meeting detection with urgency scoring
const emailContent = $node["Gmail Trigger"].json.snippet.toLowerCase();
const subject = $node["Gmail Trigger"].json.subject.toLowerCase();
const meetingPhrases = ['schedule a call', 'book a meeting', 'hop on a call', 'quick chat', 'discuss further', 'set up time'];
const urgentPhrases = ['asap', 'urgent', 'this week', 'soon as possible', 'priority'];
const hasMeetingRequest = meetingPhrases.some(phrase => emailContent.includes(phrase) || subject.includes(phrase));
const isUrgent = urgentPhrases.some(phrase => emailContent.includes(phrase) || subject.includes(phrase));
return {
meeting_detected: hasMeetingRequest,
priority: isUrgent ? 'HIGH' : 'MEDIUM',
task_type: subject.includes('demo') ? 'MEETING' : 'CALL'
};Workflow > + > IF
Add Email Filtering Logic
Insert an IF node to only proceed when meeting request phrases are detected. This prevents creating tasks for every email.
- 1Add an IF node after the Function node
- 2Set condition to 'Boolean' and check if meeting_detected equals true
- 3Connect Function node output to IF node input
- 4Configure the 'true' branch to continue workflow
Workflow > + > HubSpot > Task > Create
Connect HubSpot Account
Add HubSpot node and authenticate with your CRM. You'll need a private app token or OAuth credentials to create tasks.
- 1Click + on the IF node's true branch
- 2Search for and select 'HubSpot' node
- 3Choose 'Task' as the resource type
- 4Select 'Create' as the operation
- 5Click 'Create New Credential' for HubSpot API
HubSpot Node > Credentials > Private App Token
Configure HubSpot Credentials
Enter your HubSpot API key or app token to authorize task creation. Private app tokens are more reliable for automation.
- 1Select 'Private App Token' as credential type
- 2Paste your HubSpot private app token
- 3Click 'Test' to verify connection
- 4Save the credential with a descriptive name
HubSpot Node > Task Properties
Map Task Fields
Configure the HubSpot task with data from the email. Map sender info, email content, and meeting request details to task properties.
- 1Set 'Subject' to reference the email subject from Gmail data
- 2Map 'Body' to include meeting request details and email snippet
- 3Set 'Type' to 'CALL' or 'MEETING' task type
- 4Configure 'Due Date' to 24 hours from email received time
- 5Map 'Associated Contact' using email address lookup
Workflow > + > HubSpot > Contact > Get All
Add Contact Lookup
Insert a HubSpot contact search before task creation to find the assigned sales rep. This ensures tasks go to the right person.
- 1Add another HubSpot node between IF and task creation
- 2Set resource to 'Contact' and operation to 'Get All'
- 3Filter by email address from the Gmail sender
- 4Map the contact owner ID for task assignment
Workflow > Execute Workflow
Test Workflow
Execute the workflow with a sample email containing meeting request language. Verify task creation in HubSpot with correct assignment.
- 1Click 'Execute Workflow' button in top toolbar
- 2Send yourself a test email with 'schedule a call' phrase
- 3Watch workflow execution in real-time panel
- 4Check HubSpot for created task with proper details
- 5Verify task assignment to correct sales rep
Workflow > Settings > Active
Activate Automation
Enable the workflow to run automatically on new emails. Set up error notifications to catch failures in production.
- 1Click the 'Inactive' toggle to activate workflow
- 2Configure error handling to send alerts on failures
- 3Set workflow name to 'Meeting Request Task Creation'
- 4Add workflow to a folder for organization
Scaling Beyond 200+ emails/day+ Records
If your volume exceeds 200+ emails/day records, apply these adjustments.
Switch to Webhook Triggers
Gmail polling becomes unreliable above 500 emails daily. Set up Gmail push notifications to Cloud Pub/Sub, then trigger N8n via webhook for real-time processing without API quota issues.
Batch Contact Lookups
HubSpot's batch API handles 100 contact searches per request vs single lookups. Modify the workflow to queue emails and process in batches every 5 minutes to reduce API calls and improve performance.
Add Redis Memory Store
Use N8n's Redis integration to track processed email IDs and prevent duplicates. Gmail polling can retrieve the same email multiple times during high-volume periods, causing duplicate tasks in HubSpot.
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 meeting detection logic beyond simple keyword matching. The Function node lets you write JavaScript to parse complex email patterns, extract meeting details, and handle edge cases that Zapier's basic text filters miss. You can also store processed email IDs to prevent duplicates and add sophisticated contact matching logic. Skip N8n if you just want to trigger on emails containing 'meeting' - Make handles simple phrase detection faster with less setup.
This workflow runs 2-3 executions per qualifying email: Gmail fetch, meeting detection, contact lookup, and task creation. At 50 meeting requests per month, that's 150 executions monthly. N8n's free tier includes 5,000 executions, so you'd stay free until 800+ meeting emails monthly. The $20 Starter plan covers 20,000 executions (3,300 meeting emails). Zapier charges $20 for 750 tasks monthly, and Make costs $9 for 1,000 operations - both hit limits faster than N8n at medium volume.
Zapier's Gmail integration includes a 'New Email Matching Search' trigger that's more reliable than N8n's polling approach. Make's text parsing tools are simpler for basic phrase detection without writing JavaScript. But N8n wins on complex logic - you can analyze email thread context, detect meeting urgency levels, and route to different HubSpot pipelines based on sender domain. The JavaScript flexibility covers scenarios that break Zapier's rigid filters.
HubSpot's contact search API paginates at 100 records, so large contact databases slow down task assignment. Gmail's 'historyId' parameter helps avoid reprocessing old emails, but N8n doesn't expose this in the trigger - you'll need custom code to track it. Watch for HTML email formatting that breaks phrase detection - newsletters embed meeting language in images or heavily styled text that JavaScript string matching misses.
Ideas for what to build next
- →Add Slack Notifications — Send a Slack message to the assigned rep when high-priority meeting tasks are created. Use N8n's Slack node to post task details and direct links to the HubSpot record.
- →Create Follow-up Reminders — Set up a scheduled workflow to check for overdue meeting tasks and send reminder emails to reps. Query HubSpot for tasks past due date and trigger automated follow-up sequences.
- →Build Meeting Outcome Tracking — Capture when meeting tasks are completed and automatically create deal records for qualified prospects. Connect task completion webhooks to opportunity creation workflows in HubSpot.
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