top of page

Risk Register Template for Software Projects

Shawn West
Jul 16
6 min read

Updated: 2 days ago

Almost every risk register I've inherited had the same disease: forty rows, every one marked Open, nothing touched in two months, and the risk that actually sank the project nowhere on the list. That's the trap worth saying out loud — an unmaintained register is worse than no register, because it launders "we stopped thinking about risk" into "we have a process." A stale spreadsheet gives everyone permission to feel covered.


A register that earns its place does the opposite. It names the handful of things that could genuinely derail the project — with a real owner and a real mitigation on each, not "monitor closely" — and it gets pruned every week. The artifact is simple. The discipline is keeping it short and alive.


The Template


# Risk Register: [Project]
Last updated: YYYY-MM-DD
Owner: [Name]

| ID | Risk | Category | Likelihood | Impact | Score | Status | Mitigation | Owner | Updated |
|----|------|----------|------------|--------|-------|--------|------------|-------|---------|
| R1 | [Specific risk] | [Type] | H/M/L | H/M/L | [calc] | Open | [Action] | [Name] | [Date] |

A table. Each row is a risk. The columns are:


  • ID: stable identifier (R1, R2, ...)

  • Risk: specific description, not abstract

  • Category: technical, schedule, resource, external, etc.

  • Likelihood: how likely it is to happen

  • Impact: how bad it would be if it did

  • Score: rough product of likelihood and impact (helps prioritize)

  • Status: Open, Mitigated, Closed, Realized

  • Mitigation: what we're doing about it

  • Owner: specific person responsible

  • Updated: last time someone touched this row


Risk Description: Specific, Not Abstract


The single biggest predictor of a useful risk entry: specificity.


Bad: "Schedule risk."


Good: "Vendor SSO integration may take 2-3 weeks longer than scoped because vendor API documentation is incomplete."


Specific risks are actionable. Abstract risks are anxieties.


The test: can a reader who doesn't know the project understand what could go wrong and roughly how bad it is?


Categories


Common categories for software projects:


  • Technical: implementation challenges, integration risks, performance unknowns

  • Schedule: dependencies, sequence risks, capacity issues

  • Resource: headcount, expertise, availability

  • External: vendor, market, regulatory

  • Quality: test coverage gaps, complex flows, edge cases

  • Operational: runbook gaps, on-call readiness, infrastructure


Pick the smallest set of categories that lets you group risks meaningfully. Five to seven is workable. Twenty is unwieldy.


Likelihood and Impact


Three buckets for each: High, Medium, Low.


Likelihood:


  • High: more likely than not to happen

  • Medium: plausible; specific concern

  • Low: possible but unusual


Impact:


  • High: significant impact on goals, timeline, or quality

  • Medium: noticeable impact; recoverable

  • Low: small impact; absorbable


Resist the urge to add a fourth bucket. The precision isn't earned by guesswork.


Score


Score = Likelihood × Impact, using numeric values (H=3, M=2, L=1).


So:


  • HH = 9 (top priority)

  • HM or MH = 6

  • HL, ML, or MM = 4 or 3

  • LL = 1 (bottom priority)


Score is a focusing tool, not a number to take precisely. The point is differentiating "we should be doing something about this" from "we should be aware of this."


Status Lifecycle


A risk moves through states:


  • Open: active concern, mitigation in progress

  • Mitigated: mitigation in place, residual risk lower

  • Closed: no longer a concern (passed, prevented, no longer relevant)

  • Realized: the bad thing happened; it's now an issue, not a risk


Status changes are how the register stays useful. A register that's all "Open" for six months is a register no one's maintaining.


Mitigation Strategies


Five basic strategies for any risk:


  • Avoid: restructure the project to make the risk impossible

  • Reduce: lower the likelihood or impact

  • Transfer: make it someone else's problem (vendor, insurance, contract)

  • Accept: acknowledge but don't act (for low-score risks or when mitigation costs more than the risk)

  • Monitor: watch for it; act if it materializes


Most risks get Reduce or Monitor. Avoid is powerful but often impractical. Accept is honest — not every risk warrants action.


The Owner Field


Each risk has a single named owner. The owner:


  • Is responsible for the mitigation

  • Reports on status

  • Updates the register entry

  • Escalates if the risk worsens


Without owners, risks drift. The owner doesn't have to do all the mitigation work themselves; they're responsible for the work happening.


