Migration Playbook

Document360 Notion

Document360 to Notion: The Complete Migration Playbook

A 36-step runbook across six phases — track your progress, and open the right tool at every step.

0 / 36 steps complete 0%
TL;DR

Document360's rigid hierarchy requires block-level content translation, dual rate limit handling, and internal link rewriting to migrate cleanly into Notion's flexible workspace model.

There is no native migration path from Document360 to Notion. A ZIP export gives you raw files — it does not rebuild hierarchy, rewrite internal links, re-host media, or respect Notion's API payload ceilings. Document360 enforces a rigid Project → Workspace → Category → Article hierarchy with up to six levels of nesting and three distinct category types. Notion is block-based, where every heading, paragraph, and image is a typed JSON object that nests freely inside other blocks. Every article must be parsed into Notion's block arrays, with dual rate-limit orchestration across both APIs, media re-hosting within a one-hour upload window, and a two-pass internal link rewrite using slug-to-page-ID mapping.

Read this first

Pair-specific gotchas that catch teams out. Each one has cost somebody a weekend.

Do not map every Document360 category to an empty Notion page

Page categories carry content. If you flatten them into structure-only nodes, you will silently drop live documentation.

Content reuse elements — templates, variables, snippets, and glossary terms — are not

Content reuse elements — templates, variables, snippets, and glossary terms — are not included in the ZIP export. You will need to recreate these manually in Notion or find equivalent patterns using synced blocks and database templates. (docs.document360.com)

The CSV Trap

Document360's CSV export from the All Articles section only extracts metadata — titles, categories, status, dates, URLs. It does not include article body content. It is useful for auditing your knowledge base before migration, but useless for actually moving content. (docs.document360.com)

Best extraction pattern

Use the ZIP export for bulk article bodies and media, then use the category and article APIs to enrich your manifest with IDs, slugs, legacy URLs, ordering, language, and visibility metadata. That gives you both the content files and the structured metadata needed for deterministic mapping.

Do not leave images pointing to Document360's CDN after migration

If your Document360 subscription lapses or the project is deleted, all externally referenced images will return 404s. Re-host every asset to Notion's storage during migration.

The fastest way to create broken links is to import first and map later

Build the legacy URL manifest before the first production import, or you will spend the QA phase reverse-engineering page identities that you could have captured up front. (apidocs.document360.com)

The runbook

Work top to bottom. Tick steps as you go — your progress is saved in this browser.

01 Discovery Decide what content deserves to move before you plan how to move it. 0/6

Objective A content inventory with a keep/rewrite/retire decision on every article and an agreed URL strategy.

  1. Inventory all content in Document360

    Content lead 2-3 days

    Count articles, categories, attachments, images and embedded media, and pull page views and last-updated dates for each article. Usage data is what makes the next decision defensible rather than political.

    Data Profiler Get real record counts instead of estimating from memory
  2. Make a keep, rewrite or retire call on every article

    Content lead 1-2 weeks

    Most knowledge bases are half stale. Migrating everything imports the staleness and doubles the work; use views and last-updated to triage, and get the owning team to confirm. This usually removes 30-50% of scope.

    Migrating stale content is the most common knowledge-base migration mistake — it costs effort and actively degrades the new site.

  3. Agree the URL and redirect strategy

    SEO / web 2-3 days

    Decide the Notion URL structure and whether you can serve 301 redirects from the old paths. Public help centres carry real search traffic and inbound links; losing it is a measurable commercial impact.

    Without 301 redirects from old article URLs you lose accumulated search ranking and every external link and bookmark breaks.

  4. Map the information architecture

    Content lead 3-5 days

    Document the current category tree and design the target one, checking whether Notion supports your nesting depth. Deeply nested hierarchies frequently have to be flattened, which changes navigation for everyone.

  5. Confirm permissions, audiences and localisation scope

    Content lead 2-3 days

    Establish which content is public, internal or restricted, and how Notion models that. Then confirm how many locales you have and whether translation relationships between articles survive the move.

  6. Plan requirement

    You must be on a Business or Enterprise plan to use the export project API endpoint. Standard and Professional plans cannot trigger a project export via API.

