🔓 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 + Google Sheets: lookalike leads, deduped

Lisa Granqvist Partner Workflow Automation Expert

Your best customers are sitting in HubSpot, but turning them into a fresh list of lookalike prospects usually means exporting, cleaning columns, hunting for domains, and praying you don’t spam the same company twice.

This HubSpot Sheets automation hits GTM leads first, but growth marketers and small sales teams feel it too. You get a deduped, outreach-ready Google Sheet built from Closed Won companies, without the weekly spreadsheet ritual.

Below you’ll see how the workflow runs, what it produces, and where the real time savings come from (it’s more than you think).

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: HubSpot + Google Sheets: lookalike leads, deduped

The Problem: Lookalike prospecting turns into spreadsheet work

“We should go after more companies like our best customers” is a great strategy right up until the moment someone has to build the list. You pull Closed Won companies from HubSpot, then you realize half the records have messy domains, different naming, or duplicates you didn’t notice last time. You run an enrichment tool, get a pile of similar companies back, and then spend the rest of the afternoon formatting rows so your team can actually use it. Next week, you do it again. And you still don’t fully trust the list.

The friction compounds. Here’s where it breaks down in real life.

  • Exports drift from reality, so your outreach list is outdated before you even start calling.
  • Domains are inconsistent in HubSpot records, which makes “similar companies” results noisy.
  • Duplicates creep in across runs, and now the team argues about which row is the “real” one.
  • Someone has to normalize fields for campaigns, and it quietly steals a few hours every week.

The Solution: Turn Closed Won companies into deduped lookalikes

This n8n workflow runs on a schedule (weekly by default) and uses your Closed Won customer base as “seeds” for new prospect discovery. It pulls companies from HubSpot, filters down to your top performers (based on a revenue percentile), and extracts each company’s website domain. Those domains get sent to the CompanyEnrich Similar Companies API, which returns a list of businesses that closely match your best customers. Then the workflow cleans and normalizes the enriched data, and writes it into a Google Sheet. The sheet is structured to use the domain as the “unique key,” so repeated runs update existing rows instead of piling on duplicates.

The workflow starts with a scheduled run, then HubSpot becomes the source of truth for “who counts as a great customer.” CompanyEnrich generates the lookalikes, and Google Sheets becomes the clean, always-current list your team can actually work from.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you pick your top 50 Closed Won companies as seeds and aim to generate 10 similar companies per seed. Manually, you might spend about 20 minutes exporting, cleaning domains, and pasting results per seed, which is roughly 15 hours of fiddly work across the week. With this workflow, you set the schedule once, let it run, and then you only review the Google Sheet after it finishes. That review is usually 10–15 minutes, because the rows are already normalized and deduped by domain.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • HubSpot to fetch Closed Won company records
  • Google Sheets to store a deduped prospect list
  • CompanyEnrich API key (get it from your CompanyEnrich dashboard)

Skill level: Intermediate. You’ll connect accounts, paste an API key, and confirm your sheet has a domain column for upserts.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A scheduled run kicks things off. The workflow runs weekly by default, but you can make it daily or on-demand when you’re launching a new campaign.

HubSpot companies get pulled and ranked. n8n fetches your company records, then a filter function selects the “top” slice based on a revenue percentile so you’re seeding lookalikes from what’s actually working.

Domains are extracted and sent to CompanyEnrich. The workflow derives a clean website domain per company, then calls the Similar Companies endpoint in batches so you can scale without babysitting it.

Results are cleaned, then upserted into Sheets. Similar companies are expanded into individual rows, normalized into consistent output fields, and written into Google Sheets using the domain column as the dedupe key.

You can easily modify the top-percentage filter to match your sales motion based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

Set up the workflow to run on a scheduled interval so it can pull and process companies automatically.

  1. Add and open Scheduled Run Trigger.
  2. Set the schedule rule to weeks in RuleInterval.
  3. Confirm the connection from Scheduled Run Trigger to Retrieve HubSpot Firms.

Step 2: Connect HubSpot and Select Top Firms

Pull all companies from HubSpot and rank them by annual revenue to keep only the top percentage.

  1. Open Retrieve HubSpot Firms and set Resource to company.
  2. Set Operation to getAll and Return All to true.
  3. Credential Required: Connect your hubspotAppToken credentials.
  4. Open Select Top Companies and keep the function code to filter the top 5% by annualrevenue.

