Targets: set team goals and get notified when work slips
Last updated: November 2, 2026
Targets let a team agree on a few working norms, such as "PRs get a first review within 48 hours", and have Span watch them. Span shows whether each team is on track, lists the specific PRs or people that slipped (lapses), and can nudge the PR author or reviewer in Slack.
Why it matters
For managers: you stop policing dashboards. Span checks the norm for you and tells you when it slips.
For teams: the norm is written down, visible to everyone on the team, and tied to the same numbers as your reports.
For engineering leaders: the Heatmap shows which teams meet which norms, so you can see where help is needed without ranking individuals.
After a fix: once you improve something, such as review speed, a target keeps it from drifting back.
How it works
Where to find Targets
Targets in the sidebar opens three tabs: Lapses (the page the sidebar link opens), Manage (every target by category, with each team's status and a Set Target link), and Heatmap (teams against targets, colored by status). The Set Target button sits at the top right.
A team's page has a Targets tab for teams that have no sub-teams. Targets apply only to those teams. Parent teams appear in the team picker so you can find the teams below them.
What a target is
Each target wraps one Span metric, a direction (keep it below or above), and a threshold you set. Span computes the metric for the team over a rolling 7-day window, with the same calculation your reports use, and compares it with the threshold.
Target | What it measures | Default threshold | Aggregation | Lapse it can raise | Availability |
|---|---|---|---|---|---|
Time to First Review (Code review) | Time from PR opened to its first review | 48 hours or less | Rolling 7-day P75 | PRs awaiting first review, with an optional Slack message to the PR author | All organizations |
Time to Merge (Code review) | Time from a PR's first review to merge | 72 hours or less | Rolling 7-day P75 | PRs in review, with optional Slack messages to the PR author and PR reviewers | All organizations |
Code Review Insights (Code review) | Themes in the review feedback the team gives and receives | No threshold | None | None. It produces review theme signals only. | All organizations |
PR Size (Code delivery) | Lines changed per PR | 1,000 lines or less | Rolling 7-day P75 | Large PR size | All organizations |
PRs with Tests (Code delivery) | Share of merged PRs that touch a test file | None; you set it (higher is better) | Rolling 7-day average | PRs without tests | Needs test file patterns in Settings → Metrics (% PRs With Tests Metric) |
PR Revert Rate (Code delivery) | Reverted PRs as a share of merged PRs | None; you set it (lower is better) | Rolling 7-day P75 | PRs reverted | If your organization has it. Span turns it on for your organization on request. |
Investment Mix (Code delivery) | Share of effort in investment categories you choose | None; you set it and whether higher investment is positive or negative | Rolling 7-day average | Investment mix off target | If your organization has Labeled Investment with at least one focus area |
Meeting Time (Meetings) | Meeting hours, individual contributors only | 15 hours or less | Rolling 7-day average | High meeting time | All organizations |
Focus Time (Meetings) | Focus hours, individual contributors only | None; you set it (higher is better) | Rolling 7-day average | Low focus time | All organizations |
PR Link Rate (Issue Tracking) | Share of merged PRs linked to an issue | None; you set it (higher is better) | Rolling 7-day average | None. A sharp drop shows as a Low PR Link Rate signal. | Needs a version control integration and an issue tracker |
A target whose test file or integration requirement isn't met appears greyed out in the Set Target flow and can't be selected. Investment Mix can be selected, but you can configure it only when your organization has Labeled Investment with at least one focus area.
Statuses
Span gives each team one status per target. The warning band is 15% of the threshold, on the side that's still within target.
Ok: within target, outside the warning band.
Warning: close to target. The value is within target but inside the 15% band.
Off: past the threshold.
No data: no target is set, or there's no value for the period.
For a "lower is better" target the warning band starts at 85% of the threshold. For a "higher is better" target it ends at 115% of the threshold.
Lapses
A lapse is one PR or one person that broke a target. Span checks every team's targets for new lapses every 2 hours, so a lapse and its Slack message can appear up to 2 hours after the work crossed the line.
PRs awaiting first review (Time to First Review): a non-draft PR by a team member, marked ready for review in the last 2 weeks, that has waited longer than the threshold for its first review. The clock starts when the PR is marked ready for review, or when it was opened if it was never a draft. The lapse resolves when the PR gets its first review or merges.
PRs in review (Time to Merge): a non-draft PR first reviewed in the last 2 weeks that has stayed in review longer than the threshold. The lapse resolves when the PR merges.
Large PR size and PRs without tests: PRs merged in the past week that are larger than the threshold, or that have no test changes.
PRs reverted: PRs reverted in the past 7 days.
High meeting time and Low focus time: team members whose hours last week were past the threshold or inside the 15% warning band.
Investment mix off target: checked over a two-week period that ends at least four days before the check.
Lapses close on their own. A lapse resolves when its condition is met (for example, the PR gets reviewed), or when it stops showing up in Span's checks (for example, the PR is closed without merging). On the Lapses tab, pick a target to see its Active lapses and its Resolved lapses from the last 30 days.
Slack nudges
Two lapses can send a Slack message to the people involved, through Span's Slack app:
PRs awaiting first review: Slack notification: PR author.
PRs in review: Slack notification: PR author and Slack notification: PR reviewer.
Both are off by default. A message goes only to people who are members of the team that owns the target. Each person can turn off the messages they get in Settings → Personal → Notifications, under Slack Alerts. Other lapses appear in Span and in digests but don't send Slack messages.
Digests
Manager Target Digest: an email with your teams' target statuses and any lapses to look into. Turn it on in Settings → Personal → Notifications, under Email, and use Send to choose daily or weekly.
Team Slack digest: a message to a Slack channel with the team's actionable lapses and the status of each target. Set it up in Settings → Team Settings: choose the team, then under Slack Digest pick the Digest Slack Channel, turn on Team Slack digest, choose daily or weekly under Send, and click Save Changes. To use a private channel, invite the Span Slack bot to it first.
How to set or change a target
Go to Targets and click Set Target. From a team's Targets tab, the same button skips the team step.
Select Teams: pick one or more teams under "Which team would you like to set a target for?" and click Next.
Select Target Metric: pick a target from the grid, grouped by Code review, Code delivery, Meetings, and Issue Tracking. You can search by name. Click Next.
Configure: under Target, set the Target threshold with the slider or the number field. Span shows how many times the rolling 7-day value exceeded that threshold over the last 30 days, with a chart, so you can see how often the target would have slipped.
Under Lapses, leave on the lapses you want listed. They're on by default once a threshold is set. Turn on any Slack notification switches you want.
Click Set Target. If you turned on Slack notifications, confirm them in the Confirm New Slack Notifications dialog. If you changed a configuration other teams share, confirm the Update Configuration dialog.
To change or remove a target later, open it from the Manage tab or the team's Targets tab. Edit it and click Save, or click Remove target.
Who can do what
View Team Targets Status lets people see Targets for the teams it covers. By default, Team Members have it for their affiliated teams, Managers and Team Leads for all teams, and Owners and Admins for all teams.
Manage Team Targets shows the Set Target button and lets people set, change, and remove targets. It also includes Manage Team Digests. By default, Owners and Admins have it for all teams, and Managers have it for their affiliated teams. Team Leads and Team Members don't have it.
Affiliated teams means the teams a person is currently a member of in your main team hierarchy, plus every sub-team below them. Managing a person on another team doesn't make that team affiliated.
Team Settings needs Manage Team Settings for the team, which Owners and Admins have by default. The Slack Digest section there also needs Manage Team Digests or Manage Team Targets.
Things to know
Worked example: a team sets Time to First Review at 48 hours. The warning band is 15% of 48 hours, 7.2 hours, so the status is Ok at 40.8 hours or less, Warning from just above 40.8 hours up to 48 hours, and Off above 48 hours. If the team's rolling 7-day P75 is 44 hours, the status is Warning. Separately, a single PR that has waited 50 hours for its first review opens a lapse, and if Slack notification: PR author is on, its author gets a Slack message.
PR targets use P75. One stuck PR won't flip a team to Off, but a tail of slow PRs will.
Lapses and statuses measure different things. The status uses the team's rolling 7-day value. A PR lapse looks at one PR against the threshold, so a team can be Ok and still have open lapses.
Weekend exclusion applies to review timing. If your organization excludes weekends, the waiting time behind PRs awaiting first review and PRs in review skips weekends too.
Meeting Time and Focus Time count individual contributors only. Managers' calendars don't count toward these targets.
Start with one or two targets. Pick the norm the team most wants to fix, such as review speed, and add more once it holds.
Pair a target with a guardrail. A fast Time to First Review is less useful if reviews get shallow. Watch a second metric, such as PR Size or PRs with Tests, alongside it.
Agree on targets with the team. Set thresholds together and review the Lapses tab in a regular team meeting.
Don't use targets to judge individuals. Slack messages name specific PRs so people can act on them. Targets work best as team agreements, not as a scorecard for one person.
Related articles
Review Response Time (Average)
Find where pull requests get stuck, and keep them moving
Need help?
Contact your Span account team or reach out to support@span.app.