Skip to main content

How Goal Pace Works

Pulse doesn't just compare your current number to the target — that would punish you on day 2 of the month. Instead it measures pace: are you on a trajectory to hit the target by the end of the period? This page explains exactly how that judgment is made.


The Three Numbers Behind Every Goal​

For most goals, Pulse tracks three values at every point in the period:

ValueWhat it meansHow it's figured
Actual to dateWhere you really are right nowYour real number from the analytics data, for the goal's metric and scope
Expected to dateWhere you should be by today, at a steady pacetarget × pace fraction
Projected end valueWhere you'll finish if today's pace holdsPrefers your remaining booked schedule; falls back to actual to date ÷ pace fraction when there's nothing left booked to look at

Pace % shown on a card is actual to date ÷ expected to date. Above 100% means you're ahead of a steady pace; below means behind.

note

Pulse uses schedule-aware pace, not a flat calendar fraction. The "pace fraction" above is how much of your booked schedule for the period has come due so far — not how many calendar days have elapsed. A goal scoped to a team that's fully booked through the 10th but has nothing on the books for the 20th–25th paces against the work that's actually due, not an even 1/30th-per-day slice. Metrics with no bookable schedule (Leads, Staff Count, Quotes Booked, and similar) fall back to a Monday–Saturday working-day fraction instead. Target setup can still use seasonal history to suggest a target, but pace itself is always measured against the schedule, not assumed evenly.

Not every metric projects the same way — see Different Metrics Project Differently below before reading a projection as a straight-line extrapolation.


On Track, At Risk, Off Track​

The status badge is based on the projected end value (not just where you are today), compared to the target with a tolerance band — the at-risk band, which defaults to 10% and can be overridden per goal.

Pulse also knows each metric's direction — whether higher or lower is better — and judges accordingly.

For "higher is better" metrics (Revenue, Completed Jobs, Leads, …):

StatusCondition
On TrackProjected end ≥ target
At RiskProjected end is below target but still within the band (≥ target − 10%)
Off TrackProjected end is more than the band below target

For "lower is better" metrics (Payroll % to Revenue, Cancelled Jobs, Lost Customers, …):

StatusCondition
On TrackProjected end ≤ target
At RiskProjected end is above target but within the band (≤ target + 10%)
Off TrackProjected end is more than the band above target

No Data appears when pace cannot show a calculated snapshot. The card explains the reason: the goal has not been computed yet, the selected scope has no matching source rows, the metric cannot be computed from the available values, or the analytics source is temporarily unavailable.

Too Early appears at the very start of a period, before the first scheduled working day has finished. Projecting a full period from a few hours of data is unreliable, so Pulse shows Too Early instead of a status and holds off on At Risk / Off Track alerts until there's enough of the period behind you to trust the number. The progress bar for actual-to-date still shows — only the projection and status are held back.

Worked example — Revenue (higher is better)​

  • Target: $30,000 for the month, at-risk band 10%.
  • It's the 15th (≈ 50% through the month) and you've booked $13,000.
  • Expected to date = 30,000 × 0.5 = $15,000 → you're behind a steady pace (Pace % ≈ 87%).
  • Projected end = 13,000 ÷ 0.5 = $26,000.
  • $26,000 is below $30,000 but above $27,000 (target − 10%)? No — $26,000 is below $27,000, so the goal is Off Track. Lift the daily pace and the projection (and status) recover.

This example uses the extrapolation fallback (no remaining bookings for Pulse to look at). If this team had $10,000 in booked-but-unworked jobs left on the schedule for the rest of the month, Pulse would project $13,000 + $10,000 = $23,000 instead of extrapolating — the known remaining schedule wins over a guess whenever it's available.

Worked example — Payroll % to Revenue (lower is better)​

  • Target: 38%, band 10%.
  • Projected end = 40%. The "at-risk ceiling" is 38% + 10% = 41.8%.
  • 40% is above target but below 41.8% → At Risk. A small correction keeps it from going Off Track.

This is a rate metric — see below for why its projection is just today's current value rather than an extrapolation.


Different Metrics Project Differently​

The Revenue example above extrapolates: Pulse takes what's accrued so far and projects it forward. That works for metrics that build up over the period (Revenue, Completed Jobs, Leads, and similar). It does not make sense for every metric, so Pulse classifies each metric into one of four projection styles:

