🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Typeform + HubSpot: enriched leads, cleaner CRM

Lisa Granqvist Partner Workflow Automation Expert

Your form leads are coming in. Your calendar bookings too. But what lands in HubSpot is usually a half-filled contact, a personal email, and a “please follow up” note that turns into 20 minutes of manual research.

This HubSpot lead enrichment automation hits sales ops first, honestly. But marketing managers and agency owners feel it too, because messy records quietly slow every campaign and pipeline review.

You’ll set up one workflow that filters out personal emails, enriches business leads with company context, then creates (or updates) the contact in HubSpot so follow-up is fast and consistent.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Typeform + HubSpot: enriched leads, cleaner CRM

Why This Matters: leads that clog your CRM

Lead capture is easy. What’s hard is what happens after. A Typeform submission comes in with a name and an email, then someone has to figure out if it’s real, if it’s a company, and what that company even does. Calendly adds another stream, which usually means another manual process. The result is a HubSpot portal full of duplicates, “gmail.com” contacts that will never buy, and sales reps doing detective work instead of following up while the lead is warm.

It adds up fast. Here’s where it usually breaks down.

  • Personal email leads get treated like business inquiries, which wastes follow-up time and pollutes reporting.
  • Company research happens ad hoc in tabs and spreadsheets, so details are inconsistent and often wrong.
  • Typeform and Calendly data arrives in different shapes, and the “quick fix” is copy-paste into HubSpot properties.
  • Duplicates sneak in when reps create contacts manually, then automation creates another record later.

What You’ll Build: Typeform + Calendly to enriched HubSpot contacts

This workflow listens for new leads from two places: Typeform form submissions and Calendly meeting bookings. The moment either one comes in, n8n merges them into a single “lead stream” so you’re not maintaining two separate automations. Next, it standardizes the incoming fields (name, email, phone, message, and domain) into one consistent format that HubSpot can reliably map. Then it checks the email domain. If it’s a free domain like Gmail or Yahoo, the workflow stops there. If it looks like a business domain, the workflow sends that domain to an AI agent, which returns structured company details you can actually use in sales and segmentation.

From there, the lead data and the AI enrichment get merged together, metadata like timestamp and workflow ID is added, and HubSpot gets updated automatically. You end up with a contact record that’s cleaner, richer, and ready for a quick follow-up instead of a research task list.

What You’re Building

Expected Results

Say you get 15 new leads a week from Typeform and 10 Calendly bookings, so 25 total. Manually, it’s usually about 10 minutes to check the domain, Google the company, find a website, and drop a LinkedIn link into HubSpot, which is about 4 hours a week. With this workflow, the “work” is basically zero after setup: the lead arrives, enrichment runs in the background, and HubSpot is updated automatically. You still review the best ones, but you’re not doing the tedious part anymore.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Typeform to trigger on new form submissions.
  • Calendly to trigger on new meeting invitees.
  • HubSpot to create or update contacts.
  • OpenAI API key (get it from your OpenAI dashboard).

Skill level: Intermediate. You’ll connect accounts, map a few fields, and test with real submissions.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A new Typeform submission or Calendly booking arrives. Either trigger can kick things off, so you’re covered for both “contact us” intent and “book a call” intent.

The two lead sources get combined and cleaned. n8n merges the incoming events, then a small code step normalizes fields like name, email, phone, message, and the extracted domain so downstream steps don’t have to guess.

The domain gets validated before enrichment. An if-check filters out free email providers. Those leads are ignored, which keeps HubSpot lists and reporting from drifting over time.

AI enriches company details, then HubSpot is updated. A research agent calls an OpenAI chat model (GPT-4o-mini) to return structured company data, merges it with the original lead, adds metadata, and creates or updates the HubSpot contact.

You can easily modify the domain rules to allow certain personal domains (or block more of them) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Typeform and Calendly Triggers

Set up the two lead intake triggers that feed the workflow and converge into a single stream.

  1. Open 🧾 Typeform Intake and set Form ID to [YOUR_ID].
  2. Credential Required: Connect your typeformApi credentials in 🧾 Typeform Intake.
  3. Open 📅 Calendly Intake and confirm Events includes invitee.created.
  4. Credential Required: Connect your calendlyApi credentials in 📅 Calendly Intake.
  5. Verify the execution flow: 🧾 Typeform Intake outputs to 🔀 Combine Lead Feeds and 📅 Calendly Intake outputs to 🔀 Combine Lead Feeds in parallel.

Tip: Make sure both trigger webhooks are registered by clicking Listen for test event on each trigger once.

Step 2: Connect and Normalize Lead Data

Merge the intake streams and normalize fields into a consistent schema.

  1. Ensure 🔀 Combine Lead Feeds is connected to both triggers and outputs to 🛠️ Normalize Lead Fields.
  2. Open 🛠️ Normalize Lead Fields and keep the JavaScript Code as provided to map Typeform and Calendly payloads.
  3. Confirm the normalization logic extracts domain from email and sets source to Typeform or Calendly.