Cadence: Keeping It Alive


A risk register that's filled out at kickoff and never touched is theater.


Working cadence:


  • Weekly: lead reviews top-scoring risks, ensures mitigations are active

  • Bi-weekly: team reviews full register, adds new risks, closes obsolete ones

  • At milestones: broader review with stakeholders, including escalations

  • At incidents: retrospective adds risks that were missed before


If the register isn't reviewed regularly, it goes stale within weeks.


Adding New Risks


Risks emerge throughout the project. Adding them is normal.


Triggers for adding:


  • Something surprised the team this week

  • A new constraint appeared

  • A planned mitigation isn't working

  • A near-miss happened


The pattern: add the risk immediately when noticed, score it, assign an owner. Don't wait for the next scheduled review.


Common Failure Modes


The graveyard. Risks added once, never closed, never updated. Visit a 6-month-old register and most entries are stale.


The kitchen sink. Every possible concern listed. 80 risks; team can't focus on which ones matter.


The optimistic register. All risks marked Low/Low. Reality is more textured.


The owner-less risk. No specific person responsible. Risk drifts.


The unowned mitigation. Risk has owner, but "monitor closely" isn't a mitigation.


What to Avoid Putting in the Register


A few things that look like risks but aren't useful entries:


Generic worries. "Things might go wrong." Add specifics or skip.


Known issues. Things that are already happening are issues, not risks. Track separately.


Wishes. "We need more engineers." Capture as a constraint or ask, not a risk.


Excuses. "Risks of insufficient stakeholder engagement." Read as: someone's about to ignore feedback.


A Worked Example


# Risk Register: Workspace Switching Project
Last updated: 2026-05-26
Owner: Sam (Eng Manager)

| ID | Risk | Category | L | I | Score | Status | Mitigation | Owner | Updated |
|----|------|----------|---|---|-------|--------|------------|-------|---------|
| R1 | Deep-link preservation may have edge cases (e.g., session-scoped URLs) | Technical | M | M | 4 | Open | Spike in Week 1 to enumerate cases | Pat | 05-26 |
| R2 | Okta vendor API rate-limits during testing | External | M | H | 6 | Open | Vendor support engaged; fallback to mock for parallel work | Sam | 05-26 |
| R3 | Browser back-button behavior may confuse users | Quality | M | M | 4 | Open | User testing in Week 7 | Riley | 05-26 |
| R4 | Pat on-call rotation Week 6 reduces capacity | Resource | H | L | 3 | Mitigated | Confirmed coverage; alex covering for Week 6 | Sam | 05-20 |
| R5 | Permissions edge case (user loses access mid-session) | Technical | L | H | 3 | Open | Spike planned for Week 3 | Pat | 05-26 |
| R6 | Analytics event schema may conflict with existing | Technical | L | M | 2 | Closed | Reviewed and aligned with analytics team | Jordan | 05-15 |

Six risks. Some open, one mitigated, one closed. Each has an owner. Updates are tracked. A reader scanning the list can see the project's top risks and who's handling them.


Sharing the Register


The risk register should be visible to:


  • The project team

  • The project sponsor

  • Adjacent teams whose work depends on or affects this project


Sharing serves two purposes: visibility, and accountability. A register reviewed by stakeholders gets maintained more honestly than one only the team sees.


For some risks (sensitive personnel, vendor confidentiality), restrict to a smaller audience. The default should be broad visibility.


Register Templates by Project Size


Small project (< 1 month): 3-5 risks total. Inline in the project plan.


Medium project (1-3 months): 5-15 risks. Standalone document, reviewed bi-weekly.


Large project (3+ months): 10-30 active risks. Standalone document, reviewed weekly, with escalation paths for high-score risks.


Program of projects: rolled-up register across sub-projects, with cross-cutting risks at the program level.


Match the formality to the project scale.


A risk register works best next to an agreed scope, and the Project Charter Template for Technical Initiatives is where that scope gets written down.


Key Takeaway


A risk register lists specific risks with likelihood, impact, mitigation, and owner. Score = likelihood × impact, used to focus attention. Update regularly — weekly for top risks, bi-weekly for the full register. Close risks as they pass or get mitigated; don't accumulate. Each risk has a single named owner. Avoid generic worries; capture specific risks that someone can act on. The register exists to focus attention on what could derail the project, not to document every possible concern.

bottom of page