🔓 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

Google Sheets to HubSpot, enriched company records

Lisa Granqvist Partner Workflow Automation Expert

Your pipeline looks “full” until you open the company records. Half the fields are blank, half are inconsistent, and someone on your team is spending their afternoon Googling basic firmographics.

This is where Sheets HubSpot enrichment hits hardest for growth marketers trying to segment, and for sales ops cleaning CRM data before outreach. Agency teams building prospect lists feel it too. You want complete company profiles without turning research into a part-time job.

This n8n workflow pulls domains from Google Sheets, enriches them via Sona, and creates or updates HubSpot company records with mapped custom properties. You’ll see what it automates, what results to expect, and how to avoid the common setup traps.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets to HubSpot, enriched company records

The Problem: CRM company records are always incomplete

Starting from a domain list sounds simple until you try to use it in HubSpot. One person pastes domains into the CRM, another person hunts down employee count, location, and industry, and then someone else tries to standardize it so segmentation doesn’t break. The worst part is the context switching: open LinkedIn, open the website, copy a description, guess the company size, repeat. Do that 50 times and you’ve lost the day, plus you still don’t fully trust the data you entered.

The friction compounds. Not because one step is hard, but because you do it over and over and over.

  • Basic lists in Google Sheets don’t translate into usable HubSpot segments when key fields are empty.
  • Manual research takes about 10 minutes per company, and “quick lookups” turn into hours by Friday.
  • Even careful teams introduce messy formatting, which means broken filters and unreliable reporting.
  • Custom property setup in HubSpot is tedious, so people avoid it and store enrichment in random notes.

The Solution: Enrich domains from Sheets and sync complete company profiles to HubSpot

This workflow starts with a simple input: a Google Sheet column named website_Domain. When you run it, n8n collects the domains, prepares them for batch processing, and then sets up (or confirms) the HubSpot custom properties you’ll need for Sona enrichment data. After that, it loops through each domain, calls the Sona API to fetch firmographic and business intelligence, and creates a HubSpot company record with the standard fields. Finally, it formats the enrichment payload and patches your HubSpot company with all the Sona-mapped custom fields so the record is actually useful for segmentation and targeting.

The workflow begins with a manual launch, which is perfect for testing on 2–3 companies before you scale up. Then it moves through three core phases: domain collection, HubSpot field preparation, and enrichment + CRM sync. A short 2-second pause is built in to reduce rate-limit headaches when you process larger lists.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you add 50 new domains to your sheet each week. Manually, at roughly 10 minutes of research and data entry per company, that’s about 8 hours spent on lookups and copy-paste. With this workflow, you kick off a run in a minute or two, then let it process in batches with a 2-second pause between companies, which usually finishes in under 30 minutes for a list that size. That’s most of a workday back, and your HubSpot fields stay standardized.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets as the source of company domains
  • HubSpot to store and segment enriched companies
  • Sona API key (get it from your Sona dashboard)

Skill level: Intermediate. You’ll connect accounts, add tokens, and verify a few property mappings in HubSpot.

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

How It Works

You launch the run from n8n. The workflow uses a manual trigger so you can test safely before you automate it on a schedule.

Domains get pulled from Google Sheets and prepared for batching. n8n reads your website_Domain column, aggregates the values into a single list, and then expands them back into individual items so each company can be enriched one-by-one.

HubSpot is prepared to store the enrichment cleanly. A HubSpot field creation call runs early, which means Sona data lands in dedicated custom properties instead of being shoved into notes or random text fields.

Sona enrichment runs, then HubSpot records are created and patched. For each domain, the workflow calls Sona, creates the company record in HubSpot, formats the enrichment into your property schema, and updates the record. A short wait helps avoid rate limiting as the batch progresses.

You can easily modify the enrichment fields you store to match your segmentation needs based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts manually so you can validate enrichment and HubSpot updates before automating.

  1. Add and open Manual Launch.
  2. Keep default settings; this node requires no parameters.
  3. Connect Manual Launch to Fetch Sheet Companies.

Step 2: Connect Google Sheets

Pull the list of companies to enrich from your Google Sheet.

  1. Open Fetch Sheet Companies and set Document to [YOUR_ID].
  2. Set Sheet to Sheet1 (value gid=0).
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials.

Make sure your sheet includes a column named Website Domain, as later nodes reference it directly.

Step 3: Set Up Domain Aggregation and Looping

This section aggregates domains, prepares an array, and expands items for batching.

  1. Open Combine Domain List and ensure Fields to Aggregate includes Website Domain.
  2. In Map Domains for Loop, set domains to {{ $('Combine Domain List').first().json['Website Domain'] }}.
  3. In Expand Domain Items, set Field to Split Out to domains.
  4. Verify the flow: Fetch Sheet CompaniesCombine Domain ListGenerate HubSpot FieldsMap Domains for LoopExpand Domain Items.

⚠️ Common Pitfall: If the Website Domain column is missing or empty, Expand Domain Items will output no items and the workflow will not enrich any companies.