Document360 → Notion specifics

Tool consolidation
Document360 is a dedicated knowledge base platform. Teams already running Notion for project management, sprint boards, and internal wikis want to collapse their documentation into the same workspace rather than pay for a separate tool.
Cost pressure
Document360 moved to fully sales-led pricing with no free tier as of late 2024. Notion's per-member pricing is significantly lower for teams that do not need purpose-built KB publishing features like approval workflows, decision trees, or reader analytics.
Flexibility over structure
Document360's rigid category hierarchy is powerful for structured public-facing documentation but limiting for teams that want to cross-reference docs with project databases, embed live data views, or build custom dashboards alongside their knowledge base.

Don't move on until

  • Full content inventory with page views and last-updated dates
  • Keep / rewrite / retire decision recorded per article
  • URL and redirect strategy agreed with whoever owns SEO
02 Data Audit Audit the markup, the links and the assets — that is where KB migrations break. 0/6

Objective A content export with markup, internal links and every embedded asset accounted for.

  1. Export content and assess markup fidelity

    Content engineer 2-3 days

    Export articles in the richest format available and inspect what survived: tables, code blocks, callouts, nested lists, anchors and embedded video. Rich formatting is where fidelity is lost, and it is lost quietly.

    HTML-to-Markdown conversion routinely mangles nested lists, tables and code blocks. Inspect the output rather than trusting the converter.

    Data Profiler Profile the Document360 export for nulls, outliers and type drift
  2. Inventory every internal link and cross-reference

    Content engineer 2-3 days

    Extract all internal links, anchor links and article cross-references. These break by default: the target URL structure differs, so every internal link needs rewriting as part of the load, not afterwards.

    Internal links left pointing at old URLs turn the new knowledge base into a maze of 404s on day one.

  3. Inventory images, attachments and embedded media

    Content engineer 2 days

    List every asset with its URL, size and type, and confirm each still resolves. Assets hosted on the old platform's CDN will 404 the moment you decommission it, so they must be rehosted, not referenced.

    Images referenced from the source platform's CDN break when the old account closes. Download and rehost every asset.

  4. Find and fix broken links and orphans

    Content lead 2-3 days

    Crawl for existing broken internal and external links, and find articles no category links to. Fix them before migrating — a migration is a bad time to discover pre-existing rot.

  5. Check for PII and internal information in public content

    Compliance 1-2 days

    Scan for customer names, internal hostnames, credentials in code samples and screenshots containing real data. Republishing these on a public help centre is a disclosure, and screenshots are the usual culprit.

    PII & Compliance Scanner Find regulated fields before they land in a new system
  6. Normalise metadata

    Content engineer 1-2 days

    Standardise authors, tags, timestamps to UTC, and locale codes. Author mapping needs a decision for people who have left — attribution to a deleted user usually fails the import.

Document360 → Notion specifics

Rate limit
The export API is capped at 2 calls per day. Exceed this and you receive a 400 error: "Export API request limit(2) is reached for the day."

Don't move on until

  • Content exported with markup fidelity assessed
  • Every internal link and asset reference inventoried
  • Broken links and missing assets fixed or logged
03 Field Mapping Map structure, metadata, permissions and — above all — URLs. 0/6

