Docs/Guides/Data/Import from Notion

Import from Notion.

Notion is the most-imported source on wrxstack. This guide covers the full migration: connecting your Notion workspace, mapping databases to the work graph, and verifying nothing got lost. About 90 minutes for a 5,000-page workspace.

What you will learn
  • How to scope the Notion integration token correctly
  • How wrxstack maps Notion pages, databases, and references onto the work graph
  • How to preserve sharing and ownership during the import
  • How to verify the import and where to look if a row is missing

Plan the migration

Three questions to answer before you click anything:

  1. Which workspace. If you have several, decide which is canonical. Imports are cheap to re-run but expensive to re-merge.
  2. Which databases become Projects. A Notion database with task-like rows maps cleanly to a wrxstack Project. A database used as a wiki is better imported as Docs with tags.
  3. Who owns the result. Notion's "everyone in workspace" maps to a wrxstack group. Pick that group up front; renaming later is fine but the audit log will show the rename.

Connect Notion

Settings → Integrations → Notion → Connect. The OAuth flow asks for read access. Approve at the workspace level (not per-page); the importer scopes itself down from there.

You'll see a list of every Notion workspace you have admin on. Pick one. The status pill shows "Ready" when the OAuth token is valid.

Mapping databases

For each database, pick a target on the wrxstack side:

Notion databasewrxstack targetEdges created
Engineering ticketsProject: Engineeringauthored-by, about
Marketing wikiDocuments (tagged)about (account/topic)
Customer accountsCRM: Accountabout (incoming refs)
Meeting notesMeetingsabout (account), authored-by

Custom mappings live in import.toml. The UI generates one for you; edit it before running the actual import if you need columns mapped to non-default fields.

Preserving page references

Notion's @page mentions become references edges on the work graph. This is the most common source of "wait, where did all these connections come from?" surprises after a migration. Run the importer in dry-run mode first and inspect the edge count.

Reference edges are non-private by default. If a referenced page was private in Notion, the importer preserves that by marking the edge private.

Sharing and ownership

Notion's per-page share lists become wrxstack edge ACLs. A Notion page shared with a specific person becomes a node with an explicit read grant for that person.

"Anyone with the link" pages are imported as workspace-readable. If you used unguessable URLs for sensitive Notion pages, audit those before the cutover.

Run the import

Click Import → Dry run. Wait. The dry run reads every page, computes the edge graph, but writes nothing. Inspect the summary:

Pages found:        4,827
Docs to create:     4,201
Tasks to create:    518
Edges to create:    11,442
Permission grants:  847
Estimated time:     2h 14m

If the numbers look right, click "Run import." Imports run as a background job; you can leave the tab. Status arrives in your wrxstack inbox when it completes.

Verify

Two checks after the import:

  1. Spot-check edges. Open three random Docs that referenced others in Notion. Confirm the graph shows the same references.
  2. Read the audit log. Filter for source = notion-import. The log shows every node created, every edge written, and every permission granted.

Next steps