Step 4: Configure Enrichment and HubSpot Actions

This is the core enrichment path: call Sona, create a HubSpot company, format enrichment fields, and patch properties.

  1. In Generate HubSpot Fields, keep Method as POST and JSON Body as provided. Update URL to your endpoint, replacing https://api.hubapi.com/[CONFIGURE_YOUR_API_KEY] with your proper HubSpot property batch endpoint.
  2. Credential Required: Connect your hubspotAppToken credentials in Generate HubSpot Fields.
  3. In Sona Enrichment Call, set the query parameter website to {{ $json.domains.toLowerCase().endsWith('.com') ? $json.domains.toLowerCase() : $json.domains.toLowerCase() + '.com' }}.
  4. In Sona Enrichment Call, add header x-api-key with your Sona API key and keep Content-Type as application/json.
  5. In Create HubSpot Record, set Name to {{ $json.data.name }} and keep Resource as company with Authentication set to appToken.
  6. Credential Required: Connect your hubspotAppToken credentials in Create HubSpot Record.
  7. In Format Enrichment Props, keep the provided JavaScript Code to build the properties payload for HubSpot.
  8. In Patch HubSpot Properties, set URL to {{ $('Create HubSpot Record').first().json.companyId }} within =https://api.hubapi.com/crm/v3/objects/companies/{{ $('Create HubSpot Record').first().json.companyId }} and set JSON Body to {{ $json }}.
  9. Credential Required: Connect your hubspotAppToken credentials in Patch HubSpot Properties.

⚠️ Common Pitfall: Generate HubSpot Fields uses a placeholder URL. If you leave [CONFIGURE_YOUR_API_KEY] unchanged, HubSpot property creation will fail.

Step 5: Configure Batching and Pacing

Batching and delay prevent API rate limits and allow iterative enrichment of each domain.

  1. Open Batch Through Companies and keep default batching unless you need a custom batch size.
  2. In Pause 2 Seconds, set Amount to 2 to throttle requests between patches.
  3. Verify the loop: Expand Domain ItemsBatch Through CompaniesSona Enrichment CallCreate HubSpot RecordFormat Enrichment PropsPatch HubSpot PropertiesPause 2 SecondsBatch Through Companies.
  4. Leave Finish Placeholder as-is; it serves as an end-of-batch marker.

If Sona or HubSpot APIs throttle, increase Pause 2 Seconds to 3 or 5.

Step 6: Test and Activate Your Workflow

Run a manual test to confirm sheet ingestion, enrichment, and HubSpot updates.

  1. Click Execute Workflow on Manual Launch to run a manual test.
  2. Confirm that Sona Enrichment Call returns data and Create HubSpot Record outputs a companyId.
  3. Verify Patch HubSpot Properties updates the newly created HubSpot company with the enrichment fields.
  4. When satisfied, toggle the workflow Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • HubSpot access tokens and scopes can be finicky. If the field creation or company write fails, check your HubSpot legacy app scopes in HubSpot Settings → Integrations → Legacy Apps 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 Sheets HubSpot enrichment automation?

About an hour if you already have your tokens ready.

Do I need coding skills to automate Sheets HubSpot enrichment?

No. You’ll mostly connect accounts and paste in API keys. The only “technical” part is verifying the HubSpot property mapping matches your portal.

Is n8n free to use for this Sheets HubSpot 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 Sona API usage costs, which depend on how many domains you enrich.

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 Sheets HubSpot enrichment workflow for different company fields?

Yes, and you probably should. You can add or remove fields in the “Generate HubSpot Fields” part of the workflow, then adjust the mapping in the “Format Enrichment Props” step so Sona values land in the right custom properties. Common customizations include storing only firmographics (size, HQ, revenue), adding tech stack fields, or renaming properties to match your existing HubSpot naming conventions.

Why is my HubSpot connection failing in this workflow?

Most of the time it’s token scopes or an expired access token. Recreate or refresh the HubSpot legacy app token, confirm you enabled company schema and company object read/write scopes, then update the credential in n8n. If it only fails on the custom-field step, your portal may already have conflicting property names, so HubSpot rejects the create call.

How many companies can this Sheets HubSpot enrichment automation handle?

Hundreds per run is normal, and the practical limit is your API quotas (Sona and HubSpot) plus how long you’re willing to let the batch run.

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

Often, yes, because this workflow benefits from batching, custom field creation, and multi-step formatting before the CRM update. n8n handles branching and transforms without turning every small step into a separate paid task, which adds up fast in Zapier. Self-hosting is also a real advantage when you want to run large enrichment jobs without worrying about execution limits. Zapier or Make can still be a fine choice if you only need a simple “new row → create company” flow and you never plan to add enrichment, mapping, or error handling. If you’re unsure, Talk to an automation expert and get a quick recommendation based on your volume.

Once this is running, your spreadsheet becomes a steady source of CRM-ready company profiles instead of a research to-do list. Set it up once, then spend your time on targeting and outreach that actually moves revenue.

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