How-to

How to enrich a Google Sheet and keep it in sync

Most lead lists start life in a Google Sheet. Here’s how to add firmographics, verified emails and AI research next to every row — and keep enriching as the sheet grows, without copy-paste or losing the results you already paid for.

Why enrichment usually breaks at the spreadsheet

The common workflow is export → upload to an enrichment tool → download → paste back. It works once. The moment a teammate adds twenty rows to the original sheet, you either re-run everything (and pay twice for the rows you already had) or enrich the new rows by hand. The fix is to treat the Google Sheet as a source and keep the enriched copy in sync with it.

Step by step

  1. Share the sheet by link. In Google Sheets choose Share → General access → Anyone with the link (Viewer). Open the tab you want and copy the URL — the tab in the link is the one that gets imported.
  2. Import it. In Liquid Rows choose Google Sheets link on the home screen (or ⋯ → Import from Google Sheets in an existing sheet) and paste the link. Headers become columns; you can map them onto existing columns or skip them.
  3. Pick a dedup key. Choose the column that identifies a row — email for contacts, domain for companies, or your CRM ID. This is what lets future syncs update rows instead of duplicating them.
  4. Add enrichment columns. Use a template (company facts, contact verification) or an AI research agent that reads the live web. Test on a few rows, check cost per row, then run the sheet.
  5. Turn on sync. Open ⋯ → Sync from link and choose every hour or every day. Each sync pulls new and changed rows; with auto-run on, those rows are enriched automatically.
What a sync never does: it doesn’t delete rows, doesn’t write anything back to your Google Sheet, and doesn’t throw away enrichment results. Values that came from the sheet update in place; everything the enrichment columns produced stays on the row.

Keeping cost proportional to change

A sync re-reads the whole Google Sheet, but it doesn’t re-bill the whole sheet. Every enrichment cell is cached against its inputs, so a row whose email and company haven’t changed is answered from cache. Only genuinely new or edited rows reach your AI provider or data APIs — which is what makes an hourly sync of a 10,000-row list affordable. If a source is pricey, set a waterfall so the cheap steps answer first.

Sending results onward

Once rows are enriched you can push them to a CRM (HubSpot contacts, Pipedrive people), a Slack channel, or any webhook — a push column runs last, after the fields it sends have computed, so half-enriched rows never leave the sheet.

Frequently asked questions

Can I enrich a Google Sheet without copying and pasting?

Yes. Share the sheet as “Anyone with the link can view”, paste the link into Liquid Rows, and the tab is imported with its headers as columns. Enrichment columns then fill in next to your data.

Will re-importing overwrite the enrichment I already paid for?

No. When you pick a dedup key (an email, domain or ID column), each sync matches rows on that key: values from the Google Sheet update in place, new rows are added, and enrichment results already on a row are kept.

How often can the sheet sync?

On demand, every hour, or every day. Scheduled syncs only enrich rows that are new or changed, because unchanged rows are answered from cache.

Does my Google Sheet need to be public?

It needs link-sharing set to “Anyone with the link can view”. Private sheets return a clear error instead of an empty import. Nothing is ever written back to your Google Sheet.

Keep reading

Enrich your Google Sheet in minutes

Paste a link, add a column, run ten rows.

Get started →