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

How to Auto-create contacts from emails with Power Automate

Auto-create HubSpot contacts when you receive Gmail emails from senders not already in your CRM database.

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

Microsoft 365 teams that get sales inquiries via Gmail and use HubSpot CRM.

Not ideal for

Teams processing 500+ emails daily or needing complex email parsing logic.

Sync type

real-time

Use case type

import

Real-World Example

💡

A 12-person consulting firm gets 40 prospect emails weekly through their Gmail info@ address. Before automation, their sales rep spent 20 minutes daily checking if senders exist in HubSpot and manually creating contacts. Now every new sender becomes a HubSpot contact within 3 minutes of email arrival.

What Will This Cost?

Drag the slider to your expected monthly volume.

/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 Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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.

Gmail account with emails to process
HubSpot account (free or paid)
Microsoft 365 or Power Platform license
Admin access to connect both Gmail and HubSpot

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Emailemail
5 optional fields▸ show
First Namefirstname
Last Namelastname
Companycompany
Lead Sourcehs_lead_source
Contact Ownerhubspot_owner_id

Step-by-Step Setup

1

My flows > New flow > Automated cloud flow

Create automated cloud flow

Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' from the left sidebar. Click 'New flow' then select 'Automated cloud flow'. Name your flow 'Gmail to HubSpot Contact Creation' and search for Gmail trigger.

  1. 1Click 'My flows'
  2. 2Click 'New flow'
  3. 3Select 'Automated cloud flow'
  4. 4Enter flow name
  5. 5Search 'Gmail'
What you should see: You'll see the flow designer with a Gmail trigger selection screen.
Common mistake — Don't select 'When a new email arrives' - this fires on all emails including spam.
2

Flow designer > Gmail trigger configuration

Configure Gmail trigger

Select 'When a new email arrives (V3)' trigger. Choose 'INBOX' as the folder. Leave other fields empty to catch all incoming emails. Power Automate will prompt you to connect your Gmail account through OAuth.

  1. 1Select 'When a new email arrives (V3)'
  2. 2Set Folder to 'INBOX'
  3. 3Click 'Sign in'
  4. 4Authorize Gmail access
What you should see: Gmail connection shows green checkmark and trigger configuration is complete.
Common mistake — The V3 trigger includes message body content that V2 lacks.
Power Automate
+
click +
search apps
HubSpot
HU
HubSpot
Configure Gmail trigger
HubSpot
HU
module added
3

Flow designer > New step > HubSpot

Add HubSpot connection

Click 'New step' below the Gmail trigger. Search for 'HubSpot' and select it. Choose 'Get a contact' action first - we need to check if the contact already exists. You'll need to connect your HubSpot account using your HubSpot login credentials.

  1. 1Click 'New step'
  2. 2Search 'HubSpot'
  3. 3Select HubSpot connector
  4. 4Choose 'Get a contact'
  5. 5Sign into HubSpot
What you should see: HubSpot connector appears with 'Get a contact' action ready to configure.
Common mistake — Free HubSpot accounts have API limits of 100 requests per 10 seconds.
4

HubSpot action > Get a contact configuration

Configure contact lookup

In the 'Get a contact' action, set the search property to 'email'. Click in the Contact email field and select 'From' from the dynamic content menu - this pulls the sender's email from the Gmail trigger. This step checks if the contact already exists in HubSpot.

  1. 1Set Property to 'email'
  2. 2Click Contact email field
  3. 3Select 'From' from dynamic content
What you should see: The field shows 'From' with a blue dynamic content tag.
Common mistake — Don't use 'From (name)' - this includes display names that won't match email addresses.
5

Flow designer > New step > Control > Condition

Add condition check

