← All playbooks
Knowledge migration

Baserow → Notion

Turn each Baserow table into a Notion database with a CSV import. Notion will not build formulas, rollups, or new relations from that file, and a merge adds rows instead of updating them.

Typical timeline3 to 8 business days10 to 24 hours active work
Statusneeds review
Source profileBaserow export documentation reviewed 2026-11-05
Destination profileNotion CSV import documentation reviewed 2026-11-05
Documentation date
Review window
Evidence2 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Baserow

Reasons to stay
  • Open-source tables, views, and an Airtable importer give you a database you can host yourself
  • Structured ownership, status, and workflow views improve operational visibility
Reasons to leave
  • Formulas, lookups, rollups, automations, interfaces, and permissions still need rebuilding after import
  • Custom fields, automations, history, and reporting are difficult to reproduce exactly
New platform

Notion

What gets better
  • Polished pages and databases let teams build flexible workspaces without code
  • Flexible documents make it easy to capture and organize team knowledge
What gets worse
  • Offline use, export fidelity, and large-workspace governance remain weak points
  • Structure, links, permissions, and rich blocks often degrade during export
Best of the move

Notion: Polished pages and databases let teams build flexible workspaces without code. This removes a major source-side concern: Formulas, lookups, rollups, automations, interfaces, and permissions still need rebuilding after import.

Worst of the move

What you lose: Open-source tables, views, and an Airtable importer give you a database you can host yourself. What you inherit: Offline use, export fidelity, and large-workspace governance remain weak points.

Jump to a section
01At a glance

Know the shape of the move.

Transfer outcome10 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 6, Manual rebuild: 3, Not transferred: 1.
Clean0
Partial6
Manual3
Lost1
Mapping route8 of 9 fields have a destination path

This timeline assumes

  • Each CSV fits Notion's upload limit: 5MB on the Free plan and 50MB on a paid plan.
  • You want a Notion database per table, not a single page of pasted text.
  • Baserow stays available until you have checked row counts and any files you move separately.
  • You can rebuild formulas, rollups, and relations inside Notion after the rows exist.
  • You accept that a CSV merge adds rows and does not update rows that are already there.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Rows and columnspartialcriticalNotion says a CSV import creates a database, with rows as pages and columns as properties. You map each column yourself. The first row should be headers.Map columns in a pilot database before you import the full file.
Filtered exportspartialcriticalBaserow view exports include only the rows that pass the current filters.Export the entire table when the Notion database is supposed to be complete.
Formulas and rollupsmanualhighNotion says a new CSV import cannot create rollups or formulas. You rebuild them after the properties exist.Snapshot the current results in a text column if you need the old numbers.
RelationsmanualcriticalA new CSV import cannot create relations. If you merge into an existing database, you can map a column onto a relation that already exists.Create the relation properties first when the links matter, then map into them.
DuplicatespartialcriticalNotion says imports add rows. They do not update existing rows. CSV merges add rows too, so a second import duplicates the table.Import each table once into an empty database, or deduplicate before you share it.
Dates and numberspartialhighNotion says dates import in MM/DD/YYYY form. Mixed currencies, percents, and odd numbers are safer mapped to text. A mixed column may come in as text.Check a date column and a money column in the pilot.
Select fields with commaspartialmediumNotion says a value that contains a comma can fail to show when the column is mapped to Select. Map that column to text instead.Scan select values for commas before you choose the property type.
FilesmanualcriticalBaserow can export files as an archive grouped by row id. Notion's CSV help describes properties, not those files.Upload files onto the right Notion pages after the rows exist, using the row id.
Comments and historylostmediumBaserow does not include comments or revision history in an export.Copy any thread you need while you can still open Baserow.
File sizepartialhighOver Notion's 5MB or 50MB limit, the upload fails. Notion's own tip for large sheets is to split the CSV.Split large tables and import the parts into the same database only if you have a plan for the duplicates that creates.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
Baserow tableNotion databasetransformOne CSV import can create the database.
RowDatabase pagetransformRows become pages.
ColumnPropertytransformYou map each header during import.
Formula or rollup resultText property, then a Notion formulamanualThe import will not create the formula.
Link to tableText id, or an existing relationmanualNew imports do not create relations.
FilePage content or a files propertymanualMove the archive by hand.
DateDate propertytransformNotion documents MM/DD/YYYY.
Comment or revisionNo destinationunsupportedNot in the Baserow export.
Second import of the same CSVDuplicate pagesmanualMerges add rows. They do not update them.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep a full Baserow export that does not depend on the Notion workspace.

  1. Export each table as CSV with filters off and a header row.
  2. Export a JSON copy beside the CSV.
  3. Export file archives grouped by row id.
  4. Save the Baserow row counts next to the files.

Proof to capture: You can open every CSV without Notion, and the counts match Baserow.

Transformation · A spreadsheet and Baserow's table export

CSV cleanup

Make dates, selects, and headers match what Notion documents.

  1. Put headers in row 1 and export UTF-8 if characters look wrong.
  2. Write dates so they read as MM/DD/YYYY.
  3. Move comma-heavy select values to a text column.
  4. Split files that exceed the plan's size cap.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · Notion Settings, Import, CSV

Notion database import

Create the database once, then rebuild calculated properties.

  1. Import into a new database for the first load.
  2. Map each column to the property you want.
  3. Add formulas, rollups, and relations after the pages exist.
  4. Do not re-import the same file into that database unless you want duplicate pages.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Import

A second import duplicates the database

criticallikely likelihood

