🔓 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 + CompanyEnrich: fill firmographics fast

Lisa Granqvist Partner Workflow Automation Expert

Your lead sheet looks fine until you try to use it. Half the rows are missing revenue, headcount, location, or a working LinkedIn URL, and suddenly your “quick campaign” turns into a research project.

This is where Sheets firmographics automation pays off. Marketing managers building account lists feel it first, but sales ops cleaning CRM imports and recruiters sourcing target companies run into the same slog. You want a list you can segment today, not “eventually.”

This n8n workflow takes domains from Google Sheets, enriches them with CompanyEnrich, writes the firmographic fields back into the same row, then marks it Done. You’ll see what it automates, what results to expect, and what you need to run it reliably.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + CompanyEnrich: fill firmographics fast

The Problem: Firmographic data is always missing (and it breaks targeting)

“Just enrich the list” sounds simple until you’re staring at a sheet with 300 domains and no consistent way to fill the gaps. One person googles. Another person copies from LinkedIn. Someone else grabs headcount from a random directory. A day later, your dataset is a patchwork of sources, formats, and guesswork. Even worse, you can’t trust it, so you hesitate to use it for segmentation, routing, or outbound personalization. That hesitation costs pipeline because good accounts sit untouched while the team “cleans the list.” Honestly, it’s not the work. It’s the rework.

The friction compounds once you try to scale it beyond a handful of rows. Here’s where it breaks down.

  • Manual research for revenue and headcount can eat about 5 minutes per company, and it’s rarely consistent across researchers.
  • Your sheet becomes a mix of partial updates, duplicates, and “I’ll finish later” rows that never actually get finished.
  • Segmentation rules fail because location fields are blank or formatted differently, so targeting becomes guessy.
  • Once you start exporting to CRMs or ad platforms, small errors turn into bigger ones because bad fields get replicated everywhere.

The Solution: Enrich each company row automatically, then mark it Done

This workflow turns your Google Sheet into a lightweight enrichment pipeline. You keep one input that matters (the company domain), then let n8n fetch firmographic data from the CompanyEnrich API and place the results back into the same row. It does the boring parts reliably: it reads your rows, skips anything already finished, calls the enrichment API, normalizes the response so it matches your existing sheet headers, and writes clean values into the right columns. Finally, it updates your Status column to “Done” and stamps a “Last Updated” value so you know when the row was enriched. No more half-enriched lists. No more “did we already do this one?”

The workflow starts with a manual run, which is perfect when you want to enrich a batch on demand. It then pulls rows from Google Sheets, filters to only the rows not marked Done, enriches each domain through CompanyEnrich, and updates the sheet with fields like revenue, employees, location, and socials (including LinkedIn) if you’ve added those columns.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you have 150 new domains from a webinar list and you want revenue, employee count, city, and LinkedIn filled in. Manually, even a quick 5 minutes per company turns into about 12 hours of busywork, plus you still end up with inconsistent formatting. With this workflow, you trigger the run in n8n, it processes the pending rows in batches, and the sheet updates as it goes. You might spend 10 minutes checking the first few rows for mapping, then you’re basically done.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for storing domains and enriched fields
  • CompanyEnrich API to return firmographic data
  • CompanyEnrich API key (get it from your CompanyEnrich account dashboard)

Skill level: Beginner. You’ll connect your Google account, paste an API key, and match your sheet’s headers.

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

How It Works

You run it when you’re ready. The workflow starts with a manual trigger, so you can enrich a new batch whenever your sheet gets updated (weekly imports, event lists, scraped domains, and so on).

Your sheet is scanned for work that’s not finished. n8n pulls rows from Google Sheets, then filters out anything already marked “Done” in the Status column. This small detail prevents repeat charges and keeps your list tidy.

Each domain is enriched through CompanyEnrich. The workflow loops through pending rows using a batching step, calls the CompanyEnrich API for the domain, then normalizes the JSON response so it fits neatly into flat spreadsheet columns.

The row is updated and closed out. n8n writes the enriched values back into the same row, updates Last Updated, and sets Status to Done, which means the next run will skip it automatically.

You can easily modify which columns get filled by adding or renaming headers in your Google Sheet. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

Start the workflow manually so you can validate the enrichment process before enabling scheduled runs.

  1. Add the Manual Run Trigger node to start the workflow.
  2. Connect Manual Run Trigger to Retrieve Sheet Rows.

The Flowpast Branding sticky note is informational only and does not affect execution.

Step 2: Connect Google Sheets

