🔓 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

HubSpot + LinkedIn, cleaner company data and ICP scores

Lisa Granqvist Partner Workflow Automation Expert

Your HubSpot company records are probably “fine” until you need them. Then you find missing LinkedIn URLs, fuzzy employee counts, and five versions of the same company because someone typed the domain differently.

HubSpot admins feel it when routing rules misfire. Marketing ops feels it when segmentation gets messy. And a founder running sales will notice it when reps waste calls on the wrong accounts. This HubSpot LinkedIn enrichment automation fills in the gaps and adds an ICP score so your team knows who to prioritize.

Below, you’ll see how the workflow validates domains, pulls company details from LinkedIn, calculates a consistent ICP score, and then updates (or creates) the HubSpot company record.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: HubSpot + LinkedIn, cleaner company data and ICP scores

The Challenge: HubSpot company records drift (fast)

Company data doesn’t stay clean on its own. A form submission comes in with a Gmail address, so no domain. Another lead submits a personal domain, so it gets treated as a “company.” Someone pastes a LinkedIn URL with tracking parameters, and your dedupe logic misses it. Then you try to run targeting, routing, or enrichment later and realize the CRM has become a patchwork of half-truths. The annoying part is that none of this is hard; it’s just constant.

The friction compounds. Here’s where it breaks down in day-to-day ops.

  • Reps end up googling “company + LinkedIn” and guessing which profile is correct.
  • Non-corporate emails (gmail, yahoo, .edu) slip into workflows and create junk company records.
  • Your ICP scoring is inconsistent because it lives in people’s heads or in a spreadsheet no one trusts.
  • Duplicates creep in when domains, websites, and LinkedIn URLs aren’t normalized the same way every time.

The Fix: LinkedIn enrichment + ICP scoring, synced to HubSpot

This workflow takes a contact email and/or company domain, validates it, enriches the company profile using LinkedIn data, and then updates your HubSpot company object with structured fields you can actually use. It starts by normalizing whatever the form (or internal user) sends: email, domain, and an optional LinkedIn URL. Next, it filters out non-corporate domains so you don’t pollute HubSpot with companies that aren’t really companies. Then it invokes an Airtop-connected LinkedIn enrichment step to retrieve core company attributes like name, tagline, HQ location, website, and employee count. Finally, an AI step calculates an ICP score using those attributes, and the workflow upserts the HubSpot company record so the CRM stays current without manual cleanup.

The workflow begins at a form submission or an internal trigger. From there, it validates the domain, pulls a complete company profile from LinkedIn, and merges everything into one clean set of fields. HubSpot gets updated last, so your team sees the finished record instead of a half-filled draft.

What Changes: Before vs. After

Real-World Impact

Say your team qualifies 20 inbound leads a week. Manually, a decent company check is usually 10 minutes: find LinkedIn, confirm website, estimate size, and jot down notes. That’s about 3 hours a week of “research” before anyone even sends a first email. With this workflow, the trigger takes under a minute (it’s just the form submit), then the enrichment and scoring runs in the background, and HubSpot updates automatically. You still review the account, but now you start from a completed record.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • HubSpot for company upserts and CRM fields
  • Airtop to extract LinkedIn company details
  • OpenAI to calculate the ICP score from attributes
  • Airtop API Key (get it from your Airtop dashboard)

Skill level: Intermediate. You’ll connect accounts, map a few HubSpot properties, and test with real domains.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

Form submission or internal invocation triggers the run. A new lead can kick this off from an n8n Form trigger, or you can call it from another workflow when you want to enrich accounts in bulk.

Inputs get normalized before anything else happens. The workflow standardizes the email, derives the company domain, and keeps an optional LinkedIn URL if it was provided. Small detail, big payoff later, because your matching logic stops being “close enough.”

Corporate domain validation blocks junk early. If the email domain is gmail, yahoo, or an .edu address, the workflow filters it out so you don’t enrich noise and create bad HubSpot companies.

LinkedIn enrichment and ICP scoring run as a packaged sub-workflow. Airtop retrieves the company profile details from LinkedIn, then the OpenAI chat model (via an AI Agent step) turns those attributes into a single ICP score you can use for routing and prioritization.

HubSpot gets updated with mapped fields. A merge/aggregate step combines the enrichment output into structured company attributes (overview, HQ location, website, domain, LinkedIn URL, employee count, ICP score), then the workflow upserts the HubSpot company record.

You can easily modify the ICP criteria to match your market, or map additional fields into HubSpot based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Form Trigger

Set up the form-based entry point and the internal workflow trigger so data can enter the workflow through a form submission or from another workflow.

  1. Open Form Submission Trigger and set Form Title to New contact signup.
  2. Set Form Description to This automation searches for the contact's company and enriches the data accordingly.
  3. In Form Fields, add fields for Airtop Profile (connected to Linkedin) (required), Company domain (required), and Company LinkedIn.
  4. Open Workflow Invocation Trigger and confirm the input fields include Airtop Profile (connected to Linkedin), Company domain, and Company LinkedIn.
  5. Connect both triggers to Normalize Input Fields (the workflow already routes Form Submission TriggerNormalize Input Fields and Workflow Invocation TriggerNormalize Input Fields).

Step 2: Normalize Incoming Data

