

How to Log Gmail Activity to HubSpot CRM with Make
Automatically capture Gmail emails with HubSpot contacts and log them to the contact's CRM timeline.
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 who need selective email logging with custom filtering based on contact properties or sender criteria.
Not ideal for
Teams wanting to log every single email without any filtering or customization requirements.
Sync type
pollingUse case type
syncReal-World Example
A 25-person B2B software sales team uses this to automatically log client emails to HubSpot without cluttering timelines with internal messages. Before automation, reps manually forwarded important client emails to HubSpot using the BCC feature, but forgot 40% of the time. Now every client interaction gets captured automatically, giving managers complete visibility into prospect 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
Import this workflow directly into Make
Copy the pre-built Make blueprint and paste it straight into Make. 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 ID | objectId | |
| Event Type | eventType | |
| Email Subject | title | |
| Timestamp | occurredAt | |
2 optional fields▸ show
| Email Body | description |
| Sender Email | extraData.sender |
Step-by-Step Setup
Dashboard > + Create scenario > Gmail
Create new Make scenario
Start building your email logging automation in Make. This creates the workspace where you'll connect Gmail and HubSpot.
- 1Click 'Create a new scenario' from your Make dashboard
- 2Select Gmail from the app list
- 3Choose 'Watch emails' as your trigger
Gmail module > Connection > Add
Connect your Gmail account
Authorize Make to read your Gmail messages. The connection needs read access to detect emails with HubSpot contacts.
- 1Click 'Create a connection' in the Gmail module
- 2Select your Google account from the popup
- 3Grant Make permission to read Gmail messages
Gmail module > Settings
Configure email watching
Set Gmail to monitor your inbox for new messages. This determines which emails trigger the HubSpot logging.
- 1Set Folder to 'INBOX'
- 2Set Maximum results to '10'
- 3Leave Label field empty to watch all emails
- 4Set Watch also for to 'Unread emails only'
Scenario > + > HubSpot > Search
Add HubSpot search module
Search HubSpot to check if the email sender exists as a contact. This prevents logging emails from unknown senders.
- 1Click the + button after Gmail module
- 2Select HubSpot from the app list
- 3Choose 'Search for CRM Objects' action
HubSpot module > Connection > Add
Connect HubSpot account
Link your HubSpot CRM to Make with proper permissions. The connection needs contact read access and timeline write access.
- 1Click 'Create a connection' in the HubSpot module
- 2Enter your HubSpot portal domain
- 3Click 'Continue' and authorize in the popup
- 4Grant Make access to contacts and timeline
HubSpot module > Search configuration
Configure contact search
Set up HubSpot to find contacts matching the Gmail sender's email address. This maps emails to CRM records.
- 1Set Object Type to 'Contacts'
- 2In Search Query, map Gmail sender email using the data picker
- 3Set Limit to '1' since emails have one sender
- 4Leave other fields at default values
Tools > Flow Control > Router
Add router for found contacts
Split the workflow based on whether HubSpot found a matching contact. Only emails with existing contacts should be logged.
- 1Click the + button after HubSpot Search
- 2Select 'Flow Control' from tools
- 3Choose 'Router' to create multiple paths
- 4The router automatically connects to HubSpot
Router > Path 1 > Filter
Set up contact found filter
Configure one router path to only proceed when HubSpot finds a matching contact. This prevents logging emails from non-contacts.
- 1Click the first router output path
- 2Set condition to 'HubSpot Contact ID exists'
- 3Choose 'is not empty' as the operator
- 4Label this path 'Contact Found'
Contact Found path > + > HubSpot > Create Object
Add timeline entry module
Create the HubSpot module that actually logs email activity to the contact timeline. This writes the email details to CRM.
- 1Click + after the 'Contact Found' filter path
- 2Select HubSpot again from apps
- 3Choose 'Create a CRM Object' action
- 4Set Object Type to 'Timeline Event'
Timeline module > Field mapping
Map email data to timeline
Configure which Gmail data gets logged to HubSpot timeline. This creates the actual email record in CRM.
- 1Map Contact ID from the search results
- 2Set Event Type to 'EMAIL'
- 3Map Gmail subject line to Title field
- 4Map Gmail body to Description field
- 5Map Gmail timestamp to Occurred At field
Scenario controls > Run once
Test the complete workflow
Run a test to verify emails get properly logged to HubSpot timelines. This confirms the entire automation works end-to-end.
- 1Click 'Run once' at the bottom left
- 2Send yourself a test email from a HubSpot contact
- 3Check the execution log for green checkmarks
- 4Verify the timeline entry appears in HubSpot contact record
Scenario > Scheduling toggle
Activate ongoing monitoring
Turn on the scenario to continuously monitor Gmail and log emails. The automation runs every 15 minutes by default.
- 1Click the 'OFF' toggle in the top left to turn it ON
- 2Confirm scheduling is set to every 15 minutes
- 3Click 'OK' to activate the scenario
- 4Monitor the first few runs in the execution history
Drop this into a Make custom function.
Copy this templatestripHTML({{1.textPlain}}) + '\n\nSender: ' + {{1.fromEmail}} + '\nReceived: ' + {{1.date}}▸ Show code
stripHTML({{1.textPlain}}) + '\n\nSender: ' + {{1.fromEmail}} + '\nReceived: ' + {{1.date}}... expand to see full code
stripHTML({{1.textPlain}}) + '\n\nSender: ' + {{1.fromEmail}} + '\nReceived: ' + {{1.date}}Scaling Beyond 300+ emails/day+ Records
If your volume exceeds 300+ emails/day records, apply these adjustments.
Batch email processing
Increase Gmail module's maximum results to 50 and reduce scenario frequency to 30 minutes. This processes emails in larger batches and reduces API calls.
Add sender domain filtering
Use Make's filter function to only process emails from business domains, not gmail.com or yahoo.com. This cuts processing volume by 60-80% in most sales environments.
Implement retry logic
Add a delay module before HubSpot calls and configure 3 retry attempts with exponential backoff. High volume scenarios hit rate limits more frequently.
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 Make for this if you need granular control over which emails get logged and how they appear in HubSpot timelines. Make's router system lets you filter by sender domain, email content, or contact properties before logging. The visual scenario builder makes it easy to add conditions like 'only log emails from prospects' or 'skip automated newsletters.' Pick Zapier instead if you want zero setup time and don't mind logging every single email — their Gmail-HubSpot Zap works in 3 clicks but offers no filtering.
This workflow burns 3 operations per email: Gmail watch, HubSpot contact search, and timeline creation. At 200 emails/month with HubSpot contacts, that's 600 operations monthly. Make's Core plan at $9/month includes 10,000 operations, so you're well covered. Zapier would cost $20/month for their Starter plan to handle the same volume. N8n is free but requires server hosting that costs $15-30/month, making Make the middle-ground option.
Zapier wins on setup speed — their pre-built Gmail-HubSpot integration takes 5 minutes versus Make's 30-minute scenario building. N8n offers better cost scaling for high volume since it's usage-unlimited once hosted. But Make strikes the right balance here: more customization than Zapier's rigid templates, easier than N8n's code-heavy approach. The visual router system alone saves hours compared to writing conditional logic in N8n.
Gmail API limits will bite you at 500+ emails daily — you'll hit the 250 quota units per user per day ceiling. HubSpot's contact search API occasionally returns duplicate contacts for the same email, creating double timeline entries. The Gmail 'Watch emails' trigger sometimes misses emails that arrive in rapid succession, so don't rely on this for legally critical logging. HTML emails with embedded images can exceed HubSpot's timeline field limits and cause silent failures.
Ideas for what to build next
- →Add email attachment handling — Extend the scenario to save Gmail attachments to HubSpot file manager and link them to timeline entries for complete email archiving.
- →Create Slack notifications for VIP contacts — Add a filter for high-value contacts and send Slack alerts when they email, so sales reps can respond immediately to key accounts.
- →Build outbound email tracking — Create a parallel scenario that monitors your Gmail Sent folder and logs outgoing emails to HubSpot for complete communication history.
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