Step 3: Derive Domains and Enrich with CompanyEnrich

Extract the website domain, iterate through batches, and call the CompanyEnrich API to find similar companies.

  1. Open Derive Website Domain and keep the function code that maps properties.domain or properties.website into a domain field.
  2. Open Iterate Batches and keep default batch settings (no options required).
  3. Open CompanyEnrich API Call and set URL to https://api.companyenrich.com/companies/similar.
  4. Set Method to POST, Body to ={{ "domain": "{{$json.domain}}" } }}, and Headers to { "Authorization": "Bearer [CONFIGURE_YOUR_TOKEN]", "Content-Type": "application/json", "Accept": "application/json" }.

⚠️ Common Pitfall: Replace [CONFIGURE_YOUR_TOKEN] with your real CompanyEnrich API token, or the request will fail.

Step 4: Format Output and Upsert to Google Sheets

Split the API response into items, normalize fields, and append/update rows in Google Sheets.

  1. Open Expand Items and set Field to Split Out to items.
  2. Open Format Output Fields and keep Mode as raw with the existing JSON Output expression.
  3. Open Upsert Sheet Row and set Operation to appendOrUpdate.
  4. Set Document to [YOUR_ID] and Sheet to [YOUR_ID].
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials.

Tip: Keep Matching Columns set to domain to avoid duplicate company rows.

Step 5: Test and Activate Your Workflow

Run a manual test to validate data flow from HubSpot to CompanyEnrich and into Google Sheets, then activate for production.

  1. Click Execute Workflow to run a manual test from Scheduled Run Trigger.
  2. Confirm that Retrieve HubSpot Firms returns companies and Select Top Companies outputs a filtered list.
  3. Verify that CompanyEnrich API Call returns similar company data and Upsert Sheet Row writes rows to your sheet.
  4. Turn the workflow Active to allow weekly runs on the configured schedule.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • HubSpot credentials can expire or need specific permissions. If things break, check the HubSpot connected app settings and the n8n credential test 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.

Frequently Asked Questions

How long does it take to set up this HubSpot Sheets automation automation?

About 30 minutes if your HubSpot, Sheets, and API key are ready.

Do I need coding skills to automate HubSpot Sheets automation?

No. You’ll mostly be connecting accounts and tweaking a couple of filter values. The “hard part” is just making sure your companies have valid domains.

Is n8n free to use for this HubSpot Sheets automation 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 CompanyEnrich API credits based on how many similar companies you pull each run.

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 customize this HubSpot Sheets automation workflow for different lookalike filters (industry or location)?

Yes, but you’ll do it in two places. You can tighten the seed list by adjusting the “Select Top Companies” filter logic (for example, only specific lifecycle stages or regions), and you can refine what gets written to Sheets by editing the “Format Output Fields” mapping. Common tweaks include changing the Top_Percent value, filtering by employee size, and keeping only certain countries before the upsert.

Why is my HubSpot connection failing in this workflow?

Usually it’s expired credentials or missing company-read permissions in the connected HubSpot app.

How many companies can this HubSpot Sheets automation automation handle?

It depends on your execution limits and your API credits. On n8n Cloud Starter, you’re working within your monthly execution allowance, which is fine for most weekly list builds. If you self-host, there’s no execution cap, so you’re mostly constrained by server resources and how aggressively you batch requests. Practically, teams often start with a few dozen seed companies and scale up once they see the Sheet quality. If you ask for thousands of lookalikes in one run, expect longer runtimes and higher CompanyEnrich credit usage.

Is this HubSpot Sheets automation automation better than using Zapier or Make?

Often, yes, because this kind of workflow needs batching, filtering, and upserts that get awkward (and expensive) in simpler tools. n8n also makes it easier to control the “top companies” logic in one place, so your seed criteria doesn’t get scattered across multiple zaps or scenarios. If you want a basic “HubSpot to Sheet” sync, Zapier or Make can be quick. For lookalikes plus dedupe plus normalization, n8n is usually the calmer choice. Talk to an automation expert if you want help picking the simplest setup that still works.

Once this is running, your lookalike list stops being a “project” and becomes a weekly asset. The workflow handles the repetitive cleanup so you can focus on outreach that actually converts.

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