Turn inbound enquiry emails into HubSpot contacts without duplicates
Watches the public sales aliases, ignores free-mail senders, then asks HubSpot whether the address is already known.
A Gmail Trigger watches the sales, hello and enquiries aliases and excludes anything you sent. A Set node lower-cases the address, splits out the sending domain and truncates the enquiry text. A Filter requires a syntactically valid address and rejects consumer mailboxes, because free-mail senders are usually support questions rather than leads. The HubSpot search operation then asks whether the address already exists — one API call that removes duplicate contacts entirely. An IF splits on the result: unknown addresses are created as contacts with first and last name, the sending domain as the company and lifecycle stage Lead, while known addresses are appended to a repeat-enquiry sheet rather than overwriting curated CRM fields. Every external call retries and routes failures to an error rail that names the lost lead and posts it to Discord.
Key benefits
- ✓Inbound leads reach the CRM in under a minute instead of being typed in days later
- ✓Searching before writing means the same enquirer can never become two contacts
- ✓Existing contacts are logged rather than overwritten, so a rep's curated fields survive
- ✓Consumer mailboxes are filtered out with a visible, editable list — not a hidden heuristic
- ✓Ships with pinned samples covering both a real business lead and a free-mail sender
Use cases
- →Teams whose leads arrive as plain email rather than through a form
- →Sales ops cleaning up a CRM already polluted by duplicate inbound contacts
- →Agencies routing client enquiries into a shared HubSpot portal
- →Anyone who has quoted a customer twice because they existed twice
Integrations
Workflow preview (9 nodes)
The template's actual node layout and connections. Node parameters and credential slots unlock with the download.
What's inside (9 nodes)
A look at the node types this workflow uses. No purchase required — full parameters and credentials are yours after you buy.
From download to running in 3 steps
- 1Import. In n8n, open Workflows → menu → “Import from File” and pick the downloaded JSON.
- 2Connect. Add your own credentials on the app nodes - n8n highlights exactly which ones need them.
- 3Activate. Run it once to test, then toggle Active. The automation is live.
What you'll learn
Core levelA compact production shape: validation and error handling without extra machinery.
- •Moving data between Gmail, HubSpot and Google Sheets in a single run
- •Adding retries and an explicit error path to external calls
- •Testing against pinned sample data before connecting anything real
Every node carries its own documentation on the canvas, plus notes explaining why the architecture was built this way, a credential setup guide, troubleshooting, and three practice exercises. Sample data comes pinned to the trigger, so you can hit Execute and watch data flow before connecting a single account.
Common questions
What exactly do I get?
The complete, ready-to-import n8n workflow as a JSON file, delivered instantly after payment. Import it into your own n8n (cloud or self-hosted), add your credentials, and it runs.
How do I import it into n8n?
In n8n, open Workflows, click the three-dot menu, choose “Import from File”, and select the downloaded JSON. Then connect your own app credentials on the highlighted nodes.
Do I need anything else for it to work?
You need your own n8n instance and accounts/credentials for the apps this workflow connects to (Gmail, HubSpot, Google Sheets, Discord). No coding is required.
What if it doesn't work for me?
If the file is faulty, won't import, or isn't as described, contact us within 7 days and we'll fix it or refund you - see our refund policy.
Can I modify or resell it?
You can freely adapt and use it in your own or your clients' projects. Reselling or redistributing the template file itself is not permitted.
Related templates
Capture demo requests with HubSpot & Gmail
Capture forms on n8n: runs when a form is submitted across HubSpot, Gmail and Google Sheets, starting at "Normalize Lead Payload". 23 documented nodes.
Route demo requests for capture forms
Capture forms on n8n: runs when a form is submitted across Google Sheets, HubSpot, Gmail, Slack and Notion, starting at "Normalize Lead Payload". 32 documented nodes.
Capture inbound leads with HubSpot and Gmail
Capture forms on n8n: runs when a form is submitted across HubSpot, Gmail and Google Sheets, starting at "Normalize Lead Payload". 22 documented nodes.
Route inbound leads: Slack, form
Capture forms on n8n: runs when a form is submitted across Slack, Google Sheets, HubSpot and Discord, starting at "Score the Lead". Routes each kind of record down its own branch. 23 documented nodes.