keelapps/Signoff/Documentation
Documentation
Signoff adds one concept to Confluence: a page-version approval. Everything else — policies, expiry, the inbox, the audit trail — exists to create those approvals honestly and keep them honest afterwards.
Requesting sign-off
Open the page and click the Signoff badge in the byline, then Request approval. The form offers:
- Approvers — pre-filled from the space's policy when one applies; otherwise pick anyone. You cannot be the only approver of your own request.
- Mode — any one may approve (first approval settles it) or all must approve (everyone signs; one rejection vetoes immediately).
- Note — an optional message carried to the approvers.
The request pins the page's current version number. That number is what the eventual approval covers — not “the page”, but “the page as it stood”.
Deciding
Approvers act from the page byline or the approvals inbox: Approve or Request changes, optionally with a comment. Only listed approvers can decide, each decides once, and the requester may cancel an open request at any time. Every action is recorded in the page's history.
The status ladder
The badge is computed fresh on every render by comparing the stored approval with the live page — status is never written down, so it can never go stale:
| Badge | Meaning |
|---|---|
| Not submitted | No approval has ever been requested. |
| In review | A request is open and waiting on approvers. |
| Approved · vN | The live version equals the approved version. |
| Approved · page changed | The page has moved past the approved version. |
| Re-approval due | The approval's validity has run out. |
| Changes requested | The last request was declined. |
Editing a page never deletes an approval record — the badge simply reports that approval is behind, and offers re-approval in one click.
Policies
A policy names approvers, a mode, and how long an approval stays valid. Site admins define policies once under Settings → Signoff; space admins bind their space to one under Space settings → Signoff — or do nothing and inherit the site default. Binding is a pointer, never a copy: editing a policy changes every bound space at once.
An enforced policy locks approvers and mode — requesters cannot change them. Use it for the spaces where the approver list is the point.
Expiry and re-approval
A policy can give approvals a validity of 3, 6, 12 or 24 months. Expiry is part of the computed status, so it takes effect the moment the clock passes — and a daily scan additionally maintains a site-wide “due for re-approval” list for admins, plus a personal slice in each signer's inbox.
The approvals inbox
Apps → Approvals shows three strictly personal lists: requests waiting on you (decide right there), requests you opened, and approvals you signed that have since expired. Site-wide views live with site admins, not here.
Notifications
When approval is requested or decided, Signoff posts a footer comment on the page @-mentioning the people who need to know. The mention is what reaches them — through Confluence's own bell and email, honouring each person's notification settings. The comment doubles as a visible approval trail on the page itself. Site admins can switch the comments off; the inbox then carries the load alone.
The audit export
Settings → Signoff → Audit export generates a CSV of every request, decision and cancellation across the site: timestamp, event, page, space, page version, actor, comment. Paste it into the auditor's spreadsheet and be done.
Permissions and scopes
The app requests four scopes, and the one write is deliberate:
read:page:confluence— page titles and version numbersread:user:confluence— display names behind account idswrite:comment:confluence— the notification comment, and nothing elsestorage:app— approval records, in Forge storage on your site
Signoff never edits page content, never creates page versions, never changes permissions, and declares no external network access.
Questions we expect
- Does approving lock the page?
- No. Signoff records truth; it does not restrict editing. If someone edits an approved page, the badge says so — which in practice is the enforcement most teams actually want.
- What happens if an approver leaves the company?
- Their name stays on past approvals (stored alongside the account id). Open requests they never decided can be cancelled by the requester and re-issued to someone else.
- Can I approve my own page?
- You can be an approver of your own request, but never the only one.
- Does it work with page restrictions?
- Yes. Signoff reads pages with its own app permission and stores only titles and version numbers; who can see the page itself remains entirely Confluence's decision.