Skip to content

The Ultimate Guide: Migrating from Notion to Confluence (Technical & Strategic)

A practical guide to migrating Notion to Confluence that explains how Notion blocks map to Confluence pages and macros, highlights common migration failures such as flattened databases and broken relations, and outlines when to use native export, custom API scripts, or automated migration pipelines. The guide helps teams preserve structured data, maintain documentation integrity, and plan a reliable transition to Confluence.

Raaj Raaj · · 8 min read
The Ultimate Guide: Migrating from Notion to Confluence (Technical & Strategic)
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

Executive Summary (TL;DR)

To migrate data natively from Notion to Confluence, export the Notion workspace as an HTML ZIP file (with "Include subpages" enabled) and upload it via the Confluence Import from other tools setting. This native method flattens relational databases into static tables, drops inline comments, and frequently times out on export files exceeding Atlassian Cloud's default attachment processing limits. Organizations must choose between three migration architectures: Native HTML Import (for flat text), Custom API Scripts (for developer-led teams), or Managed API Pipelines (for automated relational database reconstruction).

Migrating from Notion to Confluence is fundamentally a data translation project. It requires converting a block-based, relational object model into a macro-driven, page-tree hierarchy.

Because the underlying architectures of these two platforms are incompatible, a standard 1:1 export is impossible. Standard text blocks migrate cleanly, but complex entities—like nested relations, rollups, and synced blocks—experience data degradation during a native transfer.

This guide outlines the technical blueprint for executing this migration, documenting exact failure modes, and providing a framework for selecting the correct migration architecture.

Phase 0: Pre-Export Cleanup

Before scoping volume or choosing a migration path, clean up the Notion workspace. Migrating stale or poorly structured content into Confluence just creates a messier target environment.

  • Archive unused databases and pages. If nobody has touched it in six months, it probably doesn't need to migrate. Reducing volume directly reduces export time, import failures, and QA effort.
  • Resolve or export inline comments. The native importer drops inline comments entirely. Any comment thread that contains decisions or context should be resolved and its content merged into the page body before export.
  • Flatten excessive nesting. Notion allows infinite page nesting. Confluence works best with wider, shallower trees. If you have pages nested 5+ levels deep, restructure before export — it's far easier to reorganize in Notion's drag-and-drop interface than in Confluence after import.
  • Document Notion formula properties. Formula fields in databases are not preserved during export — they render as their last computed value (plain text) in the HTML output. If the formula logic matters, document it separately so it can be rebuilt manually in Confluence or Jira.

Phase 1: Pre-Migration Data Scoping

With a cleaned workspace, map the remaining data environment to prevent architecture surprises during import.

  1. Calculate Workspace Volume: Assess the total payload. Large HTML exports frequently cause the Confluence Cloud UI importer to time out during processing. Based on our experience running these migrations, exports exceeding roughly 1GB are where timeouts consistently start occurring. Workspaces of this size require chunked exports or API-based extraction.
  2. Audit Relational Structures: Identify all Notion databases utilizing "Relation" or "Rollup" properties. Document these dependencies, as the native importer strips relational mapping.
  3. Inventory Embedded Content: Catalog any pages containing embedded third-party content — Google Docs, Figma frames, Loom videos, Miro boards, etc. These embeds will not survive the HTML export. They typically render as dead links or disappear entirely. Document them and plan to re-embed using Confluence's equivalent Smart Links or iframe macros after migration.
  4. User Mapping Prerequisites: Export a complete list of Notion Workspace Members and Guests. Target Confluence accounts must be provisioned prior to import; otherwise, page authorship and edit histories will default to an "Anonymous" user ID.

Phase 2: The Block-to-Macro Translation Protocol (Native Import)

For workspaces consisting primarily of flat text and simple hierarchies, the native Atlassian HTML importer is the standard path.

Step 1: Execute the Notion HTML Export

PDF and Markdown formats degrade wiki structure and image routing. HTML is the required format.

  1. In Notion, navigate to Settings & Members > Settings.
  2. Select Export all workspace content.
  3. Set the export format to HTML.
  4. Verify Include subpages is toggled ON to preserve hierarchy.
  5. Click Export to generate the ZIP file.

Step 2: Confluence Ingestion

  1. Log into Confluence Cloud with "Create Space" permissions.
  2. Navigate to Spaces > Import from other tools (or Space Settings > Integrations).
  3. Select Notion and upload the ZIP file.
  4. Complete the user-mapping prompt to link Notion IDs to Confluence IDs.
  5. Execute the import.

Phase 3: The Feature Degradation Matrix

Because Notion's block architecture cannot map perfectly to Confluence's macro environment, specific data structures fail during native import.

Notion Feature Confluence Native Import Result Required Architectural Fix
Simple Text & Headers 1:1 conversion. None required.
Relational Databases Degrades into a static HTML table. Relations are severed. Manual rebuild using the Page Properties macro, or utilize an API-driven translation service.
Kanban / Board Views Converts into a flat text table. Manually recreate using Confluence's native Jira integration or Trello embeds.
Synced Blocks Text duplicates onto the page, but the live sync is permanently broken. Convert the source block to an Excerpt macro, and use Excerpt Include on destination pages. Note: Excerpt Include has its own limitations — it cannot pull excerpts across Confluence spaces without the correct cross-space permissions, and only one Excerpt macro is allowed per page.
Inline Comments Data is dropped entirely. Resolve or document comments into the main page body prior to export.
Toggle Lists Converts into Confluence Expand macros. Minor formatting review recommended post-import.
Formula Properties Renders as last computed plain-text value. Formula logic is lost. Document formula logic before export. Rebuild manually using Confluence table calculations or offload to Jira custom fields.
Embedded Content (Google Docs, Figma, Loom, etc.) Dead links or missing content. Re-embed manually using Confluence Smart Links or iframe macros post-migration.
File Attachments & Images Images generally transfer but may break on very large files. Confluence Cloud enforces a per-file attachment limit (currently 250MB). Audit attachments pre-export. Oversized files need to be hosted externally and linked.

Phase 4: Bypassing Processing Limits & Time Estimation

If a native import fails, it is typically due to server-side timeouts when processing large, nested ZIP files.

The UI Chunking Strategy:

To bypass the default processing limits, the workspace must be segmented. Instead of a global workspace export, navigate to top-level parent pages (e.g., "Engineering Hub") and export only that parent page and its subpages. Ingest these smaller ZIP files sequentially.

QA Time Heuristic:

Native migrations require post-import quality assurance. Based on our operational experience across multiple client migrations:

  • Execution Time: ~1 hour per 500 standard pages.
  • Data Reconstruction (QA): ~5 hours of manual rebuild time per complex relational database.

For rough planning purposes: a 5,000-page workspace with 20 relational databases typically requires 40–80 hours of manual QA under the native import path, depending on content complexity and how much pre-export cleanup was done.

Phase 5: Migration Architecture Decision Matrix

Organizations must evaluate their workspace complexity against the available migration architectures to determine the most cost-effective route.

Info

Transparency note: ClonePartner operates in the managed migration category. We've included all three architectures because each one is the right choice for a specific situation. We've aimed to represent the tradeoffs honestly — if you think we've missed something, tell us.

Migration Architecture Ideal Use Case Database Reconstruction File Size Handling IT Resource Requirement
Native Atlassian Importer Text-heavy wikis, workspaces under 1,000 pages. No (converts to flat tables). Fails/times out on large ZIPs. High (Requires manual QA and macro rebuilding).
Open Source Scripts Engineering teams capable of maintaining custom JSON mapping scripts. See note below on current ecosystem maturity. Partial (requires custom developer logic). Bypasses UI; depends on script stability. Very High (Requires dedicated developer hours for setup, debugging, and ongoing maintenance).
Managed API Pipeline Enterprise environments, high reliance on relational databases, compliance requirements. Yes (programmatically maps Notion blocks to Confluence macros). API-driven extraction avoids UI upload limits. Low (Requires initial scoping; vendor handles execution).

A note on open-source tooling: The open-source ecosystem for Notion-to-Confluence migration is thin. The most referenced repository is johnapaz/notion-confluence-migrator on GitHub. Before committing to this path, check the repo's last commit date and open issues — maintenance has been inconsistent. Other community scripts exist but tend to be single-developer projects without active support. This path is viable if you have a developer who can fork, debug, and extend the code for your specific workspace structure, but it is not a turnkey solution.

API rate limits to plan for: If you're building or running custom scripts against both APIs, be aware that both Notion and Confluence enforce rate limits. The Notion API enforces a rate limit of 3 requests per second. Confluence Cloud's REST API uses a token-bucket model with limits that vary by endpoint. Any script doing bulk operations needs retry logic and backoff handling built in, or it will stall on large workspaces.

Phase 6: Post-Migration Validation

A migration is only complete after data integrity is verified.

  1. Hierarchy Audit: Ensure child pages nested properly under their parent spaces. Confluence operates best with wider, shallower trees compared to Notion's infinite nesting.
  2. Link Remediation: Internal links may still point to notion.so URLs. Execute a global find-and-replace to update internal routing to the new Confluence environment.
  3. Permission Validation: Notion's permission model (workspace-level, page-level, team spaces) does not map directly to Confluence's space-and-page permission scheme. Verify that private pages (e.g., HR, Executive) did not inherit global workspace permissions during the transfer. Specifically: Notion pages shared with individual users need their equivalent Confluence page restrictions manually configured, and Notion "Team Spaces" should map to dedicated Confluence spaces with appropriate group permissions.
  4. Rollback Readiness: Before starting the migration, take a full backup of your Confluence target space (if it contains existing content). If the import produces unexpected results, you can delete the imported space and re-import. For Notion, your source data is untouched by the export process — but verify this by spot-checking a few pages in Notion after export to confirm nothing was modified.

Scope of Advice & Calibration

Target Environment: This architectural guide applies specifically to migrations from Notion Workspaces to Confluence Cloud environments as of 2025. It does not cover legacy Confluence Server or Data Center deployments. Target Audience: IT Systems Architects, Operations Leads, and Technical Project Managers responsible for enterprise data integrity. Methodology: The failure modes, time heuristics, and block-to-macro translation protocols detailed in this guide are derived from ClonePartner's direct experience executing these migrations, documented Atlassian API constraints, Atlassian Community bug reports, and standard enterprise data-scoping practices.

Sources & References

To verify the technical constraints, API limits, and importer behaviors discussed in this architecture guide, refer to the following official documentation and repository logs:

Frequently Asked Questions

Does Confluence import Notion databases with their relations intact?
No. The native Atlassian importer flattens Notion databases into static HTML tables and converts individual database entries into subpages. Retaining interactive relations requires either manual recreation using Confluence macros or a custom API migration pipeline.
Why does the Confluence importer time out when uploading Notion data?
Timeouts generally occur when the exported Notion ZIP file exceeds Confluence Cloud's default attachment processing limits (often around 1GB). This requires users to export and import their Notion workspace in smaller, segmented chunks.
Should Notion pages be exported as PDF for a Confluence migration?
No. PDF exports create flat, uneditable documents that destroy the wiki structure and page tree hierarchy. HTML (with subpages included) is the required format for a structured Confluence migration.
How do I maintain authorship and page permissions during a Notion to Confluence migration?
During the native HTML import process, Confluence will prompt you to map Notion user IDs to Confluence user IDs. You must ensure all target users are fully provisioned in your Atlassian environment prior to executing the import; otherwise, page authorship will default to an "Anonymous" user.
Can I use Markdown instead of HTML for the export?
While Notion allows Markdown exports, HTML is strictly recommended for Confluence migrations. Markdown exports often struggle with deep directory paths for image attachments and fail to translate Notion's toggle and column blocks as cleanly as the HTML parser.
Is it better to continuously sync Notion and Confluence instead of fully migrating?
Syncing (via tools like Truto) is viable for temporary coexistence or siloed teams, but it incurs double-licensing costs and risks data fragmentation. For permanent, company-wide transitions, a hard migration eliminates the security overhead of maintaining two separate knowledge bases.
What happens to Notion's inline comments when moved to Confluence?
The native Atlassian HTML importer drops Notion inline comments entirely. If these comments contain critical historical context, you must manually resolve them or copy them into the main page body prior to executing the export.

More from our Blog

Pylon to Missive Migration: The Technical Guide
Migration Guide/Pylon/Missive

Pylon to Missive Migration: The Technical Guide

A technical guide to migrating from Pylon to Missive covering data model mapping, API rate limits, migration approaches, edge cases, and step-by-step implementation.

Nachi Nachi · · 25 min read