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 | |
| 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 (
Illinois→IL) - 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)
Top comments (0)