StyleExamplesHow "Projected" is figured
Builds up over the periodRevenue, Completed Jobs, Leads, Booked RevenueYour remaining booked schedule added to actual-to-date (falling back to a straight extrapolation when there's nothing left booked to look at)
A rate or averagePayroll % to Revenue, Efficiency %, Revenue per Hour, Avg Revenue per JobToday's current value — a rate that's 40% on day 5 isn't "on pace to be 800%" by day-end, so no extrapolation is applied
A point-in-time countStaff Count, Total Customers, Recurring Service SetsToday's current value — a headcount or backlog doesn't accumulate the way revenue does
A full-period forecastScheduled Jobs, Scheduled Revenue, Projected RevenueThe value already reflects the whole period, so it's shown as-is and isn't held back by the Too Early grace window

For rate, count, and forecast-style metrics, the pace card shows Current value (or Full-period forecast) instead of Projected, and hides the "% of pace" line — a percentage of pace is meaningless for a number that doesn't accumulate.


When Pace Is Calculated​

  • After creation: Pulse detects active goals without progress and calculates them from live operational SQL, normally within a few seconds.
  • Nightly: Pulse snapshots every active goal's pace once a day. Each snapshot becomes a point on the goal's Trend chart.
  • On demand: an administrator can click Refresh pace on the Goals page to force an early full refresh before a review.

While the first calculation runs, the goal shows Calculating… and the page checks for the result automatically. A real Actual to date of 0 is still a calculated value, not No Data.


Where the Numbers Come From​

A goal's actual to date is calculated from live operational SQL using the accepted report formulas and the goal's period and scope. Results are stored as progress points so dashboards load quickly and the Trend chart retains history.

If the analytics source cannot be reached during a snapshot, Pulse records the progress as No Data with a calculation-unavailable explanation. It does not treat the missing source as 0, and it does not create At Risk or Off Track alerts from unavailable data.

Your goal's scope (branches, scope groups, scopes, and service frequency) filters that data:

  • Branches → limits to the selected branches' results.
  • Scope groups / scopes → limits to those services (a whole group, or specific scopes within selected groups).
  • Service frequency → limits to recurring vs. one-time cadences (Every Week, Every Two Weeks, …, One-Time, On Demand).

Leaving a dimension unselected means "all" for that dimension.


At-Risk Alerts and the Weekly Digest​

Goals are designed to catch problems early, not just display them:

  • Alerts — when a goal's status changes to At Risk or Off Track, Pulse records an alert so the slip is visible rather than buried in a grid.
  • Weekly digest — Pulse summarizes goal pace on a regular cadence so leaders and owners get a recurring pulse-check without opening the app.

Assigning an Owner to a goal (see Creating Goals) gives each alert a clear point of accountability.


The Goal Metric Catalog​

Goals can target a wide range of metrics. The exact list in the Metric picker depends on which reporting features your company has enabled, but goal-eligible metrics include:

Revenue & profitability : Revenue · Recurring Revenue · Avg Revenue per Job · Revenue per Hour · Payroll % to Revenue · Payroll Total · Revenue per Week Change

Jobs & operations : Completed Jobs · Cancelled Jobs · One-Time Jobs · Skipped Jobs · Efficiency % · Allowed Hours

Sales & pipeline : Leads · Quotes Booked · Booked Revenue · Booked Recurring · Booked One-Time · Recurring Sales · Recurring Sales Revenue · One-Time Sales · Losses

Customers & retention : Net Recurring Clients · Recurring Customers · Lost Customers · Lost Homes · Lost Recurring Revenue · Recurring Service Sets

Quality (scorecards) : Avg Scorecard Score · Scorecards Sent · Scorecards Received

Staffing : Staff Count · Staff Hired · Staff Lost

Invoicing : Invoices Created · Invoices Charged · Invoices Complete

note

Each metric carries its own direction (higher- or lower-is-better) and the periods and scope levels it supports — the goal builder only offers combinations Pulse can actually compute, so you can't create a goal that won't track.

Target suggestions use the same analytics source as goal progress. If the source has no matching rows or cannot calculate a comparison value, Pulse reports that method as unavailable instead of treating the missing value as 0.


Frequently Asked Questions​

Why is my brand-new goal "Off Track" already?​

It shouldn't be — a brand-new goal shows Too Early until its first scheduled working day has finished, specifically so a single slow morning can't tank the projection on day one. If a goal skips straight to Off Track, check that its scope actually has scheduled work in the period; a goal with nothing booked has nothing for the grace window to wait on. Once the first working day completes, watch the Trend chart — the projection becomes more reliable as more of the period's schedule plays out.

Can I make a goal less twitchy about being "At Risk"?​

Yes — set a larger At-risk threshold override when you create or edit the goal (for example, 0.15 for a 15% band). A smaller value makes it more sensitive.

My goal and my report show different numbers​

They shouldn't — goals read the same analytics data. Confirm the goal's scope (branches, scope groups, scopes, frequency) and period match the report's filters exactly.