⚠️ Common Pitfall: If your Typeform field labels differ from Name, Email, Phone Number, or Message, update the mapping in 🛠️ Normalize Lead Fields.

Step 3: Set Up Domain Validation and AI Enrichment

Filter out consumer domains and enrich company data using the AI agent.

  1. Open ⚖️ Validate Domain and verify the condition uses Left Value ={{ $json.domain }} with Operation notEquals and Right Value gmail.com.
  2. Open 🤖 Company Research Agent and keep the prompt text, ensuring it references {{ $json.domain }} in the instruction.
  3. Confirm 💬 Language Model Connector is connected as the language model for 🤖 Company Research Agent.
  4. Credential Required: Connect your openAiApi credentials in 💬 Language Model Connector (credentials are set on the parent model node, not the agent).

Step 4: Merge Enrichment and Sync to CRM

Combine normalized lead data with AI enrichment and push to HubSpot.

  1. Open 🧬 Merge Lead Enrichment and keep the JavaScript Code that pulls data from ⚖️ Validate Domain and 🤖 Company Research Agent.
  2. Open 💼 CRM Sync Action and confirm Email is set to ={{ $json.email }}.
  3. Verify the additional fields map correctly, including ={{ $json.company_name }}, ={{ $json.industry }}, ={{ $json.website }}, and custom properties like company_s_linkedin and company_descreption.
  4. Credential Required: Connect your hubspotAppToken credentials in 💼 CRM Sync Action.

⚠️ Common Pitfall: If the HubSpot custom property names don’t exist (e.g., company_s_linkedin), create them in HubSpot or adjust the property keys in 💼 CRM Sync Action.

Step 5: Test and Activate Your Workflow

Run an end-to-end test to confirm data passes through normalization, enrichment, and CRM sync.

  1. Click Execute Workflow and submit a test Typeform response or Calendly booking.
  2. Verify 🛠️ Normalize Lead Fields outputs a clean JSON object with name, email, domain, and source.
  3. Check that 🤖 Company Research Agent returns a JSON response and 🧬 Merge Lead Enrichment combines it into a single enriched record.
  4. Confirm a new or updated contact appears in HubSpot from 💼 CRM Sync Action with the enriched fields populated.
  5. Toggle the workflow to Active once testing is successful.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • HubSpot credentials can expire or need specific permissions. If things break, check your connected app/scopes in HubSpot settings first, then reconnect the HubSpot node in n8n.
  • If you’re using AI enrichment and the OpenAI request returns slowly, processing times vary. Bump up any waiting or retry behavior if downstream nodes fail due to empty or partial responses.
  • The default AI prompt is usually too generic for real sales use. Add your preferred formatting (shorter descriptions, stricter JSON fields, your ICP keywords) early or you will be cleaning records later.

Quick Answers

What’s the setup time for this HubSpot lead enrichment automation?

About 30 minutes if your accounts are ready.

Is coding required for this lead enrichment outcome?

No. You might edit a small “normalize fields” snippet, but it’s optional and already included in the workflow.

Is n8n free to use for this HubSpot lead enrichment workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs, which are usually a few cents per enriched lead depending on your prompt length.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I modify this HubSpot lead enrichment workflow for different use cases?

Yes, and you should. You can adjust the Validate Domain rules to allow certain personal domains (like partners) or to block more providers. You can also change what the AI returns by editing the prompt used by the Company Research Agent and the OpenAI chat model connector, then remap fields in the HubSpot sync step. Common tweaks include adding “tech stack,” returning a shorter company description, or only enriching leads that include a job title.

Why is my HubSpot connection failing in this workflow?

Usually it’s expired credentials or missing scopes on the HubSpot private app connection. Reconnect the HubSpot account in n8n and confirm the contact write permissions are enabled. If you’re upserting contacts, also check that the email field is always present after the normalize step, because HubSpot will reject incomplete payloads.

What volume can this HubSpot lead enrichment workflow process?

If you self-host, there’s no execution cap (it depends on your server). On n8n Cloud, the practical limit is your plan’s monthly executions, and this workflow uses one execution per lead. In real usage, most teams can process dozens of leads an hour without thinking about it; the slowest part is usually the AI enrichment call.

Is this HubSpot lead enrichment automation better than using Zapier or Make?

Often, yes, because this flow benefits from branching logic (domain filtering), merging two triggers cleanly, and controlling the AI enrichment step without paying extra for every conditional. n8n is also easier to extend when you want “only enrich leads that match X,” because you can edit the logic directly instead of stacking filters. Self-hosting matters too if you’re getting a lot of submissions and don’t want to worry about task limits. Zapier or Make can still be fine for a simple one-source-to-one-destination setup, especially if you won’t do AI enrichment. If you’re unsure, Talk to an automation expert and you’ll get a straight recommendation based on your volume and tooling.

Once this is running, HubSpot stops being a graveyard of half-contacts and turns back into a system your team can trust. The workflow does the repetitive sorting and research so you can spend your time on the conversations that close.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal