Airtable → Notion
Move Airtable records into Notion databases while preserving field meaning, relations, attachments, views, ownership, automations, permissions, and evidence for anything CSV cannot carry.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Airtable
- Approachable relational tables combine spreadsheet familiarity with lightweight apps
- Structured ownership, status, and workflow views improve operational visibility
- Scale, automation, and permission needs can become expensive or awkward
- Custom fields, automations, history, and reporting are difficult to reproduce exactly
Notion
- Polished pages and databases let teams build flexible workspaces without code
- Flexible documents make it easy to capture and organize team knowledge
- Offline use, export fidelity, and large-workspace governance remain weak points
- Structure, links, permissions, and rich blocks often degrade during export
Notion: Polished pages and databases let teams build flexible workspaces without code. This removes a major source-side concern: Scale, automation, and permission needs can become expensive or awkward.
What you lose: Approachable relational tables combine spreadsheet familiarity with lightweight apps. What you inherit: Offline use, export fidelity, and large-workspace governance remain weak points.
Jump to a section
Know the shape of the move.
This timeline assumes
- Editorial planning scale: up to 20 bases, 100 tables, 100,000 records, and 20 GB of attachments.
- CSV is the transfer format; Airtable behavior is rebuilt separately.
- Every table has an unfiltered export view.
- Stable record IDs are preserved in a dedicated field.
- Airtable remains read-only during verification.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Visible grid records and scalar values | partial | critical | Airtable grid views export CSV and Notion imports rows as database pages, subject to CSV size limits and type inference. | Export an unfiltered view, split files above 5 MB on Free or 50 MB on paid plans, and reconcile row counts. |
| Filtered-out records | lost | critical | CSV contains only records visible in the exported view. | Create a dedicated unfiltered migration view per table. |
| Field types | partial | high | CSV flattens types and Notion may infer mixed columns as text. | Create destination properties and map types explicitly. |
| Linked records | manual | critical | A new CSV import cannot create relations; merging into an existing database can map a column only to a relation property that already exists. | Preserve Airtable record IDs, pre-create relation properties where practical, and verify both sides after all tables exist. |
| Lookups, rollups, and formulas | manual | critical | CSV exports calculated values, not reusable logic. | Document formulas and rebuild or accept static snapshots. |
| Attachments | manual | critical | CSV carries URLs, not durable binaries or Notion file objects; attachment transfer needs a verified manual upload or API path. | Download and hash critical binaries, upload them manually or through a tested API workflow, and verify ordinary-user access. |
| Views, filters, groups, sorts, and colors | lost | high | CSV does not carry view configuration. | Capture screenshots and rebuild approved Notion views. |
| Automations, scripts, forms, and interfaces | lost | critical | Airtable application behavior does not transfer as records. | Inventory triggers and replace each essential workflow. |
| Comments, revision history, and audit events | lost | high | Collaboration history is absent from CSV. | Resolve open decisions and retain compliance exports. |
| Permissions and sharing | manual | critical | Base, interface, table, and view access do not map automatically. | Design Notion teamspace and page access before import. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| Primary field | Title property | transform | Notion requires a Title property; CSV Title values do not retain formatting. |
| Text and long text | Text property/page body | transform | Choose searchable property versus page content. |
| Number, currency, percent | Number property | transform | Verify locale and formatting. |
| Date | Date property | transform | Normalize timezone and range semantics. |
| Single/multi select | Select/multi-select | transform | Normalize option names. |
| Linked record | Relation | manual | Rebuild using stable record IDs. |
| Formula/rollup/lookup | Formula, rollup, or static property | manual | Recreate only supported decision logic. |
| Attachment URL | Files property | manual | Download binaries and use a verified manual upload or Notion API workflow before source access changes. |
Make the move recoverable.
Create the source-of-truth backup
Preserve every record and separately document configuration that CSV cannot carry.
- Create and export an unfiltered grid view for every table.
- Document field schemas, formulas, relation diagrams, views, automations, scripts, forms, interfaces, and permissions separately with screenshots or an approved configuration inventory.
- Download and hash critical attachments.
- Record row counts and record IDs per table.
- Keep raw CSV files immutable.
Proof to capture: A manifest reconciles bases, tables, records, fields, links, attachments, workflows, and access.
Typed table import
Prevent Notion from flattening important types.
- Normalize UTF-8, dates, numbers, and headers.
- Preserve Airtable record IDs.
- Import in dependency order.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Relation reconstruction
Reconnect records after CSV import.
- Create all databases first.
- Join source IDs to destination page IDs.
- Verify both sides of every critical relation.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
Filtered records are omitted
Export row count matches a filtered view, not the table.
- Consequence
- Records disappear silently.
- Mitigation
- Use named unfiltered migration views.
Stop if: Any table count is unexplained.
CSV merge duplicates rows
A repeated import adds rather than updates records.
- Consequence
- Relations and reporting become unreliable.
- Mitigation
- Import once into empty databases and preserve IDs.
Stop if: Any stable source ID appears twice.
Calculated values look right but stop updating
A formula result imported as static text.
- Consequence
- Operational decisions use stale data.
- Mitigation
- Test behavior after changing inputs.
Stop if: Any critical calculation lacks live logic or an accepted manual process.
Do the work in this order.
- Days 1–3 · inventory
Inventory
10–16 hours active3 days elapsedOwner review waiting- Inventory schemas, workflows, access, and usage.
- Choose import/archive scope.
Depends on: Airtable and Notion admins
Stop / go checkpointExport?
Go when: Every table and behavior has a disposition.
Stop when: Critical automation or access is unknown.
- Days 4–5 · backup
Export and preserve
6–10 hours active2 days elapsedAttachment download waiting- Export unfiltered CSVs and metadata.
- Download attachments and reconcile counts.
Depends on: Approved scope
Stop / go checkpointTransform?
Go when: Rows and files reconcile.
Stop when: Any table or attachment class is missing.
- Days 6–9 · pilot
Pilot schema
8–14 hours active4 days elapsedOwner testing waiting- Import representative tables.
- Rebuild types, relations, formulas, and views.
- Test behavior.
Depends on: Backup
Stop / go checkpointBulk import?
Go when: Representative workflows return correct results.
Stop when: Critical logic cannot be reproduced.
- Days 10–15 · bulk
Dependency-ordered import
12–25 hours active4–6 days elapsedAPI/import processing waiting- Import tables in waves.
- Rebuild relations, files, views, and automation.
- Reconcile each wave.
Depends on: Passed pilot
Stop / go checkpointFreeze Airtable?
Go when: All waves reconcile.
Stop when: Duplicates or broken relations remain.
- Days 16–20 · cutover
Final rebuild and observation
4–10 hours active3–5 days elapsedUser validation waiting- Freeze Airtable.
- Apply changed rows by stable ID through a reviewed manual or API process; CSV imports only add rows and can create duplicates.
- Switch links and run normal workflows.
Depends on: Bulk import
Stop / go checkpointClose rollback?
Go when: Blocking checks and owner sign-off pass.
Stop when: A source-only workflow remains.
Cut over with a way back.
Cutover
Make Notion authoritative after a frozen, reconciled change ledger.
- Freeze Airtable edits.
- Record changed records by stable ID in the approved change ledger.
- Apply each reviewed change through a verified manual or Notion API method; do not use CSV reimport as an update path.
- Rebuild affected relations and upload attachments through the verified path.
- Switch forms, links, automations, and instructions.
- Make Airtable read-only.
Proof to capture: Record IDs and critical workflows reconcile with one editable system.
Rollback
Resume Airtable without losing Notion changes.
- Freeze Notion edits.
- Capture scoped post-cutover changes through a verified Notion export or API method, using a manual ledger where coverage is incomplete.
- Restore Airtable access.
- Apply only reviewed ledger changes through a verified manual or API path.
- Restore forms and automations.
Proof to capture: Airtable contains approved changes and again owns all writes.
- Missing records
- Broken critical calculations
- Incorrect permissions
- Attachment loss
- Unreliable relations
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Record counts | Reconcile by table and stable ID. | 100% accounted for. | Count report. | |
V-02Blocking | Field values | Compare stratified records. | Types and values match mappings. | Field sheet. | |
V-03Blocking | Linked records | Compare critical relationship pairs. | Every approved link resolves. | Relation report. | |
V-04Blocking | Formulas and rollups | Change inputs and compare outputs. | Approved results update correctly. | Scenario log. | |
V-05Blocking | Attachments | Compare counts, hashes, and samples. | Critical files are intact. | File manifest. | |
V-06Blocking | Operational views | Run owner scenarios. | Required filters and groups answer the same question. | View sign-off. | |
V-07Blocking | Permissions | Test role accounts. | Least-privilege access passes. | Access matrix. | |
V-08Blocking | Forms and automation | Trigger each critical workflow. | One correct destination result. | Workflow log. |
Remove the scaffolding safely.
Safe after: One complete operating cycle and 30 days without a rollback trigger.
- Archive CSVs, schemas, mappings, and evidence.
- Revoke temporary API tokens.
- Remove obsolete Airtable forms and automation.
- Keep Airtable read-only through retention.
- Delete unsecured attachment staging.
- Schedule quarterly relation, access, and backup checks.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Airtable: export a view to CSVAccessed 2026-07-27
- Notion: import dataAccessed 2026-07-27