Click 'New step' and search for 'Condition' under Control. This creates an if-then branch. In the condition, check if the HubSpot lookup failed (meaning contact doesn't exist). Set left side to 'Status Code' from the HubSpot action, condition to 'is equal to', and right side to '404'.

  1. 1Click 'New step'
  2. 2Search 'Condition'
  3. 3Select from Control category
  4. 4Choose 'Status Code' on left
  5. 5Set condition to 'is equal to'
  6. 6Enter '404' on right
What you should see: Condition splits into 'If yes' and 'If no' branches.
Common mistake — Status codes vary by API response - 404 specifically means 'contact not found'.
HubSpot
HU
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
Gmail
GM
notified
6

Condition > If yes > Add an action > HubSpot

Configure create contact action

In the 'If yes' branch (contact doesn't exist), click 'Add an action'. Search for HubSpot again and select 'Create a contact'. This action only runs when the email sender isn't already in your CRM.

  1. 1Click 'Add an action' in 'If yes' branch
  2. 2Search 'HubSpot'
  3. 3Select 'Create a contact'
What you should see: 'Create a contact' action appears inside the 'If yes' branch only.
Common mistake — Placing this outside the condition will create duplicate contacts.
7

Create contact > Email field mapping

Map email field

In the 'Create a contact' action, click the Email field. Select 'From' from dynamic content - this maps the Gmail sender's email address to the HubSpot contact email field. This field is required and must be valid.

  1. 1Click Email field
  2. 2Select 'From' from dynamic content
What you should see: Email field shows blue 'From' tag indicating dynamic mapping.
Common mistake — HubSpot validates email format - invalid emails will cause the flow to fail.
HubSpot fields
firstname
lastname
email
company
hs_lead_status
available as variables:
1.props.firstname
1.props.lastname
1.props.email
1.props.company
1.props.hs_lead_status
8

Create contact > Name field mapping

Parse sender name

For the First name and Last name fields, you need to split the 'From (name)' field. Click First name field and select 'From (name)' from dynamic content. For better parsing, you'll want to add expressions to split on spaces. Leave empty for now and we'll use the full name.

  1. 1Click 'First name' field
  2. 2Select 'From (name)' from dynamic content
What you should see: First name shows the full sender name from the email.
Common mistake — Gmail's 'From (name)' sometimes shows email addresses when display names aren't set.
9

Create contact > Company field > Expression

Add company detection

For the Company field, you can extract the domain from the email address using an expression. Click the Company field, then click 'Expression' tab. Enter: split(triggerOutputs()?['body/from'], '@')[1]. This pulls everything after the @ symbol as a basic company identifier.

  1. 1Click Company field
  2. 2Click 'Expression' tab
  3. 3Enter domain extraction formula
  4. 4Click 'OK'
What you should see: Company field shows an expression formula that will extract email domains.
Common mistake — This creates company names like 'gmail.com' for personal emails.
10

Condition > If no > Add an action > Data Operations

Configure 'If no' branch

In the 'If no' branch (contact exists), you can add actions like updating the last contact date or logging the email. For this basic setup, click 'Add an action' and select 'Compose' from Data Operations to log that the contact already exists.

  1. 1Click 'Add an action' in 'If no' branch
  2. 2Search 'Compose'
  3. 3Select from Data Operations
  4. 4Enter text like 'Contact already exists'
What you should see: Compose action appears in the 'If no' branch for existing contacts.
Common mistake — Leaving this branch empty works fine but makes debugging harder.
11

Flow toolbar > Save > Test

Test and save flow

Click 'Save' in the top toolbar to save your flow. Click 'Test' and choose 'Manually' to test with a real email. Send yourself a test email from an address not in HubSpot, then click 'Run flow' and monitor the execution.

  1. 1Click 'Save'
  2. 2Click 'Test'
  3. 3Select 'Manually'
  4. 4Send test email
  5. 5Click 'Run flow'
What you should see: Flow runs successfully and creates a new contact in HubSpot with the sender's details.
Common mistake — Test emails from your own domain might trigger company matching rules in HubSpot.

Use Power Fx expressions to better parse names and companies from email data. Paste this in the First name field expression editor.

JavaScript — Code Stepif(
▸ Show code
if(
  contains(triggerOutputs()?['body/fromName'], ' '),
  first(split(triggerOutputs()?['body/fromName'], ' ')),

... expand to see full code

if(
  contains(triggerOutputs()?['body/fromName'], ' '),
  first(split(triggerOutputs()?['body/fromName'], ' ')),
  triggerOutputs()?['body/fromName']
)
Power Automate
▶ Test flow
executed
HubSpot
Gmail
Gmail
🔔 notification
received

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 Microsoft Power Automate for this if you're already on Microsoft 365, need tight integration with Outlook/Teams, or want built-in AI capabilities for email parsing. Power Automate includes 2,000 flow runs monthly with most Microsoft 365 Business plans, making it cost-effective for medium email volumes. It also handles OAuth refreshing automatically and provides better enterprise compliance than standalone tools. However, use Zapier if you need more advanced email parsing or aren't in the Microsoft ecosystem.

Cost

Costs run about $0.02 per email processed. At 200 emails monthly, you'll use 200 flow runs costing roughly $4/month with a Power Automate license. HubSpot's free tier supports this volume easily. Compare this to Zapier at $20/month minimum or Make at $9/month, making Power Automate cheaper if you already have Microsoft 365. The break-even point sits around 400 monthly emails.

Tradeoffs

Make offers superior conditional logic and data transformation functions that help with complex email parsing. Zapier provides 5x more pre-built email parsing options and better error handling. N8n gives you unlimited runs if self-hosted and more flexible webhook handling. Pipedream offers better debugging tools and real-time logs. Power Automate wins on cost for Microsoft shops and provides enterprise-grade security, but lags on advanced automation features.

You'll hit HubSpot's API rate limits at 100 requests per 10 seconds, so space out high-volume flows. Gmail's webhook delivery can delay up to 5 minutes during Google outages, causing contact creation gaps. Power Automate's expression language struggles with complex string manipulation - you'll need multiple steps to properly parse names with prefixes like 'Dr.' or 'Jr.' Email threading can trigger multiple flows for the same conversation, requiring message ID deduplication logic.

Ideas for what to build next

  • Add email parsing for phone numbersUse AI Builder or regex expressions to extract phone numbers from email signatures and populate HubSpot contact fields.
  • Create follow-up email automationTrigger automated welcome emails or sales sequences when new contacts are created from inbound emails.

Related guides

Was this guide helpful?
HubSpot + Gmail overviewPower Automate profile →