Permissions, data and limits
What the app can access, what it stores during a job, and troubleshooting.
Permissions the app requests
| Scope | Why it is needed |
|---|---|
read:confluence-content.all, read:confluence-content.summary | Read page content and metadata in order to convert it. |
read:page:confluence, read:space:confluence | Read the page tree and space information for the selectors. |
write:confluence-content | Create the pages an import produces, and replace a page's body when you choose that on a title collision. |
write:confluence-file | Upload the images and files an imported page refers to. |
read:attachment:confluence | List a page's attachments so an export can fetch them. |
storage:app | Hold in-flight job data. |
report:personal-data | Report to Atlassian the account ID on each job record, so a closed account's jobs can be erased. |
The two write: scopes exist for the import and nothing else. Nothing in the export path can create or change a page. The app declares no external network access at all — every conversion happens inside Atlassian Forge, and no content is sent anywhere.
How the write permission is kept honest
An import creates its root page as you, before anything else happens — so Confluence itself decides whether you may write in that space, rather than the app deciding on your behalf. Everything the job creates afterwards goes underneath that page. Reads work the same way: an export contains only pages you can already open, and a restricted page is skipped rather than exported empty.
What the app stores
- Macro content — the Markdown of each macro, for as long as the macro exists on a page.
- Job data — a manifest of what an export or import covers, plus the content in chunks while the job runs. Export data is held until you download it or reset the job; import data is released when the job finishes.
Everything is deleted when the app is uninstalled. See the privacy policy.
Troubleshooting
- The export stops part-way
- Use Reset and re-run with a narrower selection. Very large spaces with attachments are the usual cause; exporting the tree in two halves normally works where one pass does not.
- Some pages are missing from the export
- You can only export what you can read. Restricted pages are skipped.
- I cannot find the Markdown Toolkit screen
- It is Markdown Toolkit in the space sidebar, alongside Pages and Blogs — not in space settings. Anyone who can open the space can open it. To export a single page or a page tree without leaving the page, use ••• → Export to Markdown.
- The import says I do not have permission
- It failed to create the page everything else would go under, which means Confluence does not allow you to add pages to that space. Ask a space administrator for Add page permission, or import into a space where you already have it.
- The import created nothing the second time
- That is the default conflict setting doing its job: a page with that title already existed, so it was left alone. The result says how many. Choose Replace the existing page if you meant to overwrite.
- An image is missing from an imported page
- Either the file was not in the archive, or nothing in the Markdown pointed at it — the app only uploads files a page actually refers to. The result lists any upload that failed, with the path.
- The exported archive opens with broken links
- Check the destination you exported for. An Obsidian export uses wikilinks, which a plain Markdown viewer does not resolve; a Docusaurus export puts parent pages in
index.md. Re-export with the destination that matches where the files are going. - A Mermaid diagram does not render
- Check the fence says exactly
mermaid, then use Preview — Mermaid reports its own syntax errors there. - A wide diagram is cut off
- It is not cut off, it is scrolling: the default Width setting keeps a diagram's natural size and scrolls inside the block, because shrinking a wide sequence or ER diagram to the column makes its labels unreadable. Set Width to Fit if you would rather have it small.
- Maths shows as plain text
- Use
$…$for inline and$$…$$for a block. A lone$in a sentence about money is treated as text, which is deliberate. - The exported page has a comment about a macro
- That macro has no Markdown equivalent. The comment marks where it was so you know something dynamic is missing.
For anything else, the support portal needs the space key and, ideally, the page that failed to convert.