App technical information
Where it runs, whose permissions it uses, and how a save reaches Confluence.
App technical information
Where the app runs, whose permissions it uses, what it keeps, and how a save reaches Confluence. Page Order runs entirely on Atlassian infrastructure — no external servers, and no data leaves your Confluence site.
Where it runs
Page Order is an Atlassian Forge app for Confluence Cloud. It has two parts, and both run on Atlassian’s own infrastructure:
- The organizer you work in. This is the screen Confluence shows when you open Organize Child Pages from a page’s ••• menu, Page Order in a space’s sidebar, or Page Order for Confluence under Apps (see Where to open it). It reads the page tree for you to browse and holds your changes until you save.
- One function on Forge. This is the part that moves the pages when you press Save changes. Each move goes from there straight to Confluence, instead of making a round trip through your browser.
The app declares no external domains, so it has no way to send anything outside Atlassian: it is a Runs on Atlassian app. Even its icon is bundled with the app instead of being fetched from somewhere else. It follows your Confluence theme, light or dark.
It acts as you
Every call Page Order makes to Confluence is made as the person signed in: in the browser through Forge’s requestConfluence, and during a save through api.asUser(). It never acts as the app itself, and never for someone who isn’t at the screen — there is no impersonation. So Confluence applies your own permissions, exactly as if you had moved the pages by hand:
- You see only what you can see. Pages you can’t view don’t appear in the list, the page tree or Move to….
- Moving needs Confluence’s own permission. Confluence lets you move pages in a space if you are a space admin there, or have Manage all content where space roles are on. Without either, the list is read-only and a banner says so: “You can see this order but not change it. Moving pages needs Space admin or Manage all content in Team Handbook.”
- Refusals are per page. A move Confluence turns down, such as a restricted page or a space where you can’t move pages, fails on its own and is named in the result. The rest of the save goes ahead.
The Admin guide covers these permissions in detail.
It stores nothing
Page Order has no Forge storage, no database, no triggers and no scheduled or background jobs. Nothing about your pages, your spaces or you is kept once you close it.
- Unsaved changes live in the open tab. Until you press Save changes, every sort, drag and move exists only on your screen. Discard, a reload or closing the tab drops them, and Confluence is untouched.
- The order lives in Confluence. A save moves pages in Confluence’s own page tree, and the app keeps no copy of the order. Nothing re-sorts a parent later: as in Confluence itself, pages stay where they are until someone sorts or moves them again.
- One browser setting. Whether the page tree is shown (Hide page tree or Show page tree) is remembered in your browser’s local storage, for that browser only. If the browser won’t keep it, the tree is simply shown each time.
How a save works
Confluence moves one page per call and has no batch move, so a save is a sequence of single moves, made in an order that keeps the result exact.
Checked as you work
Before a move to another parent is added to Unsaved changes, the app checks for what Confluence would refuse: a page with more than 1,000 items beneath it, a title already used in the other space, and a destination inside one of the pages being moved. Pages that can’t go are left out (for a title that is already taken, the app first offers to rename the page), and the move says which and why, so a refusal doesn’t first surface halfway through a save. Limits covers each one.
The steps of a save
- Check the order first. The app reads the current order of every parent your changes touch and compares it with the order you were shown when you made your changes. If anything changed since then, someone else moving a page for example, nothing is saved and a banner says “These pages changed since you opened them, so nothing was saved.” Load the latest order starts you again from what Confluence has now.
- Move pages to their new parents. Pages you chose to rename, because their title is already used in the space they are going to, are renamed first. Then each page moves, lining up after the one before it so the group lands together, at the top or the bottom as you chose. Their child pages move with them.
- Apply each parent’s new order. The app keeps the longest run of pages already in the right order relative to each other and moves only the rest, so the count in Unsaved changes is the number of pages that really move. Within one parent the moves run one after another, because Confluence loses track of sibling positions when several move at once; up to three different parents are worked on at the same time. Afterwards the app reads the order back from Confluence, and if anything landed out of place (a page couldn’t move, or someone moved one meanwhile), it plans again from what Confluence actually has and puts it right once.
- Sort every level below. If you sorted with Include every level below, each parent beneath the one you sorted is sorted the same way, working down a level at a time, up to three parents at once.
In stretches, driven by your tab
Forge gives one call of an app’s function 25 seconds, and a big save takes far longer. So a save runs in stretches: your tab asks the function to carry on, the function works for about 10 seconds (it starts no new move after that) and replies with how far it got, and your tab asks again, until every step is done. Each stretch acts as you, just like the first.
Progress shows in the panel beside the list (“Moving pages… 40 of 120”), together with: “Moving a lot of pages can take a few minutes. Keep this tab open until it’s done; closing it stops the save.” When it finishes, the panel says how many pages moved: under Saved, or under Note when some pages couldn’t be moved, which it names along with the reason.
If the tab closes
Because nothing is stored and nothing runs in the background, there is nothing to carry a save on once your tab is gone. Closing or reloading the tab stops it: no new stretch starts, and pages already moved stay moved. Open the parent again and the list shows the order as it is now; sorting or dragging again plans only what is still out of place.
While there are unsaved changes or a save is running, the app asks your browser to warn you before the tab reloads or closes. Some browsers skip that warning inside an app’s frame, so don’t rely on it. The app’s own ways out, Close and Choose another space, ask before dropping unsaved changes, and Close is unavailable while a save runs.
If Confluence is busy, the app waits and tries again instead of failing; Limits has the details.
There is no undo, as in Confluence itself. The Unsaved changes panel lists every change before you save, and its summary ends “Saving can’t be undone.” To reverse a save, sort or move the pages back.