Mapping CSV Airtable (or Notion) without tears (template inside)



This content originally appeared on DEV Community and was authored by Colby Cardell

Imports break for tiny reasons: wrong casing, duplicate emails, states spelled out, phones formatted weirdly.

Here’s a lightweight recipe + templates that make CSV → Airtable/Notion painless.

1) Define the mapping

Use a 5-column mapping template:

source_field destination_field type_hint required notes
first_name First Name text no PROPER case
last_name Last Name text no
email Email email yes unique key
phone Phone phone no normalize E.164
state State select no USPS 2-letter
tags Tags multi-select no split on , or ;

2) Normalize before import

Rules that catch 80% of pain:

  • email → LOWER
  • phone → E.164 (+15551234567), infer country if needed
  • state → USPS (IllinoisIL)
  • first/last → PROPER
  • tags → split on [,;] then trim

3) Deduplicate

Start with email (lowercased) as the primary key.

If missing, use first_name + last_name + company exact match and keep the row with the latest updated_at (or most complete).

Save the losers to duplicates.csv with a winner_id column for traceability.

4) Test import (50–100 rows)

  • Airtable: create select options first, then import → map fields → verify counts
  • Notion: set property types first (select/multi-select/email/phone), then import

5) Final import + rollback plan

  • Export a backup of the destination table/database
  • Rename the current table to _bad_<timestamp> if needed, restore the backup, re-import

Grab my templates

I packaged the mapping CSV, normalization rules, dedupe rules, import checklist, and rollback plan.
👉 https://colbycardell.gumroad.com/l/jlxau?utm_source=devto&utm_medium=post&utm_campaign=migration_launch&utm_content=body_cta

  • Starter $199 (≤5k) · Plus $399 (≤25k) · Pro $799 (≤100k)


This content originally appeared on DEV Community and was authored by Colby Cardell