keelapps

keelapps/Evergreen/Documentation

Evergreen for Confluence — documentation

Evergreen gives every Confluence page a freshness status — Fresh, Aging or Stale — based on when it was last edited and when someone last confirmed it was still correct. Confirming takes one click and never modifies the page. That is the whole product: no archiving, no approval workflow, no email.

Evergreen is built on Atlassian Forge and declares no external network access — no data leaves Atlassian's infrastructure, so there is nothing extra for a vendor security review to look at.

Getting started

  1. Install Evergreen from the Atlassian Marketplace.
  2. Accept the defaults: pages turn Aging after 90 days and Stale after 180. Site admins can change both under Confluence administration → Evergreen.
  3. The nightly scan indexes every team space. To see results immediately, open Space settings → Evergreen and hit Rebuild from scratch, or trigger every space at once from the admin page.
  4. From then on, every page shows its status in the byline, and each space's dashboard lists what needs attention.

The freshness model

One rule decides everything:

Age of last activityStatus
Less than the aging thresholdFresh
Between the two thresholdsAging
Past the stale thresholdStale

“Last activity” is whichever is more recent: the page's last edit, or the last time someone hit Mark as fresh. A confirmation counts as activity — that is what lets a page stay Fresh for years without anyone touching its content.

A page whose edit date Confluence will not reveal is shown as Stale with an explicit “no edit date available” note — not silently hidden, and not presented as Fresh, because nobody has vouched for it.

Exempt is a fourth state, not a threshold: a page excluded by label, by space rule or individually still has its age computed and shown, but is left out of the stale list and the counts.

The page byline

Under every page title, Evergreen shows the status badge. Opening it reveals when the page was last confirmed and by whom, the thresholds in force, and three actions:

These actions are available to everyone who can view the page, deliberately: the person best placed to say “this is still correct” is often a reader, not an editor. Every confirmation is attributed by name and can be corrected by anyone else with one more click.

The space dashboard

Space settings → Evergreen, visible to space admins. Four tabs:

Bulk actions and the review list

Select pages in the “Needs attention” list and act on up to 200 at once:

Bulk actions run in the background; the dashboard reports progress, how many pages succeeded, and names the ones that failed. Selections beyond 200 pages are refused loudly, never silently truncated.

Thresholds and overrides

Three layers, most specific wins, each value inheritable separately:

LayerSet byWhere
Site defaults (90 / 180)Site adminsConfluence administration → Evergreen
Space overrideSpace adminsSpace settings → Evergreen → Settings
Page overrideAnyone who can view the pageThe page byline

A partial override that would flip the pair (aging ≥ stale) is clamped and reported rather than silently producing a status nobody can explain. Threshold changes take effect with Recalculate statuses — a local recomputation that makes no API calls at all.

Exclusions

Scanning

A nightly scan finds what changed in each space; a weekly full rebuild reconciles what an incremental scan cannot see (deleted pages, new restrictions). Long scans split themselves into resumable chunks, so a fifty-thousand-page space is simply a longer chain — and the dashboard keeps serving the previous scan's numbers until the new ones are complete. Statuses are recomputed locally after every scan, which is what keeps the API footprint small enough for large sites.

Restricted pages

Evergreen reads Confluence as itself, not as any user. A page restricted away from the app is invisible to it — such pages are excluded from all counts, and the dashboard states how many it found rather than quietly omitting them. The count is a floor: Confluence answers identically for a deleted page and a restricted one in most cases, so Evergreen only claims what it can prove.

Administration

Confluence administration → Evergreen, visible to site admins: site-default thresholds, the site-wide exempt label list, excluded space keys, the blog-post switch, and Rescan every space now. Pages that go stale are listed on each space dashboard's “Newly stale” section — Confluence exposes no API for apps to send in-product notifications, and Evergreen sends no email, ever.

Permissions the app requests

ScopeWhy
read:page:confluencelist pages per space; page titles, versions and owners
read:space:confluenceenumerate spaces for the nightly scan
read:label:confluenceresolve exempt labels to the pages carrying them
read:content.property:confluenceread each page's confirmation record
write:content.property:confluencewrite who confirmed and when
write:page:confluencerequired by Confluence's v2 API to create or update a content property — the app never writes page content, and a page's version history proves it
read:user:confluenceshow “Confirmed by Jane Doe” instead of a bare account id
storage:appthe page index, thresholds and scan state, in Atlassian-hosted storage

There is no permissions.external block: the app cannot make an outbound call even if it tried to, which Atlassian enforces at the platform level.

Not in this release

Support

Questions, bug reports and feature requests: raise a support request. Security issues: report privately.