Objective A mapping covering article fields, taxonomy, permissions and a complete old-to-new URL map.

  1. Map the article schema

    Content engineer 2 days

    Map title, body, excerpt, author, dates, status, tags, SEO metadata and any custom properties. Confirm which fields Notion lets you set on import versus which it computes — computed dates are a common surprise.

    Schema Mapper Opens pre-loaded with the Document360 → Notion field pair
  2. Map the taxonomy and hierarchy

    Content lead 2-3 days

    Map categories, sections and tags to the target structure, resolving any nesting-depth limit explicitly. If you must flatten, decide how the lost level is preserved — usually as a tag or a title prefix.

    JSON to CSV Converter Flatten nested API responses into a reviewable sheet
  3. Map permissions and audience segmentation

    Content lead 2 days

    Map public, logged-in, and role-restricted visibility to Notion's model. Verify the mapping deliberately: internal content accidentally published publicly is the highest-severity failure in this whole category.

    Permission mapping errors publish internal documentation to the open web. Verify visibility on every restricted article after load.

  4. Build the complete old-to-new URL map

    SEO / web 2-3 days

    Produce a row per article mapping the old URL to the new one, then confirm exactly where the 301s will be served — Notion, a CDN, or your own web layer. Without this artifact the redirect step cannot be executed at all.

  5. Define the markup conversion and link-rewrite rules

    Content engineer 3-5 days

    Specify how each markup construct converts and how internal links are rewritten using the URL map. Write it as a repeatable transform, not manual edits — you will run it more than once.

    Data Format Converter Reshape the export into the format Notion's importer expects
  6. Plan localisation and freeze the spec

    Content lead 1-2 days

    Confirm how translated articles link to their source language in Notion, then version and sign off the mapping spec.

Don't move on until

  • Article schema and taxonomy mapped
  • Permission and audience model mapped to target equivalents
  • Complete URL map produced and redirect method confirmed
04 Test Migration Pilot the hardest articles, then read them. 0/6

Objective A pilot load whose formatting, links, assets and search all hold up under human review.

  1. Configure Notion with the agreed structure

    Content engineer 3-5 days

    Create the category tree, permission groups, locales and branding before loading. Articles loaded before their categories exist land uncategorised and have to be moved by hand.

  2. Pick the most difficult articles as the pilot

    Content lead 0.5 day

    Choose 20-50 articles for difficulty: the longest, the most heavily formatted, ones with tables and code blocks, deep internal linking, many images, embedded video, restricted visibility, and non-Latin scripts. Easy articles prove nothing.

  3. Run the conversion and load with link rewriting

    Content engineer 2-3 days

    Apply the markup conversion, rewrite internal links from the URL map, upload and re-reference assets, then load. Log every conversion warning rather than suppressing it.

  4. Read every pilot article side by side

    Content lead 2-3 days

    Open source and target together and compare rendering. This step is manual on purpose: no automated check catches a table that collapsed into a paragraph or a code block that lost its indentation.

  5. Click every link and load every asset

    Content engineer 1-2 days

    Verify each internal link resolves, each image loads from the new host, each attachment downloads and each embed plays. Assets still served from the old CDN are the defect that surfaces only after decommissioning.

    Migration Validation Tool Diff the pilot batch against source before scaling up
  6. Test search and permissions

    Content lead 1-2 days

    Search for known terms and confirm the right articles rank, then verify every restricted pilot article is invisible to an anonymous browser. Test permissions from a logged-out session, not an admin one.

Don't move on until

  • Complex articles render correctly with formatting intact
  • Every internal link and asset in the pilot resolves
  • Search returns sensible results for the pilot content
05 Cutover Publish, redirect, and keep the search traffic. 0/6

Objective All in-scope content live in Notion with redirects serving and search engines informed.

  1. Load the full content set ahead of the switch

    Content engineer 1-2 weeks

    Run the full conversion and load into Notion, unpublished or on a staging domain. Content migration differs from data migration here: you can stage the whole thing before anyone sees it.

  2. Publish the runbook with the redirect step first-class

    Project manager 1 day

    Sequence the freeze, final delta, publish, redirect activation, sitemap submission and link updates, with owners for each. Redirect activation is the step with lasting commercial consequences, so it gets explicit ownership.

  3. Freeze editing and migrate the delta

    Content lead 2-4 hours

    Stop editing in Document360, then convert and load anything changed since the full load. Announce the freeze to every team that publishes — content teams are used to editing whenever they like.

  4. Publish and verify permissions live

    Content lead 2-4 hours

    Publish the content set, then immediately verify restricted articles are not publicly reachable using an anonymous session. Do this before announcing the new site, not after.

    Verify restricted content from a logged-out browser. An admin session will show you everything and tell you nothing.

    Migration Validation Tool Confirm the final delta landed before you reopen
  5. Activate 301 redirects and submit the sitemap

    SEO / web 2-4 hours

    Turn on the redirects from the URL map, then spot-check a sample of high-traffic old URLs and confirm each returns 301 to the right article. Submit the new sitemap and keep the old one reachable until search engines have recrawled.

    Redirect chains and redirect loops both leak ranking. Verify each redirect resolves in a single hop.

  6. Repoint in-product and support links

    Content lead 1-2 days

    Update help links embedded in your product, in support macros, in email templates and in onboarding material. These are the links your existing customers actually use, and they are easy to forget.

