Blog · How-to guides · Software
Build reproducible product-user groups from signup dates and recorded usage. Compare their counts, subsequent retention and recurring revenue, with spreadsheet formulas and reconciliation checks.
User segmentation groups individual product users by lifecycle and observed usage, then compares what happens to those groups. Use a dated roster, explicit assignment rules and a later observation period so that the comparison can be reproduced. Keep the user count separate from the account revenue calculation when several people share a contract.
An account can renew while most of its users become inactive. It can also cancel while a small group still uses the product regularly. User groups help product, customer success and finance teams distinguish those situations without treating a payment as proof of engagement.
This is different from grouping companies by size, purchase frequency or margin. Use B2B customer segmentation from the ledger for the account-level question. The unit here is an individual product user, identified consistently across exports.
For this example, a US software company closes its baseline on June 30, 2026. June usage sets the groups; July activity measures subsequent retention. Include users created by the baseline date and keep that opening roster unchanged through the comparison. Exclude internal test users under a documented rule before counting anything.
Choose a qualifying activity that reflects the product's purpose. A completed business task may be more useful than a login. An active day means a calendar day with at least one qualifying event, after converting timestamps to the company's reporting time zone. Several events on the same day still represent one active day.
Bring a user roster containing user ID, account ID, signup date and eligibility status. Add a usage summary with qualifying active days per user for June, plus a July activity flag. Bring the billing export separately and document any allocation of account recurring revenue to users.
Do not join raw event rows directly to invoice lines. That can repeat an invoice for every event. First summarize activity to one row per user and period, then match those summaries to the unique user roster. Keep unmatched IDs in an exception list; do not quietly discard them.
Use these assignment rules in order:
These thresholds are illustrative business choices, not industry standards. A new user takes precedence over the usage groups, so every eligible user belongs to exactly one segment. If usage is missing, resolve it or retain an explicit unknown group before applying the inactive rule.
In Google Sheets, put signup in B, June active days in C and the segment in G. Enter this in G2 and fill down:
=IF(B2>=DATE(2026,6,1),"New",IF(C2>=10,"Engaged",IF(C2>0,"Light","Inactive")))
Save the assignment alongside the baseline date. This is a repeatable rule for supplied records, without assumptions about a person's motives. Behavioral segmentation covers the broader account-purchasing approach.
The small example below contains eight single-user paying accounts. That makes each user's assigned monthly recurring revenue, or MRR, equal to the account amount. In a multi-seat business, use a finance-approved allocation or keep revenue at the account level instead.
Columns A through G correspond to this table. July active is one if the user performed a qualifying activity during July and zero if none occurred in a complete July export. Monetary amounts are USD; MRR is a recurring run-rate measure, not recognized revenue for the month.
| User | Signup date | June active days | June MRR (USD) | July active | July MRR (USD) | Frozen segment |
|---|---|---|---|---|---|---|
| U1 | June 10, 2026 | 12 | 100 | 1 | 100 | New |
| U2 | June 20, 2026 | 3 | 100 | 1 | 100 | New |
| U3 | January 1, 2026 | 18 | 200 | 1 | 200 | Engaged |
| U4 | March 1, 2026 | 12 | 200 | 1 | 200 | Engaged |
| U5 | February 1, 2026 | 4 | 150 | 0 | 0 | Light |
| U6 | April 1, 2026 | 6 | 150 | 1 | 150 | Light |
| U7 | January 1, 2026 | 0 | 100 | 0 | 0 | Inactive |
| U8 | February 1, 2026 | 0 | 100 | 0 | 0 | Inactive |
| Total | 1,100 | 5 | 750 |
Put the four segment names in J2:J5. Count opening users with the COUNTIFS function, which counts records matching the supplied criteria:
=COUNTIFS($G$2:$G$9,J2)
Sum the July activity flags to count retained active users. SUMIFS sums the values whose rows meet the criteria, so the same pattern also totals each segment's MRR:
July active users: =SUMIFS($E$2:$E$9,$G$2:$G$9,J2)
June MRR: =SUMIFS($D$2:$D$9,$G$2:$G$9,J2)
July MRR: =SUMIFS($F$2:$F$9,$G$2:$G$9,J2)
Covirage is not affiliated with Google.
Subsequent active-user retention = July active users from the frozen segment / Opening users in that segment
Cohort MRR retention = July MRR from those same users / Their June MRR
The first measure describes continued activity among the opening users. It does not require June activity: the inactive group tests whether previously inactive users become active. The second measures retained recurring value and can differ from activity retention.
| Frozen segment | Opening users | July active users | Active-user retention | June MRR (USD) | July MRR (USD) | MRR retention |
|---|---|---|---|---|---|---|
| New | 2 | 2 | 100.0% | 200 | 200 | 100.0% |
| Engaged | 2 | 2 | 100.0% | 400 | 400 | 100.0% |
| Light | 2 | 1 | 50.0% | 300 | 150 | 50.0% |
| Inactive | 2 | 0 | 0.0% | 200 | 0 | 0.0% |
| Total | 8 | 5 | 62.5% | 1,100 | 750 | 68.2% |
Percentages are rounded to one decimal place after dividing unrounded totals. Overall active-user retention is 5 / 8 = 62.5%. MRR retention is 750 / 1,100 = 68.2%. Divide the totals instead of averaging segment percentages.
Check that segment counts sum to eight distinct opening users, that the five retained flags match the July usage records, and that both MRR columns reconcile to the billing export for the same opening accounts. New July signups belong in a separate acquisition report. They cannot repair losses in this cohort.
The light group gives customer success a place to investigate, but the table does not prove that low usage caused cancellation. Check tenure, contract status and account context before choosing an action. For repeated observations by signup period, use a cohort retention table.
Bring a dated user roster, usage summaries, billing export and your segment rules. Covirage maps the columns, and its tools compute group sizes, retention and recurring revenue and check the totals; the external AI model explains the results with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.
See Covirage for SaaS teams for the supporting business context.
User segmentation describes individual people using a product. Customer segmentation usually describes purchasing accounts or organizations. A business account can contain people in several usage segments, so keep user identifiers and account identifiers separate when comparing adoption with contract revenue.
Choose a refresh interval that matches the decision and normal usage cycle. Preserve each dated assignment when refreshing. Otherwise, a user who becomes inactive moves out of the original group, making its subsequent retention look stronger than it was.
Invoices show a commercial relationship, not whether a particular person used the product. Engagement needs a defined activity record tied to a user identifier. Keep missing usage records separate from confirmed inactivity until the export's completeness has been checked.
Only under an explicit allocation policy. Dividing account revenue among active users makes their apparent value rise when colleagues stop using the product. Prefer a finance-approved seat allocation, or report account revenue separately with each account counted once.