

How to Parse Email Signatures and Update HubSpot with Make
Automatically extract phone numbers, job titles, and company names from Gmail signatures and update contact properties in HubSpot.
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 with inconsistent email signature formats who need custom parsing rules and conditional contact updating.
Not ideal for
Teams with standardized signatures who want simple field extraction without complex branching logic.
Sync type
pollingUse case type
syncReal-World Example
A 25-person B2B consulting firm uses this to automatically capture contact details from client emails and update their HubSpot database. Before automation, account managers manually copied phone numbers and titles from email signatures into contact records, missing about 60% of updates. Now signature data gets parsed and updated within 15 minutes of email receipt.
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 | ||
| Email Address | email | |
| Contact ID | hs_object_id | |
4 optional fields▸ show
| Phone Number | phone |
| Job Title | jobtitle |
| Company Name | company |
| Last Activity Date | notes_last_updated |
Step-by-Step Setup
Scenarios > Create new > Gmail > Watch emails
Create New Scenario
Set up a new Make scenario to process incoming Gmail messages. This workflow will trigger whenever new emails arrive in your Gmail inbox.
- 1Click 'Create a new scenario' from your Make dashboard
- 2Search for 'Gmail' in the app selector
- 3Select 'Watch emails' trigger module
- 4Connect your Gmail account and authorize permissions
Gmail module > Configuration
Configure Gmail Trigger
Set the trigger to monitor all incoming emails and capture the full message content including signatures. The trigger will poll Gmail every 15 minutes for new messages.
- 1Set 'Folder' to 'INBOX'
- 2Change 'Maximum number of results' to 10
- 3Enable 'Mark as read' to prevent reprocessing
- 4Set 'Format' to 'Full' to capture complete email content
Gmail > + > Tools > Text parser > Match pattern
Add Text Parser Module
Insert a text parser to extract signature content from the email body using regex patterns. This module isolates the signature block before field extraction.
- 1Click the + button after Gmail module
- 2Search for 'Text parser' in tools
- 3Select 'Match pattern' function
- 4Map Gmail body content to the Text field
Text parser > Configuration
Configure Signature Extraction Pattern
Set up regex to capture email signature blocks that typically appear after line breaks or signature separators. This pattern catches most standard signature formats.
- 1In 'Pattern' field, enter: (--\s*|\n\n)([\s\S]*?)$
- 2Enable 'Global match' checkbox
- 3Set 'Text' to map from Gmail > plain/text body
- 4Enable 'Multiline' flag for signature parsing
Text parser > + > Tools > Text parser
Extract Phone Numbers
Add another text parser to find phone numbers in the signature content using a comprehensive phone number regex pattern. This catches US and international formats.
- 1Add another 'Text parser' module after the first one
- 2Select 'Match pattern' function
- 3Map signature text from previous parser output
- 4Enter phone regex: (\+?\d{1,4}[\s.-]?)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}
Text parser configuration
Extract Job Title
Create a third parser to capture job titles that typically appear on lines by themselves in signatures. This pattern looks for common title indicators and positioning.
- 1Add third 'Text parser' module
- 2Use pattern: (CEO|CTO|VP|Director|Manager|Analyst|Specialist|Coordinator)[^\n]*
- 3Map to the same signature text source
- 4Enable 'Case insensitive' flag
Text parser configuration
Extract Company Name
Add a fourth parser to identify company names, usually found on the first or second line of email signatures. This looks for capitalized words that aren't personal names.
- 1Insert fourth 'Text parser' module
- 2Pattern: (?<!\w)[A-Z][a-zA-Z&\s,.']*(?:Inc|LLC|Corp|Ltd|Company|Co\.|Group)[^\n]*
- 3Map signature text from first parser
- 4Keep 'Global match' unchecked to get first company match
Parsers > + > HubSpot > Search for CRM Objects
Add HubSpot Search Module
Insert HubSpot contact search to find existing contacts by email address before updating. This prevents creating duplicate contacts for signature updates.
- 1Click + after the parser modules
- 2Search for 'HubSpot' and select it
- 3Choose 'Search for CRM Objects' action
- 4Set Object Type to 'Contacts'
HubSpot Search module > Configuration
Configure Contact Search Parameters
Set up the search to find contacts by email address from the original Gmail message. This ensures you're updating the right contact record with signature data.
- 1In 'Property to search' field, select 'email'
- 2Map 'Value' to Gmail > from > email address
- 3Set 'Limit' to 1
- 4Leave 'After' field empty
HubSpot Search > + > Flow control > Router
Add Router Module
Insert a router to handle cases where contacts exist versus when they need to be created. This splits the workflow into update and create paths.
- 1Click + after HubSpot search module
- 2Select 'Flow control' from tools
- 3Choose 'Router' option
- 4Connect the router to HubSpot search output
Router path 1 > HubSpot > Update a CRM Object
Configure Update Contact Path
Set up the first router path to update existing contacts with parsed signature information. This path only executes when the search finds a matching contact.
- 1Click the first router path
- 2Add HubSpot 'Update a CRM Object' module
- 3Set Object Type to 'Contact'
- 4Map Contact ID from search results
HubSpot Update module > Properties
Map Signature Fields to HubSpot Properties
Configure the contact update to populate phone, job title, and company fields with parsed signature data. This completes the signature-to-CRM data flow.
- 1Map 'Phone number' to phone parser output
- 2Map 'Job title' to title parser output
- 3Map 'Company name' to company parser output
- 4Set filter condition: search results > total > greater than 0
Drop this into a Make custom function.
JavaScript — Custom Functionfunction cleanPhone(phoneNumber) {▸ Show code
function cleanPhone(phoneNumber) {
// Remove all non-digits except leading +
return phoneNumber.replace(/[^\d+]/g, '').replace(/^(\+)(\d)/, '+1$2');... expand to see full code
function cleanPhone(phoneNumber) {
// Remove all non-digits except leading +
return phoneNumber.replace(/[^\d+]/g, '').replace(/^(\+)(\d)/, '+1$2');
}
// Use in Make's JavaScript function module to normalize phone format before HubSpot updateScaling Beyond 300+ emails/day+ Records
If your volume exceeds 300+ emails/day records, apply these adjustments.
Use Gmail Label Filtering
Configure the Gmail trigger to only watch specific labels like 'Client Communications' instead of the entire inbox. This reduces unnecessary processing of internal emails and newsletters.
Implement Batch Processing
Increase the Gmail trigger's 'Maximum number of results' to 50 and process multiple emails per scenario run. This reduces total operations and improves efficiency.
Add Rate Limiting
Insert a Sleep module between HubSpot operations to avoid hitting API rate limits. Set 2-3 second delays when processing large batches of contact updates.
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 custom regex parsing and complex conditional logic. Make's visual router system handles the contact-exists-or-not branching cleanly, and multiple text parsers let you extract different signature elements in sequence. Pick Zapier instead if your signatures follow a super consistent format - their built-in text extraction is simpler for basic phone/title parsing.
This workflow uses about 8 operations per email: Gmail trigger, 4 text parsers, HubSpot search, router decision, and contact update. At 200 emails/month, that's 1,600 operations monthly. That fits Make's free tier at 1,000 ops plus their $9 Core plan. Zapier would cost $20/month for the multi-step Zaps tier. N8N is free if self-hosted but requires server management. Make wins on cost and complexity handling.
Zapier's formatter has built-in phone number extraction that's more reliable than custom regex - you don't need to write patterns for different phone formats. N8N's JavaScript function nodes let you write custom parsing logic that's more powerful than Make's text parsers for complex signature variations. But Make's visual router makes the contact-update-vs-create logic much clearer than Zapier's path filters or N8N's IF nodes.
You'll hit signature format inconsistencies fast. Sales people use everything from iPhone auto-signatures to custom HTML blocks, and your regex will miss edge cases. HubSpot's contact search is case-sensitive on email addresses - Gmail's 'from' field might be [email protected] while HubSpot has [email protected], breaking the match. The Gmail API sometimes takes 2-3 minutes to see new emails, so don't expect instant signature processing.
Ideas for what to build next
- →Add Slack Notifications for New Contacts — Set up alerts to your sales channel when signature parsing creates new HubSpot contacts from previously unknown email addresses.
- →Create Company Records from Signatures — Extend the workflow to check if parsed company names exist in HubSpot and automatically create company records when they don't.
- →Build Signature Data Quality Reports — Send weekly Google Sheets reports showing parsing success rates and contacts with missing phone numbers or job titles for manual cleanup.
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