Import from Notion

Upload the "Markdown & CSV" export of your Notion workspace. Databases with a **Status** column become Projects with tasks; the remaining `.md` pages go to your org's Docs preserving the folder hierarchy.

How to export from Notion

  1. In Notion, open the workspace or space you want to migrate.
  2. Click the · · · menu top-right → Export.
  3. In the export dialog:
    • Export format: Markdown & CSV (not HTML, not PDF).
    • Include content: Everything.
    • Include subpages: on.
    • Create folders for subpages: on (this is what preserves the hierarchy).
    • Wait for the export to finish (Notion emails the link if it’s large).
    • Download the ZIP. Don’t unzip — Orkestra consumes it as-is.

The ZIP must be under 50 MB. If your workspace is larger, export by section (each database or page group separately) and do multiple imports.

What gets imported

Databases → Projects

  • Every .csv with a column named Status (or State) becomes an Orkestra Project.
  • Unique values of that column become WorkflowStates. Values matching Done, Completed, Closed, Resolved or Shipped (case-insensitive) are marked as completed.
  • Each CSV row becomes a Task. Title = Name or Title column. Priority = Priority column (Low/Medium/High/Urgent).
  • Other CSV columns are stored in the task description as **Column: value** blocks. No custom fields are created (Notion’s native field types don’t map 1:1 with Orkestra’s).
  • The row ID (notion_id, Notion ID, ID) is stored in custom field notion_id. If the CSV doesn’t ship an ID, the title is used as fallback.

.md pages → Docs

  • Every .md not inside a database folder becomes a Doc (ORGANIZATION scope, PUBLIC visibility).
  • Folder hierarchy is preserved as parent-child relations in the Docs tree.
  • Notion appends a hex hash to every file/folder (e.g. My Page 32a4b5c6d7e8.md). Orkestra strips it from the visible title and preserves it as custom field notion_id.
  • Internal links [text](Page%20Name%20abc123.md) are rewritten to /wiki/<slug> if the target page was imported. Broken links become plain text and are counted in the preview.

Out of scope

  • Databases without a Status/State column — silently ignored with a warning. If you want to migrate one, add a temporary Status column before exporting, or use the generic CSV importer.
  • CSVs with more than 1,000 rows — truncated to the cap with a warning. For larger databases, split them.
  • Notion callouts, toggles, sync blocks, embeds — preserved as markdown/text as exported. They don’t render as special blocks in Orkestra.
  • Embedded images — stay as markdown references to relative paths inside the ZIP. We don’t upload binaries. To preserve them, upload by hand to the pages or tasks.
  • Relations between databases (Relation properties, Rollups) — silently ignored.
  • Views / filters / sorts — not migrated. Rebuild them with Saved Views in Orkestra.
  • Notion templates — not imported.
  • Assignees — the Assignee / Owner column in the CSV is detected but not used to assign tasks. Notion exports don’t carry consistent emails, so Orkestra doesn’t try to map.
  • Comments, discussions, mentions — Notion doesn’t include them in the export.
  • Non-standard properties (Formula, Created by, Last edited, Select multi, Date range) — stored as text in the task description, not as typed custom fields.
  • Workspace settings, permissions, teamspaces — out of scope.

Requirements

  • The import requires an active organization (ORGANIZATION scope). You can’t import into a personal workspace.
  • Admin or project/docs creator permissions in the org.

Warnings vs silent ignores

The preview surfaces warnings for: CSVs without Status (skipped), CSVs > 1,000 rows (truncated), unexpected non-markdown files. Everything else above is silently ignored.

Steps in Orkestra

  1. Go to Settings → Import → Notion.
  2. Upload the export ZIP.
  3. Review the preview: number of projects to create, docs, broken links, truncated rows.
  4. Execute. Atomic commit.

Resources