Retention and At-Risk

Read V2's Retention card on Reports: the four account-health buckets, lifetime value, open renewal quotes, and overdue balance.

IntermediateownermanagerUpdated 2026-09-24

Retention and At-Risk

Open Business > Reports, then the Retention card, or go straight to /reports/retention. It has its own page and report-tab entry, and turns client history into an account-health view so the office can see which customers are active, drifting, dormant, or new. When a location is selected, the report includes active clients linked to that location either through a client-location assignment or a property there; clients without a property are included when they have the location assignment.

Screenshot placeholder
Retention card showing the four health-bucket counts and the account table

Health States

Every eligible active client is grouped into one of four buckets, based on location-local calendar dates since their last completed job:

  • Active: under 183 days (about 6 months) since the last completed job
  • At risk: 183 to 365 days since the last completed job
  • Dormant: 366 days or more since the last completed job
  • New: no completed job yet

The report uses the selected location's timezone. When viewing all locations, it uses the organization's default location timezone, then falls back to the first location's timezone or UTC. This is one implementation with one set of day thresholds; V1 had a SQL version and a TypeScript version of this same logic that disagreed with each other right at the boundaries.

The client table below the bucket counts lists each client's health bucket, days since their last completed job, lifetime value, open renewal quotes, and overdue balance, sorted at-risk and dormant first, then by overdue balance. It is not filtered by the page's date range; it is always an as-of-now snapshot of your client base, the same convention the AR aging card uses.


Lifetime Value, Open Renewal Quotes, and Overdue Balance

  • Lifetime value is the client's all-time net collected cash (gross

payments minus refunds), not V1's completed-job-total definition. Cash is the more honest number: a completed job with an unpaid or refunded balance is not really lifetime value yet.

  • Open renewal quotes counts the client's draft or sent estimates created

in the selected date range. This is windowed by the range on purpose, even though the rest of the card is an as-of-now snapshot; V1 silently ignored the date picker here and always counted every open quote ever.

  • Overdue balance is the client's overdue invoice balance as of right

now, the same as-of-now convention the AR aging card uses, labeled the same way.


Generate Quote Action

An active standalone-client or V2 child-service-site row includes a Generate Quote action. Clicking it jumps into the estimate flow with that work-owning client already attached. A legacy V1 account keeps its account-level shortcut, but the estimate picker requires you to select the nested customer/contact that holds the service property; that nested record owns the quote.

A V2 company portfolio row is a rollup and does not generate a parent-owned quote. Open the portfolio profile, select the child service site that will own the work, and start the quote there. If no child site is available in your location scope, ask an administrator to confirm your access rather than using the portfolio parent as the customer.

Use this when:

  • A repeat customer has gone quiet
  • An at-risk account needs a renewal quote
  • A dormant client is worth reactivating

Best Uses

  • Review the report weekly for churn prevention
  • Sort your call list around overdue balance plus days since last job
  • Pair it with Lead Source Performance when you want to compare acquisition source results with long-term customer value
  • Export the card (retention) for the full client list past what fits on

screen; see Reporting Overview

Was this article helpful?

Still need help? Contact support