Confluence Deleted Page Not in Trash? What Still Survives
14 minSentinel VaultWatch on YouTube
Recorded on Confluence Cloud Premium with Sentinel Vault 8.19.0. Screens as they looked on 23 October 2026.
Elzi, LeanZero's animated presenter, empties a space's trash and then asks what every admin asks next: is the page really gone? First, what Confluence Cloud does. A deleted page waits in the space trash until a space admin restores or purges it, a restored page comes back at the space root without its inherited permissions, and a purge takes the page, all its versions and its attachments for good.
Then what is left. On Cloud a page stays in the space trash until someone purges it (only a whole space left in the trash is deleted after 60 days). After a purge, only a backup or export made before it still holds the page, and Atlassian's Backup and Restore, a paid add-on for Premium and Enterprise, restores a whole app into an empty one, not one page. Sentinel Vault is not a backup either and does not bring the page back, but its space Activity report still shows who asked for approval, who approved which version and why.
After the purge those history rows had lost the page's name, so we fixed that in the real code, on camera. History written after the fix keeps the page's title for space and site admins; rows written before it still show the page's ID.
The app in this episode
Copy the config
What the episode uses. Swap in your own keys and names before you paste. The time link plays the moment it is used.
Before anyone empties a Confluence space trash: a checklist
ChecklistUsed at 13:30
1Before anyone empties a Confluence space trash (Confluence Cloud, every plan)
2
31. Where: Space settings > Content > Trash. A space admin can Restore or Purge each item, or Purge All.
42. A deleted PAGE waits in the trash until a space admin purges it. There is no timer for pages.
5 (A deleted SPACE is different: Confluence permanently deletes it after 60 days in the trash.)
63. Purge takes the page, all its versions and its attachments, for good. Read the list before Purge All:
7 Purge All also clears deleted blog posts.
84. Restoring instead? The page comes back at the top of the space, not under its parent, and it loses
9 the parent's restrictions. Move it back, then check Share > General access.
105. Drafts, unpublished changes and single page versions never go to the trash: deleting them is permanent.
116. Who deleted it? The trash does not show it (request CONFCLOUD-4792).
127. The way back after a purge is a backup made before it. Atlassian Backup and Restore is a paid
13 add-on (Premium and Enterprise, annual): 30 days, the whole product restored into an empty Confluence
14 or sandbox, no Marketplace app data.
158. With Sentinel Vault: Space apps > Sentinel Vault > Activity > Workflow, then Export CSV. After a purge it
16 still shows who asked for approval and who approved which version, and why. It does not show who
17 deleted the page. From Sentinel Vault 8.21.0 (SVT-148), rows written after it also keep the page's title for space and
18 site admins.
19Native facts from Atlassian's docs, read 2026-10-22 (links on the page). Sentinel Vault step as filmed (Space apps > Sentinel Vault > Activity).
Try Sentinel Vault on your own site
Install it from the Atlassian Marketplace and follow the episode on your own Confluence Cloud. Free for up to 10 users.
Words you'll hear
New to this? These are the terms the episode uses, in plain words.
- space
- The folder-like area where a team keeps its Confluence pages.
- Also called: spaces
- trash
- Where a deleted page waits until it's restored or purged.
- purge
- Delete from the trash for good: page, versions and files.
- Also called: Purge All, purged, purging
- space admin
- Someone with the Admin permission for one Confluence space.
- Also called: space admins
- Activity tab
- Sentinel Vault's history of every action on this space's pages.
- Also called: Activity report
- CSV
- A spreadsheet file with the same rows.
Transcript
The narration as spoken. Select a time to play the video from there.
0:00Deleted Confluence page, trash emptied: is it really gone?
0:00Hi, it's Elzi again. So... I didn't get fired.
0:04Thanks for that! Your feedback on the first video was mixed, but really welcome, and I've picked up a few new tricks since.
0:13Today I'm tidying up Confluence. When you delete a page in Confluence Cloud, it doesn't actually go away. It sits in the space's trash, and it stays there until somebody empties it. Today that somebody is me. So... old meeting notes, a copy of the travel policy, some security thing... junk, all of it.
0:32Emptying the trash for good is called purging, and this Purge All button does the whole lot in one go. It asks if I'm sure, and yes, I'm sure.
0:43Spotless. Right, what I actually came in for is the Information Security Policy Iris approved earlier today, the one auditors always ask about...
0:55Uh-oh. Confluence can't find that page. That security thing I just threw out with the junk... was the policy.
1:04Is it... really gone?
1:07I purged an approved policy, every version of it,
1:10its files, Iris's approval,
1:12the whole record of who signed off on what,
1:14and probably my job.
1:19Okay. Breathe. If only something had made me check before I clicked.
1:25So let's find out what a purge really takes with it, whether anything can bring a page back, and whether anything out there can still prove who approved it.
1:33Confluence trash: restore a deleted page, then purge it
1:34Before I really panic, let me see what Confluence does with a deleted page on its own, using a page I can do whatever I want with, our Remote Work Policy.
1:42It sits inside HR Policies, which only a few people can open, so it's locked away as well, and the Share menu says Restricted by a parent.
1:51So I delete it from the page's menu.
1:58Confluence warns me that once it's deleted, the parent's lock won't protect it anymore. Hang on to that, it comes back later.
2:07And there it is in the trash, where a space admin can bring it back or purge it.
2:12What the trash doesn't tell you is who deleted it. There's just no column for that.
2:17And somebody put my security policy in there before I ever emptied it. Who did that? I'll have to figure that out myself, and I have a hunch.
2:28And I'm not the only one who wants to know. People have been asking Atlassian for a deleted-by column in the trash since two thousand and five.
2:37Anyway, back to my test page.
2:40I want it back, so I hit Restore.
2:43And it's back. Well, sort of. It came back at the top of the space instead of inside HR Policies.
2:52And remember that warning? The lock didn't come back with it. The Share menu now says Open, so anyone in the space can read it. So if you ever restore a page, move it back where it was and check who can see it.
3:06Now I'm going to do on purpose what I did by accident. I delete it again, and this time I purge it from the trash.
3:15Confluence asks one more time, and now it spells it out. This action cannot be undone.
3:23Purged. It's only our test page, and yes, I meant it.
3:30So Confluence on its own can't bring a purged page back. The only way back is a backup made before the purge.
3:39Atlassian Backup and Restore: whole Confluence, not one page
3:39Atlassian sells one, called Backup and Restore. It's a paid add-on for Confluence's two top plans, Premium and Enterprise, built to get a whole site back after a disaster, so it backs up all your spaces in one go.
3:53Restoring works the same way, all of it at once, and only into an empty Confluence, never into the one you're working in. So to get one page back, you'd need a second, empty site to restore everything into, just to fish that page out.
4:07It also leaves out what apps store, and our approvals live in an app. For one purged policy, then, a whole-Confluence restore is a big hammer that still wouldn't give me what I actually need, which is proof of who approved it, and why.
4:21After the purge: who approved the deleted page, and why
4:22That proof was never only on the page, though. Sentinel Vault, the approvals app my bosses at LeanZero make, keeps its own record of every request and every approval. So when the page went, that record shouldn't have gone with it. In theory.
4:39Every space that uses it gets a Sentinel Vault page in the sidebar...
4:46...and there's an Activity tab with everything the app did, or was asked to do, in this space.
4:52Okay, moment of truth. Take a guess. Did the purge take this history with it?
4:59There it is. Approval given. Iris approved version two of the policy, and her reason is still there too, read in full, and the signed copy matches.
5:10So I didn't purge the whole record after all. The page is gone, but the proof is still here. So if an auditor ever asks you who approved a page that's gone, and why, this is where you look.
5:23Let me pull out just this policy's rows for the auditor, so I'll type its title into the filter.
5:31Hmm. Nothing matches, and the rows were right there a second ago.
5:37Wait, look at the page column. There's no name anywhere, just the word Page and a long number. The only clue it's my policy is the signed file's name in one row.
5:50Okay, that one's on us. Our app remembered who did what and when, and forgot to write down what the page was called.
6:00And the spreadsheet I'd actually hand to that auditor has the same problem. The title column is empty.
6:08It's our app, so I'm going to fix it, right now, in the actual code.
6:13For Forge developers: keep what you'll need later
6:13If you build apps on Forge, Atlassian's platform for apps like this one, here's the mistake we made. Our app saved only a page's number, and trusted it could always ask Confluence for the name later. I'll find where the name gets lost, catch it with a test, fix it, and prove the fix. Not a developer? Stick around anyway, because after that I try it on a real page.
6:36This is where each row of that history gets written. It saves the page's ID, which is just the number Confluence gives every page, and nothing about what the page was called.
6:47So how do the pages that still exist get a name? Every time the report opens, it asks Confluence for each title. Once a page is purged, there's nobody left to ask, so you get the number instead.
7:01That's the whole mistake. If your app is going to need something later, like a page's name, it has to write it down while Confluence can still tell it.
7:19First I'll write a test, a little script that plays the bug back. An approved page called Travel policy gets purged, and its history should still say Travel policy. I want to see it fail first, so I know I can trust it.
7:34It starts with an approved page called Travel policy, with its history already written, just like our policy this morning.
7:49It doesn't even need a real site. The test fakes Confluence, and deleting the page from that fake answers just like a purge does.
8:05Then it asks for the space's report and the spreadsheet export, and both should still say Travel policy. Right now, I'm betting they don't.
8:31Red, which in testing means it fails. Every row says Page five hundred and one, and the title column in the spreadsheet is empty. That's the bug, right there.
8:41Now the fix.
8:43When a row gets written, the page still exists, and the app is already asking Confluence which space it's in. That answer includes the title, so keeping it costs nothing extra.
8:59Down where the row gets written, the helper that looked up the page's space now hands back its name too.
9:21Before it goes in, the name is cut at two hundred and fifty-five characters, the same cap the app already puts on the other names it keeps.
9:29In the row itself, it's one line, and the name now sits right next to the page's ID.
9:35Now the other end, the report that reads these rows. A page's name can give things away, so keeping a copy means deciding again who sees it, and here that's only space and site admins.
10:06Then I hand that admin check to the code that fills in the page names, and it only gets asked when a stored name might be shown.
10:14And even they only see the stored name once Confluence can't tell the report the name any more.
10:26If the page still exists, its live name wins, so a page renamed since then shows its new name.
10:43That's every change. Now the exact same test as before, untouched, gets another go.
10:52Green! All fifty-three checks pass, so the purged page keeps its name now.
11:06And the rest of the tests? Still green, so nothing they check got broken.
11:15Then two linters. Forge lint is the one to know: it reads your manifest and your code, and catches things like a missing permission before you deploy.
11:29I commit the change, which saves it with a note on what it fixes, and send it up to GitHub.
11:35The note says what changed and why, so whoever reads the history later doesn't have to guess.
11:53Then I build it and deploy it, which installs it on our test site. It went out in a Sentinel Vault update the same night.
12:03This fix didn't need any new permissions, so Forge rolls the update out to installed sites on its own. One that did would have to wait for each site's admin to approve them.
12:14So that's the rule I'm taking with me. Write it down while you still can. Now, a real page.
12:22Purge again: the history keeps the page's name
12:22So here's a fresh one, the Acceptable Use Policy, also approved by Iris, sitting in the trash.
12:29I'll purge just this one page this time, not the whole trash.
12:35Back to the Activity report. Moment of truth, again.
12:41Acceptable Use Policy! The page is purged, and its history still has its name.
12:50And the title filter that found nothing earlier finds it now.
12:54There's one catch though, and it's on me. Only history written from now on keeps the name, so my Information Security Policy stays a number. I'll live with that one.
13:05What survives a purge, what doesn't, and what's next
13:05So, is it really gone? The page, yes, unless a backup made before the purge still has it. The proof, no.
13:14What Sentinel Vault kept is the proof, who approved which version and why, and now the page's name as well. What it never knew, and what the trash never showed me, is who put my policy in there in the first place. My guess? Theo. Again.
13:30I've put a short checklist behind the link on screen, things to check before anyone empties the trash. Today, that someone was supposed to be me.
13:42Oh, and I still have a job. I checked.
13:47Next time, over in Jira, where teams track their work: a piece of work moves on with a field filled in, but filled in wrong. My bosses built an app for that too, CogniRunner, which checks the work against your rules before it can move on. See you there!
Under the hoodExpert
How it works, the permissions it asks for and what it does not do, for anyone checking it against the docs.
How it works
None: the manifest declares no external egress (permissions.external absent).
Forge storage on Atlassian (data residency per the listing). Activity history is kept unless a site admin turns on Delete old history (off by default; 730 days when on). Atlassian's Backup and Restore does not include app data.
Permissions
- storage:app
- The activity history, workflow state and approval records live in Forge storage.
- read:page:confluence
- Read a page's title and space when an activity row is written, and the current title when the report opens.
- read:confluence-content.summary
- Required by the page and attachment events that start the app's work (Forge events reference).
- read:space:confluence
- File each row under the page's current space.
- report:personal-data
- Weekly check of stored account ids with Atlassian; closed accounts are erased.
Limits and what it does not do
- Events used: avi:confluence:created:page, updated:page, unarchived:page and the attachment updated/trashed/deleted events; no page trash or page delete event, so a page's deletion is not recorded.
- Modules on screen: confluence:spacePage 'Sentinel Vault' (Space Preferences > Activity, with Export CSV).
- The report opens on Last 30 days; older history needs the date filter.
- Before 8.21.0 (SVT-148), a purged page's rows show 'Page ' and an empty CSV title. Since then, new rows keep the page's title for space and site admins; older rows are not backfilled.
- Back up or restore a page, its versions or its files: it is not a backup.
- Record who deleted a page or who emptied a trash.
- Read Confluence's audit log.
Sources
- DocsAtlassian: Delete, restore, or purge a content item
- DocsAtlassian: Delete a space (trashed spaces after 60 days)
- DocsAtlassian: Backup and Restore, frequently asked questions
- DocsAtlassian tracker: CONFCLOUD-4792, who/when/why in the trash
- DocsSentinel Vault public tracker: SVT-148
- DocsMarketplace listing, Privacy & Security tab
- ReleaseSentinel Vault 8.21.0 release notes (the fix)
