Getting Rows Into a Table
Outcome: rows in your table from the route that fits what you actually have, with a dedupe key set so the next run does not double it.
- Surface
- Sync GTM app
- Level
- Beginner
- Uses
- Import · find_companies · CRM sync
- Credits
- 0 for CSV, ~1 per 10 rows for a find action
- Prerequisite
- Lesson 04's configured table
Three routes
| Route | Use when | Cost | Refreshes |
|---|---|---|---|
| CSV upload | You already have the list — a conference export, a partner list, a scraped file | Free | No, it is a snapshot |
| Find action | You know the criteria but not the companies | Per row | Yes, re-run to top up |
| CRM sync | The rows already exist in your system of record | Free to import | Yes, on a schedule |
Most real workflows use two: a find action to source new accounts, and CRM sync to suppress the ones you already have.
Reference: Import.
CSV upload
The simplest route and the one with the most footguns.
Clean before you upload
One header row, no merged cells, no totals row at the bottom. Split full names into first and last if your source has them combined — enrichment hit rates are better with separated names.
Map the identifier first
The domain column must map to your identifier column. If your file has website URLs with paths, they need normalizing — do it in the spreadsheet before upload rather than after.
Check the row count after import
If 4,000 rows became 3,860, something was dropped. Usually blank identifiers. Find out which before building on top of it.
A CSV is a snapshot with a date on it, even when nobody wrote the date down. A conference list from March has people who left in April. Treat imported job titles and emails as claims to verify, not facts — lesson 11 covers verification.
Find action
Rows generated from criteria rather than supplied. This is the route lessons 06 to 08 use, and the one that makes a table a standing asset rather than a one-off.
The advantage is not convenience. It is that the criteria are stored, so re-running the same search next month returns the companies that newly match — new funding, new headcount band, newly founded. A CSV cannot do that.
Cost is per row returned, so set a limit on the first run. Sourcing 5,000 companies to look at the first 50 is a real way to spend real credits.
CRM sync
Pull a segment from your CRM into a table. Two very different reasons to do it:
- To work on them — fill gaps, re-verify, re-score. This is CRM Enrichment.
- To suppress them — so a cold campaign does not contact current customers or open opportunities.
The second is the one most people skip and most regret. Import your customer and open-opportunity lists into a suppression table early, even if you never look at it until lesson 16.
Reference: CRM integrations.
Not duplicating on the second run
Every intake route can create duplicates. One setting prevents it.
- Set the dedupe key on the table to your identifier column —
domainfor companies, LinkedIn URL for people. - On import, choose to skip or update on match rather than always append.
- Normalize before comparison.
Acme.comandacme.commust collide.
Test it deliberately: import the same ten-row file twice and confirm the row count does not change. Two minutes now, and it is the difference between a table that can be re-run and one that cannot.
Do this now
Pick your route
If you have a list, upload it. If you have criteria, skip to lesson 06 and come back. If your rows live in a CRM, sync a small segment.
Set the dedupe key
Your identifier column, before you import anything.
Import 25 rows, not 2,500
Enough to test every later column, small enough that a mistake costs nothing.
Verify the identifier
Sort by the domain column and scan for blanks, paths, or www. prefixes that escaped normalization. Fix them now.
Import the same file again
Confirm the row count is unchanged. If it doubled, your dedupe key is not set.
Check your work
- Rows are in the table with a populated identifier on every one
- The dedupe key is set and tested by a duplicate import
- You know whether your source refreshes or is a snapshot
- Row count matches what you expected to import
Where this breaks
Importing a large purchased list and enriching it wholesale is the most reliable way to spend a month’s credits in an afternoon and end up with a worse list than you started with. Bought lists are stale, poorly targeted, and expensive to verify. If you must use one, import it, run one cheap qualification column, filter hard, and only then enrich. The find action route in lesson 06 is nearly always the better option.
Further automation
Intake is the natural thing to schedule. A saved find action that runs weekly and appends only new matches turns the table into a standing pipeline — which is what every signal-based course in this library relies on. Lesson 06 sets the search up; scheduling it comes later.
Next lesson
06 — Finding companies, building the search that generates rows instead of importing them.
Reference for this lesson: Import, CRM integrations, Tables, find_companies.