Don't move on until

  • All content loaded, categorised and correctly permissioned
  • 301 redirects live and verified from a sample of old URLs
  • Sitemap submitted and support links repointed
06 Validation Watch traffic, links and search rankings for weeks, not hours. 0/6

Objective Verified content completeness, healthy redirects, and search traffic recovered to baseline.

  1. Reconcile content counts and assets

    Content engineer 1-2 days

    Compare article counts by category and status, plus asset counts, against source. Confirm every article in the keep list is present and every retired one genuinely is not.

    Migration Validation Tool Reconcile Document360 and Notion record-for-record
  2. Crawl the new site for broken links and assets

    Content engineer 1-2 days

    Run a full crawl for 404s, broken images and missing attachments, and fix everything it finds. Repeat the crawl after the fixes rather than assuming they worked.

  3. Verify the redirects at scale

    SEO / web 1-2 days

    Test every mapped old URL for a single-hop 301 to the right destination. Chains and loops both leak ranking and are invisible unless you check the whole map, not a sample.

  4. Monitor organic traffic and rankings for four to eight weeks

    SEO / web 4-8 weeks

    Track organic sessions, impressions and rankings for your top articles against baseline. A dip in the first two weeks is normal; one that has not recovered by week six is a redirect or indexing problem to investigate.

    Do not decommission the old platform until search traffic has recovered — you may still need the old URLs to diagnose a ranking loss.

  5. Verify search, permissions and feedback loops

    Content lead 1-2 days

    Confirm on-site search returns good results for real queries, re-verify restricted content from a logged-out session, and check article feedback and analytics are collecting.

  6. Sign off and decommission on a delay

    Project sponsor 1 day

    Get acceptance against the Discovery criteria, keep Document360 available read-only until traffic has recovered, take a final export, and only then close the account.

Don't move on until

  • Article counts reconciled and no broken links remain
  • Redirects returning 301 with no chains or loops
  • Organic traffic recovered to within tolerance of baseline

Field mapping reference

The field-by-field mapping for each object. Use this as the starting point for your mapping spec.

Object Recommended Notion Target 10 fields
Document360 fieldNotion fieldNotes
Project Workspace 1:1 mapping. One D360 project = one Notion workspace.
Workspace Teamspace or top-level page If you use multiple D360 workspaces (e.g., product lines, audiences), map each to a Notion Teamspace (Business/Enterprise) or a top-level page.
Language Database property (Select) or duplicate page tree Notion has no native multi-language support. Either duplicate the page structure per language or add a language property and filter by it.
Category (Folder) Notion page Folder categories in D360 are pure containers — no content, no URL. Map to a Notion page that holds child pages.
Category (Index) Notion page with content Index categories auto-generate a listing page. Map to a Notion page with body content and nested sub-pages.
Category (Page) Notion page with content Page categories have editable content. Map to a Notion page with body content and nested sub-pages.
Article Notion page Each article becomes a Notion page. Content is translated block-by-block.
Tags Multi-select property If articles live in a Notion database, map D360 tags to a multi-select property.
Article status Status property Map D360's New/Draft/Published/Stale states to a Notion Status property.
SEO metadata Text properties D360's per-article meta title, description, and slug have no native equivalent in Notion. Store as text properties on a database page.

Risk matrix

Per-object risk for this pair. Plan extra validation around anything marked high.

