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.
- 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:
- Which workspace. If you have several, decide which is canonical. Imports are cheap to re-run but expensive to re-merge.
- 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.
- 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 database | wrxstack target | Edges created |
|---|---|---|
| Engineering tickets | Project: Engineering | authored-by, about |
| Marketing wiki | Documents (tagged) | about (account/topic) |
| Customer accounts | CRM: Account | about (incoming refs) |
| Meeting notes | Meetings | about (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:
- Spot-check edges. Open three random Docs that referenced others in Notion. Confirm the graph shows the same references.
- Read the audit log. Filter for source =
notion-import. The log shows every node created, every edge written, and every permission granted.
Next steps
- Import from Salesforce for CRM data.
- Documents API if you want to script post-import cleanup.