team healthemployee engagementretrospectives

How to Run an Effective Team Health Check (Template & Guide)

The first round got 90% participation and a sharp results deck. Round two landed at 60%. By round three, 40% of the team bothered, and the survey was quietly retired. Ask the team what happened and they'll tell you: nothing changed after round one, and everyone noticed.

Team health checks die of three causes: anonymity nobody quite believes, no steady cadence, and no visible action. The questionnaire, the part most teams agonize over, matters least. Get the other three right and mediocre questions still earn honest answers; get them wrong and the best question set joins the graveyard.

What a health check is (and isn't)

A team health check is a short, repeated survey: a handful of named dimensions, rated by everyone on a simple scale, then read only in aggregate. The format descends from the squad health check Spotify made famous in the mid-2010s; the point survives every variation: it's a pulse, not a performance review.

The team level is where the signal lives. People rarely say "I'm burning out" in a 1:1. It shows up sideways: delivery slips, standups get quieter, absence creeps up, easy to miss until they're a crisis. A recurring, aggregated pulse turns that drift into a number you can watch, early enough to act.

Pick fewer dimensions than you think

Five to eight is plenty. Mix delivery-side dimensions (pace, quality) with human ones (support, learning), because a team can ship beautifully while quietly falling apart. Ready-made sets are a fine start; Pulse 5's five (Workload, Energy, Clarity, Support, Satisfaction) cover most teams.

Then leave them alone. The value of a health check is the trend, and the trend only exists if run four asks what run one asked. Swap "Clarity" for "Focus" between quarters and you've reset your history to zero: the answers no longer compare. In SquadBear this is enforced: a model's dimension set locks once any check uses it, and changing what a team rates means creating a new model.

Anonymity people believe

The first cause of death is answers people don't trust. The test isn't what the settings page claims but what your most skeptical senior engineer believes, and they've seen "anonymous" surveys a manager could filter to a slice of two.

Two properties fix it. First, aggregation without exception: nobody, including admins, ever sees another person's individual rating, only their own answers and the team-level result. Second, destruction over concealment: closing an anonymous run deletes the link between people and their answers from the database rather than hiding it behind a permission. That's how SquadBear's Anonymous and Alias modes work, and it's the difference between "we promise not to look" and "there is nothing to look at."

One honest caveat: no mechanism makes a three-person team's aggregate unguessable. Anonymity protects who said what, not how obvious the answer is. On a tiny team, say so before the first run.

Cadence: the trend is the product

A single reading tells you almost nothing: a 3.4 on Workload could be fine or alarming depending on the team, because every team calibrates the scale differently.

So never compare teams against each other: league tables mostly measure who grades generously. Compare each team against its own history, and watch movement, not levels: a sharp drop is information; a low-but-stable score is a conversation.

And run it often enough for a trend to exist: monthly or quarterly, not annually, which gives you one data point and eleven months of lag. Participation rides the same trend: every run shows a submitted/invited count, and slipping turnout usually precedes slipping scores. A missing data point is itself a signal.

One action per run, checked at the next one

This is what keeps rounds four through forty alive. Every run should end with at most one or two improvement actions, each with an owner and a due date, visible to the whole team, and reviewed at the start of the next run. Not a themes deck. Not "we hear you." One thing that will change, and proof next month that it did.

Resist fixing everything at once: a list of six actions is how none of them get done.

What that looks like in practice

Northlake's Marta runs a Pulse 5 check for her five-person Platform team, anonymous. Four of five submit within two days. Workload averages 2.2, the lowest dimension, so she points the discussion at it, closes the run, and reads the comment summary: repeated mentions of on-call load. One action comes out. "Rebalance Platform's on-call rotation," owner Marta, due in a week.

Next run, Workload climbs to 3.0. Nobody is alerted; a recovery needs no urgency. The run after slides to 2.4, a 0.6-point drop on the 1–5 scale, and every facilitator is notified when it closes. Before filing a fresh action, Marta checks for a similar one from the past six months. The rotation fix got done, so whatever is dragging Workload now is something new.

Where this lives in SquadBear

Health checks sit under Team Health → Health checks: pick a team, a model (Team Health 11, Pulse 5, Engineering Health 8 or eNPS, plus custom models at Team Health → Health settings) and an anonymity mode, and "Create & open" invites everyone. Participants rate each dimension with an optional comment and an up/flat/down "felt direction" vote, and a facilitator can point the room at one dimension with a shared countdown timer. Closing is a separate, confirmed step because it permanently anonymizes responses; a closed run shows per-dimension averages, a distribution chart, a radar view and an AI summary of comments.

Team Health → Trends lines a team's closed runs up side by side, one row per dimension, visible to managers and admins, with the drop alert wired in at 15% of the scale range. Team Health → Actions tracks every improvement action with owner, status and an "Overdue only" filter, checks new ones against the last 180 days for near-duplicates, and lets any member of the team tick one done. eNPS ships as a built-in one-question model when the board wants one comparable number.

With an AI assistant connected, the whole loop runs from chat:

"Open this month's health check for Platform, and when it closes, summarize it and draft one improvement action from the lowest-trending dimension."

"Before I file a new action for Platform's Workload, check for similar existing actions, and tell me whether the dip lines up with rising absence."

The second prompt has no page of its own: the agent walks the health trend against approved leave and flags a dimension falling while absence rises. Correlation, not causation, but a useful nudge.

Start free and run your first check this week, or ask the demo to open one on the sample team.

Related reading: what is eNPS?, and burnout tracking without the Big Brother on why this beats monitoring software.