ObjectRiskNotes
Internal Links high All Document360 URLs become dead — require slug-to-page-ID mapping and rewriting
Templates & Variables high Excluded from export entirely — must be manually recreated in Notion
Content Reuse (Snippets) high Not exported as discrete objects — rendered inline with isForDisplay or lost entirely
Inline Images medium Must be re-hosted to Notion storage — CDN URLs break after D360 subscription ends
Mixed Editor Types medium Markdown, WYSIWYG, and JSON exports require separate parsing pipelines
Category Type Semantics medium Folder, Index, and Page categories behave differently and need distinct mapping logic
Multi-language Content medium No native Notion localization — requires explicit language property or separate page trees
Replicated Articles medium Document360 allows articles in multiple categories — Notion has no equivalent replication
Approval Workflows low No Notion equivalent — status can be stored as a property but workflow logic is lost
Reader Analytics low Views, search terms, and feedback are not exportable from Document360

The hard parts

What makes this specific migration difficult, beyond the mechanics.

Block-level Translation

Document360 HTML and Markdown must be parsed into Notion's typed JSON block arrays with payload chunking under the 1,000-block ceiling.

Category Hierarchy Mapping

Document360's six-level category tree with three category types (Folder, Index, Page) requires explicit Notion mapping decisions.

Dual Rate Limits

Document360's 60–100 req/min and Notion's 3 req/sec limits require coordinated throttling and exponential backoff.

Media Re-hosting

All images must be uploaded via Notion's File Upload API and attached to a block or page within one hour or they expire.

Internal Link Rewriting

Document360 slug-based URLs must be mapped to Notion page IDs in a two-pass creation-then-rewrite approach.

What breaks

Known failure modes. Have a recovery plan for each before you cut over.

Mixed editor types

If your Document360 project uses both Markdown and WYSIWYG editors across different articles, the ZIP export contains a mix of .md and .html files. Your migration pipeline must handle both formats and route each through the correct parser based on the editor type metadata from the API.

Replicated articles

Document360 allows articles to appear in multiple categories via the Replicate feature. Notion has no equivalent. Decide whether to duplicate the page or use a database relation to represent the multi-category association.

Category type semantics

D360's three category types (Folder, Index, Page) behave differently. Folders have no URL or content. Index categories auto-generate a listing page. Page categories have editable content. Your mapping logic must handle all three — a single generic "create page" function will not work.

Language variants

Multi-language projects export differently depending on whether you select one or multiple languages. Single-language exports produce .md/.html files; multi-language exports produce .json. Your parser must handle both formats.

Notion CSV relation gap

Notion's CSV importer creates databases where rows become pages and columns become properties, but it cannot map relation properties during import. Relations, rollups, and formulas must always be rebuilt after the initial import. (notion.com)

Undocumented Notion duplication limit

Notion reportedly enforces a limit of approximately 50,000 block duplications per hour. If your migration script uses Notion's duplicate or move page operations internally, you may hit this silently.

Tools used in this playbook

All free, all run entirely in your browser — nothing is uploaded.

FAQ

Can I export full article content from Document360 as CSV?

No. Document360's CSV export only includes metadata — titles, categories, status, dates, and URLs. It does not include article body content. Use the ZIP export or the REST API to extract actual content.

What is the Notion API rate limit for bulk imports?

Notion's API enforces an average of 3 requests per second per integration token (2,700 requests per 15 minutes). Exceeding this returns HTTP 429 with a Retry-After header. Payloads are also capped at 1,000 blocks and 500 KB per request.

Does the Document360 export API require an Enterprise plan?

The export project API endpoint requires a Business or Enterprise plan and is limited to 2 calls per day. Standard and Professional plans cannot trigger project exports via API. Article-level API access starts at the Professional tier (60 req/min).

What happens to internal links when migrating from Document360 to Notion?

All internal Document360 links break after migration because Notion uses page IDs, not URL slugs. Each link must be rewritten by building a slug-to-Notion-page-ID lookup table and replacing references across all migrated articles in a second pass.

Should I export Document360 as Markdown, HTML, or JSON?

For single-language exports, Markdown-editor articles come out as .md and WYSIWYG articles as .html. Multi-language exports become .json, which is harder to feed directly into Notion's native importers. Export each language separately whenever possible.

Or skip all of this and let us handle it

Book a 30-minute call and we'll scope your migration in a single session.