# Assign owners to stale Confluence pages, space by space

> Work through one wiki space at a time: see what has gone stale, give every page an accountable owner, and record it somewhere that survives.

- Workflow type: app
- Services: Confluence, Google Sheets, Slack Bot
- Categories: Operations
- Published: 2026-08-17

## What it does

- Pick a wiki space and get every page ranked by how long since it was genuinely touched, so the worst neglect rises to the top
- See who actually made the last real edit, rather than whoever happened to create the page years ago
- Give any page an accountable owner and keep that record in a spreadsheet that lives outside your wiki
- Stamp a review outcome, leave a note on the page itself, and message the new owner so the handoff is acknowledged

## What you'll need

- A Confluence account that can read the spaces you want to review, and add labels and comments to pages
- A Google account with a spreadsheet to hold the owner register
- A Slack workspace so newly assigned owners get a direct message

## Prompt

I want an app where our documentation team works through wiki governance one space at a time, using Confluence, Google Sheets and Slack Bot. This is a working surface, not a report. The point of the app is that every page ends up with a named accountable owner and a recorded review outcome, because Confluence cannot natively report page ownership and the last editor is a poor proxy for who is actually accountable.

The main screen starts with a space picker built from Confluence Get Spaces. Once a space is selected, show every page in it as a single ranked queue, worst first. Build the queue from Confluence Search Content (CQL) using lastmodified filters against the configured staleness threshold, and Confluence Get Pages in Space so that nothing in the space is missed by the search index. Each row shows the page title, how long since it was last genuinely touched, who made the last substantive edit, the current review outcome if any, and the assigned owner if one has been recorded.

Rank staleness on three signals only: how long since the last update, the page's position in the space page tree from Confluence Get Ancestor Pages (deeply buried or orphaned pages score worse), and comment silence from Confluence Get Footer Comments for Page (a page nobody has commented on in a long time is a page nobody is watching). There is no page view analytics operation available for Confluence, so do not promise view counts, read counts, popularity or traffic data anywhere in the UI, and do not design a column or chart that would need them. Because the tree and comment lookups are per page and Confluence rate limits are points based, compute the full score lazily for the visible page of results rather than the entire space at once, and sort the rest on last updated age.

For the last substantive editor, use Confluence Get Page Versions rather than the page's original creator. Walk the version history and attribute the last edit that looks like real work rather than a trivial touch, and show the version message where one exists so a reviewer can judge. Resolve account IDs into readable names with Confluence Get User by ID and cache them for the session so the same person is not looked up repeatedly.

Clicking a row opens a detail panel beside the queue without losing the reviewer's place. The panel shows the page body from Confluence Get Page by ID requested with the storage body format and rendered readably, plus the page's comment activity from Confluence Get Footer Comments for Page with the most recent first. Include a link out to the page in Confluence for anything the panel cannot show.

From that panel a reviewer can do four things. First, assign an accountable owner, which is the whole reason the app exists. Second, stamp a review outcome as a label using Confluence Add Labels (v1 API), with needs-review, verified and archive-candidate as the defaults. Third, leave the reviewer note directly on the page itself using Confluence Create Footer Comment, so the reasoning lives with the content and not only in the register. Fourth, DM the newly assigned owner using Slack Bot Look Up User by Email to find them, Slack Bot Open a Conversation to get the DM channel, and Slack Bot Send a Message to send a handoff note containing the page title, the link, the review outcome and the reviewer's comment, so the handoff is acknowledged rather than assumed.

The owner register is a durable record in Google Sheets and must survive outside Confluence. Keep one row per page with the page ID, title, space key, owner name, owner email, review outcome, reviewer, the date reviewed and the review cycle it belongs to. On load, read the register with Google Sheets Get Values and join it onto the queue by page ID so existing owners and outcomes show immediately. Assigning an owner to a page with no row appends one with Google Sheets Append Values; re-reviewing a page that already has a row overwrites it in place with Google Sheets Update Values rather than appending a duplicate. Never let the same page ID appear twice in the register.

Make the staleness threshold configurable at 90, 180 or 365 days, switchable from the main screen, and re-rank the queue when it changes. Default the queue to pages nobody has signed off in the current review cycle, so reviewers are not shown work that has already been done, with a toggle to reveal the whole space including already-reviewed pages. Show the reviewer their progress through the current space, for example how many pages remain unsigned, because working a space to zero is the behaviour the app is trying to encourage. Writes should be optimistic in the UI but clearly show if a Confluence label, comment or Slack message failed, so a reviewer never believes a handoff happened when it did not.

## How to customize

- Set the staleness threshold to 90, 180 or 365 days depending on how fast your documentation really ages
- Rename the review outcomes to match the governance vocabulary your team already uses
- Choose whether the queue opens on the whole space or only pages nobody has signed off in the current review cycle

## FAQ

### Does this show how many people viewed each page?

No, and that is deliberate. Confluence does not make page view data available here, so the app never shows view counts or popularity anywhere. Pages are ranked on how long since the last update, where the page sits in the space's page tree, and how long its comments have been silent.

### Why not just treat the last editor as the owner?

Because the last editor is a poor proxy for accountability. Someone who fixed a typo last March is not the person responsible for keeping a page correct. That is the whole reason this app exists: a reviewer names a real owner, and that decision gets recorded.

### Where does the ownership record actually live?

In a Google Sheet you control. Confluence cannot natively report page ownership, so the register is kept outside it. That means it survives, can be shared with people who do not have wiki admin rights, and can be audited cycle by cycle.

### Will it change our pages without asking?

It only writes when a reviewer chooses to act. Adding a label, leaving a note on the page, recording an owner, and sending the notification all happen from the review panel, one page at a time.

### Can we use it across more than one space?

Yes. It works one space at a time on purpose, because governance stalls when the queue is too big, but you can switch to another space from the picker whenever the current one is clear.

Use this prompt in General Input: https://www.generalinput.com/prompts/assign-owners-to-stale-confluence-pages-space-by-space