Pull pending records from your sheet and prepare them for enrichment.

  1. Open Retrieve Sheet Rows and set Document to [YOUR_ID].
  2. Set Sheet to gid=0 in Retrieve Sheet Rows.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Sheet Rows.
  4. Configure Filter Pending Rows with the condition leftValue ={{ $json.Status }} and notEquals Done.
  5. Connect Retrieve Sheet RowsFilter Pending RowsIterate Records.

⚠️ Common Pitfall: If your sheet uses a different column name than Status, the filter in Filter Pending Rows will return no rows.

Step 3: Set Up the Enrichment and Normalization

Call the enrichment API for each domain and normalize the response into a sheet-friendly format.

  1. In Iterate Records, keep the default batching options to process items one by one.
  2. Configure CompanyEnrich API Request with URL https://api.companyenrich.com/companies/enrich.
  3. Set Query Parametersdomain to ={{ $json.Domain }} in CompanyEnrich API Request.
  4. Set Header ParametersAuthorization to Bearer [CONFIGURE_YOUR_TOKEN] in CompanyEnrich API Request.
  5. Connect Iterate RecordsCompanyEnrich API RequestNormalize API Payload.

⚠️ Common Pitfall: If the Domain field is missing or empty in your sheet, CompanyEnrich API Request will return an error or empty data.

Step 4: Configure Output Updates

Write normalized enrichment data back to the sheet and update status fields.

  1. Open Modify Sheet Row and set Operation to update.
  2. Set Document to [YOUR_ID] and Sheet to gid=0 in Modify Sheet Row.
  3. Map Domain to ={{ $('Retrieve Sheet Rows').item.json.Domain }}.
  4. Map Status to ={{ $json.status_update }} and Last Updated to ={{ $now.toISO() }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Modify Sheet Row.
  6. Iterate Records outputs to both Modify Sheet Row and CompanyEnrich API Request in parallel.
  7. Connect Normalize API Payload back to Iterate Records to continue batching.

The Normalize API Payload node filters API fields to only those that exist as headers in your sheet, so ensure your headers match the expected enrichment keys.

Step 5: Test and Activate Your Workflow

Run a manual test to confirm enrichment and sheet updates before enabling production use.

  1. Click Execute Workflow to run Manual Run Trigger.
  2. Verify that CompanyEnrich API Request returns data and Normalize API Payload outputs flattened fields.
  3. Check your sheet to confirm the row’s Status is updated and enrichment columns are filled.
  4. When satisfied, toggle the workflow to Active to use it in production.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or lack access to the right file. If updates stop working, check the connected Google account in n8n credentials and confirm the Sheet is shared with it.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • CompanyEnrich can rate limit if you push huge batches at once. If you see inconsistent enrichment, reduce the SplitInBatches size and rerun only the rows still not marked Done.

Frequently Asked Questions

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

About 20 minutes if your Sheet is ready.

Do I need coding skills to automate Sheets firmographics enrichment?

No. You’ll connect Google Sheets and paste an API key. The only “technical” part is making sure your column headers match the API field names you want.

Is n8n free to use for this Sheets firmographics 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 usage based on your plan.

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 firmographics workflow for extra fields like industry or funding?

Yes, and it’s the best part of this setup. Because the workflow flattens the CompanyEnrich JSON and matches it to whatever headers already exist, you typically just add a new column to your Google Sheet (for example, “industries”). On the next run, the Normalize API Payload code step will include that field if the API returns it. Common customizations include adding more location granularity, adding social links, or changing the Status values to match your internal process.

Why is my Google Sheets connection failing in this workflow?

Usually it’s permissions or an expired credential. Reconnect your Google Sheets credential in n8n, then verify the Document and Sheet Name in both the “Retrieve Sheet Rows” and “Modify Sheet Row” steps match your file. Also check that the Google account you connected can edit the sheet, not just view it.

How many rows can this Sheets firmographics automation handle?

A few thousand rows is normal as long as you batch them.

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

Often, yes, especially if you care about data shaping. This workflow relies on looping, conditional filtering (skip Done rows), and a code step that flattens JSON into spreadsheet columns, which is where Zapier-style flows get clunky or expensive. n8n also gives you self-hosting, so you’re not paying more every time you run a big enrichment batch. If you only enrich a handful of rows per week and want the simplest UI, Zapier or Make may feel quicker. If you’re unsure, Talk to an automation expert and get a straight recommendation.

Once this is in place, your sheet stops being a “project” and becomes a pipeline. Set it up once, rerun it whenever new rows land, and use the extra hours for work that actually moves deals.

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