

How to Log Gmail Email Activity to HubSpot CRM with Zapier
Automatically log emails sent or received in Gmail to the corresponding contact's timeline in HubSpot CRM.
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 using Gmail and HubSpot who want automatic email activity logging without coding.
Not ideal for
High-volume senders (1000+ emails/day) or teams needing custom email parsing and formatting.
Sync type
pollingUse case type
syncReal-World Example
A 12-person B2B software sales team uses this to automatically log all client email communications to HubSpot contact timelines. Before automation, reps manually logged emails 2-3 times per day and missed 30% of important client interactions. Now every Gmail conversation with prospects appears in HubSpot within 3 minutes, giving the team complete visibility into client communication history.
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
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Email Subject | subject | |
| Email Body | body | |
| Sender Email | from_email | |
| Recipient Email | to_email | |
| Email Timestamp | timestamp | |
| Engagement Type | engagement_type | |
Step-by-Step Setup
Dashboard > Create Zap > Trigger
Create New Zap with Gmail Trigger
Start a new Zap and set up Gmail as your trigger app. You'll configure it to fire when you send or receive emails with HubSpot contacts.
- 1Click 'Create Zap' from your Zapier dashboard
- 2Search for 'Gmail' in the trigger app selector
- 3Select 'New Email' as your trigger event
- 4Click 'Continue' to proceed to connection setup
Trigger > Gmail > Account Connection
Connect Your Gmail Account
Authenticate your Gmail account with Zapier. This gives Zapier permission to monitor your inbox for new emails.
- 1Click 'Sign in to Gmail' button
- 2Select your Google account from the popup
- 3Click 'Allow' to grant Zapier access to Gmail
- 4Verify the green 'Connected' status appears
Trigger > Gmail > Configure
Configure Email Trigger Settings
Set up the trigger to capture both sent and received emails. You'll configure search criteria to focus on business emails only.
- 1Leave 'Label/Mailbox' set to 'INBOX'
- 2In 'Search String' field, enter 'from:(@yourdomain.com OR @client-domain.com)'
- 3Check 'Include Sent Items' to capture outbound emails
- 4Click 'Continue' to test the trigger
Trigger > Gmail > Test
Test Gmail Trigger
Pull in a recent email to verify the trigger works correctly. This sample data will populate the rest of your Zap setup.
- 1Click 'Test trigger' button
- 2Wait for Zapier to fetch recent emails (takes 10-15 seconds)
- 3Select a business email from the list of results
- 4Click 'Continue with selected record'
Action > App Selection > HubSpot
Add HubSpot Action Step
Add HubSpot as your action app to create the CRM activity log entry. You'll use the 'Create Engagement' action to log the email.
- 1Click the '+' button to add an action step
- 2Search for 'HubSpot' in the action app list
- 3Select 'Create Engagement' as the action event
- 4Click 'Continue' to proceed
Action > HubSpot > Account Connection
Connect HubSpot Account
Authenticate your HubSpot account and grant Zapier permission to create engagement records in your CRM.
- 1Click 'Sign in to HubSpot' button
- 2Enter your HubSpot login credentials
- 3Select the correct HubSpot account if you have multiple
- 4Click 'Connect account' to authorize access
Action > HubSpot > Engagement Setup
Configure Engagement Type
Set the engagement type to 'Email' so the activity appears correctly in HubSpot contact timelines.
- 1In 'Engagement Type' dropdown, select 'EMAIL'
- 2Set 'Engagement Direction' to map from Gmail data
- 3Use Gmail 'From' field to determine if email was sent or received
- 4Click into the 'Active' field and set to 'True'
Action > HubSpot > Field Mapping
Map Email Content Fields
Map the Gmail email data to HubSpot engagement fields so the email details appear in the contact timeline.
- 1Map 'Subject' field to Gmail 'Subject' data
- 2Map 'Body' field to Gmail 'Body Plain' or 'Body HTML'
- 3Set 'Timestamp' to Gmail 'Date' field
- 4Map 'From Email' to Gmail 'From Email' field
Action > HubSpot > Associations
Associate with Contact
Configure HubSpot to find and link the email to the correct contact record using email address matching.
- 1In 'Associations' section, click 'Add Association'
- 2Select 'Contact' as the association type
- 3Set 'Contact Email' to Gmail 'From Email' for received emails
- 4For sent emails, use Gmail 'To Email' field instead
Action > HubSpot > Test
Test HubSpot Action
Run a test to verify the email gets properly logged to HubSpot with all fields mapped correctly.
- 1Click 'Test action' button
- 2Wait for Zapier to create the test engagement in HubSpot
- 3Review the success message and engagement ID returned
- 4Click 'Continue' to proceed to final setup
Publish > Zap Settings
Turn On Zap
Activate your Zap to start automatically logging emails. Name it clearly for easy identification later.
- 1Click 'Publish Zap' button
- 2Enter a descriptive name like 'Gmail to HubSpot Email Logging'
- 3Verify the Zap status shows 'On'
- 4Check the task usage counter starts incrementing
Drop this into a Zapier Code step.
JavaScript — Code Step{{if(contains(1.from_email, "@yourclientdomain.com"), "INCOMING_EMAIL", "OUTGOING_EMAIL")}}▸ Show code
{{if(contains(1.from_email, "@yourclientdomain.com"), "INCOMING_EMAIL", "OUTGOING_EMAIL")}}... expand to see full code
{{if(contains(1.from_email, "@yourclientdomain.com"), "INCOMING_EMAIL", "OUTGOING_EMAIL")}}Scaling Beyond 500+ emails/day+ Records
If your volume exceeds 500+ emails/day records, apply these adjustments.
Switch to Make for Better Rate Limiting
Make handles HubSpot's 100 calls/10 seconds limit with automatic retries. Zapier fails tasks when you hit limits, requiring manual intervention.
Use Email Filters to Reduce Volume
Configure Gmail filters to exclude internal emails, automated messages, and newsletters. Focus on actual prospect/customer communications to reduce task consumption by 60-70%.
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 Zapier for this if you need a simple setup that works within 30 minutes and your team doesn't code. The Gmail trigger fires reliably within 2-3 minutes of new emails, and HubSpot's engagement API handles the CRM logging automatically. Skip Zapier if you send 1000+ emails daily - you'll hit rate limits fast and need Make's built-in error handling instead.
This workflow uses 1 task per email logged. At 200 emails/month, that's 200 tasks total, fitting Zapier's Starter plan at $20/month. Make would cost $9/month for the same volume with 1000 operations included. N8n self-hosted is free but requires server management. Make wins on pure cost, saving you $132/year.
Make handles HubSpot rate limits better with automatic retry logic and exponential backoff - Zapier just fails the task. N8n gives you custom JavaScript nodes to parse email headers and extract meeting details that Zapier can't touch. But Zapier's Gmail integration updates faster when Google changes APIs, and the guided setup prevents the field mapping errors that break 40% of Make scenarios.
HubSpot's engagement API creates duplicates if you send the same email multiple times - there's no built-in deduplication. Gmail's 'Message-ID' header stays consistent, but Zapier doesn't expose it in the standard trigger, so you'll get duplicate timeline entries for forwarded emails. The API also strips HTML formatting from email bodies, so rich text emails appear as plain text in HubSpot timelines.
Ideas for what to build next
- →Add Deal Association Logic — Create a lookup step to associate emails with active deals based on contact relationships, not just contacts.
- →Set Up Email Response Tracking — Build a follow-up Zap that tracks when prospects reply to your emails and updates deal stages automatically.
- →Create Email Activity Reports — Export engagement data to Google Sheets for weekly email activity reporting and sales performance analysis.
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