# Track who has read every onboarding page in Confluence

> People Ops sees every new starter's reading progress on one screen, and each new hire gets their own role based list they tick off as they go.

- Workflow type: app
- Services: Confluence, BambooHR, Slack Bot
- Categories: HR & People
- Published: 2026-08-17

## What it does

- Lists everyone who joined in the last 90 days with their team, job title, how much of their required reading is finished, and how long they have been stuck
- Builds each reading list from the wiki you already have, choosing pages by label, by space, or by pulling in a whole onboarding section at once
- Gives every new starter their own ordered checklist, with each page opening inside the app so nobody has to hop back to the wiki
- Records a confirmation the moment someone presses acknowledge, and leaves a matching note on the wiki page so the trail lives in both places
- Lets People Ops send a private Slack nudge to anyone who has stalled, without leaving the screen

## What you'll need

- A Confluence account with your onboarding pages already written
- A BambooHR account you can read the employee directory from
- A Slack workspace where a bot can send direct messages
- A way to point at your onboarding pages in Confluence, such as a shared label, a dedicated space, or one parent page they all sit under

## Prompt

Build me an onboarding progress app that two different audiences open: People Ops, who need to see where every recent new starter is in their required reading, and the new starters themselves, who need their own checklist. It runs on Confluence for the content, BambooHR for who the new starters are, and Slack Bot for nudges. Which view someone lands on depends on who is signed in, so be explicit about that split when you build it.

Admin view, for People Ops. One row per person who started in the last 90 days. Get the cohort from BambooHR with Get Employee Directory and filter on hire date, then call Get Employee for each person to fill in department and job title. Each row shows name, department, job title, start date, a completion bar of acknowledged pages over total pages on that person's role based reading list, and how long they have been stalled, measured as days since their most recent acknowledgement. Let People Ops sort by most stalled and filter by department or role, and let them click into any row to see that person's list item by item with the acknowledged ones marked.

Personal view, for a new hire. Only their own reading list, in the order they should work through it, with no cohort data and no other person's progress anywhere on the screen. Each item is a row with the page title and its status. Expanding an item loads the page body inline with Get Page by ID requesting the storage body format, so the person reads the actual content without bouncing out to the wiki.

Reading list setup. Give People Ops a config screen where they define one reading list per role. A list can be assembled from any mix of three sources: Search Content (CQL) to select pages by label and space, Get Pages in Space to take everything in a space, and Get Descendant Pages against a parent page to pull in a whole onboarding tree at once. Save the resolved, ordered set of page ids per role, and let People Ops re-resolve a list so newly added wiki pages get picked up. Lists are role based by design, so an engineer and a salesperson must be able to end up with different required reading drawn from the same wiki.

Acknowledging a page. This has to be an explicit button the new hire presses on each item, never something inferred from them opening or scrolling the page. Confluence exposes no content analytics operation, so there is no way to see who viewed a page and read tracking cannot be inferred. Do not model progress on wiki checkboxes or inline tasks either. When the button is pressed, do two things: record the acknowledgement in the app's own storage as person, page id and timestamp, which is the source of truth for every completion bar and stalled count, and write a footer comment on that page with Create Footer Comment naming who acknowledged it and when, so there is a visible trace inside Confluence for anyone reading the wiki.

Asking a question. On any item the new hire can type a question, which posts to the same page with Create Footer Comment, as a reply to their acknowledgement comment where one already exists, so the conversation stays attached to the page it is about. Show the existing footer comments on each item using Get Footer Comments for Page so the new hire can see what has already been asked and answered.

Nudging. From the admin view, People Ops can press nudge on any stalled row. Resolve that person's Slack account from their BambooHR work email with Look Up User by Email, open a direct message with Open a Conversation, and send it with Send a Message. The message should name what is still outstanding rather than saying something generic, and link back to their list. Record when each person was last nudged and show it on the row so nobody gets pinged twice in the same day.

The app stores acknowledgements, questions asked, nudge history, and the role to reading list config. Enforce that a new starter can only ever reach their own list and never the cohort dashboard or another person's progress.

## How to customize

- Change the 90 day window that decides who counts as a new starter
- Set which pages each role reads, so engineers and salespeople get different lists off the same wiki
- Decide how many days without progress counts as stalled, and what the nudge message says

## FAQ

### How does the app know someone has actually read a page?

Because they press an acknowledge button. Confluence does not report who viewed a page, so a deliberate confirmation is the only honest signal. It is also a stronger record than a page view, since someone opening a tab is not the same as someone confirming they read the policy.

### Can different roles get different reading lists?

Yes, and that is the point. You map each role to its own set of pages, so a new engineer and a new salesperson see different required reading pulled from the same wiki.

### Will new hires see everyone else's progress?

No. A new starter only ever sees their own list, in order. The full cohort view with completion bars and stalled days is for People Ops.

### Does anything get written back into Confluence?

Yes. Every acknowledgement posts a comment on the page it belongs to, so the trace is visible to anyone reading the wiki. Questions a new hire asks post to that same thread.

### Do we have to restructure our wiki before this works?

No. It works with the pages you already have, as long as you can point to them by label, by space, or by a parent onboarding page whose children should all be included.

Use this prompt in General Input: https://www.generalinput.com/prompts/track-who-has-read-every-onboarding-page-in-confluence