Your First Table
Outcome: an empty, correctly configured company table with an identifier column, a placeholder for each planned step, and a five-row test view.
- Surface
- Sync GTM app
- Level
- Beginner
- Uses
- Table editor — no paid actions
- Credits
- 0
- Prerequisite
- Lesson 03's named table
Column types
Every column is one of four things. Knowing which is which tells you what it costs.
| Type | What it does | Costs credits |
|---|---|---|
| Data | Holds a value: text, number, URL, date, select | No |
| Action | Runs an enrichment, search, scrape or AI step per row | Yes |
| Formula | Computes from other columns — scores, concatenations, conditions | No |
| Status | Derived flags you filter on: qualified, exported, suppressed | No |
Three of the four are free. That is the design: put as much decision-making as possible into formula and status columns, and reserve action columns for things that genuinely need an outside lookup.
Reference: Actions.
The identifier column
One column matters more than the rest, and it goes in first.
- Company table → root domain. Not company name, not website URL with a path.
- Person table → LinkedIn profile URL, with verified work email as fallback.
Everything downstream keys off this: enrichment inputs, dedupe, the join between your two tables, and the CRM match on export. A table without a clean identifier column produces duplicates on its second run and cannot be joined to anything.
Normalize on the way in. https://www.Acme.com/about and acme.com must become the same value or your dedupe silently fails. Strip the protocol, the www., and everything after the domain, and lowercase the result.
Build the skeleton first
Add every planned column now, as a placeholder, before any data exists. It takes five minutes and it forces the ordering decision while it is still free to change.
For the course table:
| # | Column | Type | Stage |
|---|---|---|---|
| 1 | company_name | Data | Find |
| 2 | domain | Data — identifier | Find |
| 3 | employee_count | Action | Enrich |
| 4 | country | Action | Enrich |
| 5 | b2b_or_b2c | Action — AI | Research |
| 6 | fit_score | Formula | — |
| 7 | qualified | Status | — |
Then read it top to bottom and check the ordering rule from lesson 02: no expensive column above a filter. Here, qualified sits at the bottom because the person-level work happens in the second table — which is exactly right.
Views and filters
A view is a saved filter over the same rows. Nothing is copied and nothing is deleted, which makes views the safe way to work on a subset.
Three views worth creating immediately:
test-5
Filter to five rows. Every new action column runs here first. This single habit is the biggest credit saver in the course.
qualified
Filter to qualified = true. This is what feeds the person table and the export.
needs-attention
Filter to rows where a key column is blank after a run. It is how you spot a column that quietly failed on 30% of rows.
Do this now
Open the table from lesson 03
Empty is correct at this point.
Add the identifier column
Name it domain, type URL or text, and write your normalization rule in the column description.
Add the skeleton columns
All of them, as placeholders. Do not configure the actions yet — lessons 06 onwards do that.
Order them by stage
Find, Research, Enrich, Outreach, left to right. Formula and status columns go immediately after the columns they read.
Create the three views
test-5, qualified, needs-attention.
Add ten rows by hand
Type ten company domains you know — customers, competitors, anyone. You need real rows to test against, and ten typed rows cost nothing.
Check your work
- The identifier column is a normalized root domain
- Every planned step has a placeholder column
- Columns read left to right in stage order
- You have a
test-5view - Ten real rows exist in the table
Where this breaks
Running a new action column across the whole table before checking five rows is the single most expensive beginner mistake, and it is entirely avoidable. A misconfigured column does not error — it returns plausible, wrong output on every row and bills you for all of them. Run on test-5, read the actual values, then widen. Every remaining lesson in this course repeats that instruction because it is the one that matters.
Further automation
Once the skeleton is right, it is worth saving before you fill it. A configured-but-empty table is the most reusable artifact in the product — see Templates — because the next segment needs the same columns with different filter values.
Next lesson
05 — Getting rows into a table, comparing the three intake routes and choosing the right one for what you have.
Reference for this lesson: Tables, Actions, Import, Credits.