The same rows appear twice because Notion adds pages instead of updating them.

Consequence
People edit two copies of one record.
Mitigation
Import once into an empty database.

Stop if: Any key appears on two pages.

Transform

Relations never get created

criticalpossible likelihood

The CSV import finishes and the links are plain text.

Consequence
Related records are not connected.
Mitigation
Create relation properties and map into them on purpose.

Stop if: A required link is still text at cutover.

Export

The export was a filtered view

highpossible likelihood

Notion's row count is the view, not the table.

Consequence
Missing rows look like a successful import.
Mitigation
Export the entire table and compare counts.

Stop if: The counts disagree.

06Precise timeline

Do the work in this order.

Estimate forOne Baserow database, each table exported to CSV and imported into its own Notion database.
Total elapsed3 to 8 business days
Active work10 to 24 hours
BufferAdd time for file uploads and for relations you rebuild by hand.
01
Days 1 to 2Pick the databases1 to 2 days
02
Day 2Export Baserow1 day
03
Days 2 to 4Import one database1 to 3 days
04
Days 4 to 6Import the rest and freeze Baserow1 to 2 days
05
Days 6 to 8Use the databases2 days
  1. Days 1 to 2 · inventory

    Pick the databases

    2 to 5 hours active1 to 2 days elapsedOwner review waiting
    • List tables, relations, and files.
    • Decide which formulas must be snapshotted as text.

    Depends on: Baserow access, Notion import permission

    Stop / go checkpoint

    Export?

    Go when: Every table has a Notion destination.

    Stop when: A relation has no id column.

  2. Day 2 · backup

    Export Baserow

    2 to 4 hours active1 day elapsedDownloads waiting
    • Export full-table CSVs and file archives.
    • Record counts.

    Depends on: Approved inventory

    Stop / go checkpoint

    Import the pilot?

    Go when: Counts match and headers are row 1.

    Stop when: A CSV is filtered or over the size cap.

  3. Days 2 to 4 · pilot

    Import one database

    3 to 8 hours active1 to 3 days elapsedNotion processing waiting
    • Import one table.
    • Check dates, selects, and a relation plan.

    Depends on: Verified export

    Stop / go checkpoint

    Import the rest?

    Go when: The pilot count matches and dates read correctly.

    Stop when: Duplicate pages or blank selects show up.

  4. Days 4 to 6 · cutover

    Import the rest and freeze Baserow

    2 to 5 hours active1 to 2 days elapsedUploads waiting
    • Freeze Baserow.
    • Import remaining CSVs once.
    • Upload files and add relations.

    Depends on: Passed pilot

    Stop / go checkpoint

    Share the Notion databases?

    Go when: Counts match and relations resolve.

    Stop when: A second import has already duplicated a table.

  5. Days 6 to 8 · observe

    Use the databases

    1 to 3 hours active2 days elapsedOne working cycle waiting
    • Rebuild the formulas people use.
    • Keep Baserow readable.

    Depends on: Verified cutover

    Stop / go checkpoint

    Archive Baserow?

    Go when: The blocking checks still pass.

    Stop when: A relation or file is still missing.

07The point of change

Cut over with a way back.

Go live

Cutover

Put the final Baserow tables into Notion once, then stop editing Baserow.

Recommended window: A morning when you can delete a bad database and import again without anyone else editing it.

  1. Freeze Baserow.
  2. Re-export any table that changed.
  3. Import each CSV into an empty Notion database.
  4. Add relations, formulas, and files.
  5. Compare page counts with the CSV row counts.

Proof to capture: Each Notion database has one page per CSV row, and you did not run a second import.

Return to safety

Rollback

Go back to Baserow if the Notion databases are duplicated or incomplete.

Deadline: Before you delete the Baserow database or the CSV files.

  1. Stop edits in the new Notion databases.
  2. Send people back to Baserow.
  3. Export any Notion pages created after the switch.
  4. Decide which of those pages return to Baserow.
  5. Leave the bad Notion database in place until that list is resolved, or duplicate nothing further.

Proof to capture: Baserow is the writable system, and post-switch Notion pages are accounted for.

Rollback immediately when
  • Page counts do not match the CSV
  • A second import created duplicates
  • A required relation is missing
  • Files never got attached
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingPage countsCompare Baserow, the CSV, and the Notion database.Counts match.Count sheet
V-02BlockingDate propertiesOpen a sample of date pages.Dates match the MM/DD/YYYY reading you expect.Date sample
V-03BlockingSelect valuesCheck values that contain commas.They are present as select options or as text, on purpose.Select sample
V-04BlockingLinksOpen linked pages.Relations point at the right pages.Relation sample
V-05BlockingRebuilt formulasCompare results with the text snapshot.Critical results match.Formula sheet
V-06BlockingUploadsOpen a sample of files by row id.The file is on the right page.File sample
V-07BlockingUnique idsSearch the id property.Each id appears once.Id check
V-08BlockingSharingOpen the database as a guest and as an editor.Sharing matches the list you wanted.Share settings
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: The Notion databases have been used for a few days and Baserow is still there as a reference.

  1. Store the CSVs and the file archive outside Notion.
  2. Remove temporary pages created by failed imports.
  3. Revoke Baserow tokens you used only for the export.
  4. Keep Baserow until the date you agreed.
  5. Note which formulas were rebuilt, so the next edit does not assume they came from the CSV.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. Baserow: export a tableAccessed 2026-11-05
  2. Notion: import data, including CSVAccessed 2026-11-05