Ensure the incoming fields are standardized before validation and enrichment.

  1. Open Normalize Input Fields and add assignments for Airtop Profile (connected to Linkedin), Company domain, and Company LinkedIn.
  2. Set the values to expressions: ={{ $json["Airtop Profile (connected to Linkedin)"] }}, ={{ $json["Company domain"] }}, and ={{ $json["Company LinkedIn"] }}.
  3. Confirm the connection from Normalize Input Fields to Validate Corporate Domain is active.

Step 3: Validate and Enrich the Company Data

Filter out non-corporate domains and call the company enrichment workflow using validated inputs.

  1. Open Validate Corporate Domain and ensure the first condition uses notRegex with Left Value set to ={{ $json["Company domain"] }} and Right Value set to =\b(gmail|hotmail|yahoo|outlook|icloud|aol|protonmail|live|msn|ya)\b.
  2. Add the second condition with notEndsWith, Left Value set to ={{ $json["Company domain"] }}, and Right Value set to .edu.
  3. Open Retrieve Company Profile and select the target workflow in Workflow (this node calls another workflow).
  4. Set Workflow Inputs to expressions: ={{ $json["Company domain"] }}, ={{ $json["Company LinkedIn"] }}, and ={{ $json["Airtop Profile (connected to Linkedin)"] }}.
  5. Ensure the flow is Validate Corporate DomainRetrieve Company ProfileCombine Records.

Step 4: Combine, Map, and Update the Company Record

Aggregate the enrichment outputs, map the fields into a clean payload, then pass the final data to the HubSpot update workflow.

  1. In Combine Records, confirm Aggregate is set to aggregateAllItemData.
  2. Open Map Company Attributes and add assignments such as company_profile set to ={{ $json[""][0].company_profile.overview }} and company_domain set to ={{ $('Validate Corporate Domain').item.json["Company domain"] }}.
  3. Map the remaining fields with their expressions: city, name, country, tagline, employee_count, icp_score, linkedin, state, and website as shown in the node.
  4. Open Update HubSpot Company and select the target workflow in Workflow.
  5. Ensure Workflow Inputs include expressions like ={{ $json.city }}, ={{ $json.name }}, and ={{ $json.company_domain }} to pass the mapped fields into the update workflow.

⚠️ Common Pitfall: The Retrieve Company Profile and Update HubSpot Company nodes require a target workflow to be selected. If the workflow list is empty, refresh your n8n instance or ensure the target workflows exist and are accessible.

Step 5: Test and Activate Your Workflow

Validate the end-to-end flow and enable the automation for production.

  1. Click Execute Workflow and submit the Form Submission Trigger with a corporate domain to test the full path.
  2. Verify that Validate Corporate Domain passes the input, Retrieve Company Profile returns data, and Combine Records aggregates results.
  3. Confirm Map Company Attributes outputs values like company_profile, icp_score, and employee_count, then ensure Update HubSpot Company receives them.
  4. Once successful, toggle the workflow to Active so new submissions and internal calls run automatically.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • HubSpot credentials can expire or need specific permissions. If things break, check the connected app settings and property access in HubSpot first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Common Questions

How quickly can I implement this HubSpot LinkedIn enrichment automation?

Usually about an hour if your HubSpot and Airtop accounts are ready.

Can non-technical teams implement this company enrichment and scoring?

Yes. You’ll mostly be connecting accounts and choosing which HubSpot properties to map. If you can build a HubSpot form, you can handle this.

Is n8n free to use for this HubSpot LinkedIn 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 Airtop and OpenAI usage costs.

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.

How do I adapt this HubSpot LinkedIn enrichment solution to my specific challenges?

You can. Most teams start by adjusting the ICP logic in the AI Agent/OpenAI scoring step so it reflects their real buying signals (industry, location, employee count bands, tech profile). You can also change what gets written into HubSpot by editing the “Map Company Attributes” field mapping, which is where overview, HQ location, LinkedIn URL, and employee count are standardized. If you already have LinkedIn URLs, keep the optional LinkedIn input and treat it as the “source of truth” so the enrichment step doesn’t guess.

Why is my HubSpot connection failing in this workflow?

Usually it’s expired credentials or missing permission to edit company properties. Reconnect the HubSpot account in n8n and confirm the integration has access to the Company object and the specific fields you’re updating. Also check if a property name changed in HubSpot, because a renamed field can look like an auth problem when it’s really a mapping issue.

What’s the capacity of this HubSpot LinkedIn enrichment solution?

On n8n Cloud Starter, you can run a healthy volume for small teams, and higher tiers handle more. If you self-host, there’s no execution cap, it mainly depends on your server and how quickly Airtop/LinkedIn enrichment returns results. In practice, many teams run this for every inbound lead and a weekly batch cleanup without issues.

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

Often, yes, because this kind of flow needs filtering, merging, and reusable sub-workflows, and n8n handles that without turning your bill into a surprise. Zapier or Make can still work if you only need a light enrichment step and a simple “update record” action. The moment you want domain validation, structured mapping, and a repeatable scoring model, n8n is usually the calmer option. If you’re on the fence, Talk to an automation expert and we’ll map the cheapest path that still works.

Clean company data is a compounding advantage, honestly. Set this up once and your HubSpot records stop decaying every time a new lead comes in.

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