> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Account scores: B2B rollups of contact-level signals

> Read and act on account-level scoring: value-weighted churn risk, expansion propensity, intent, and account value rolled up from per-contact scores to the company they belong to — and turn the ranking into B2B playbooks.

# Account scores

Per-contact scores answer "which individual needs attention." A B2B motion
needs the same answer at the organization level: "which account is slipping,
which is ready to expand." **Account Scores** computes that rollup for you.
Orbit groups every scored contact that carries a `company` value into an
account, aggregates their churn, intent, propensity, and value up to the
account, and ranks the result. Nothing is stored — every number is derived
on read from the contact-level scoring you already run, so there is no
pipeline to ingest or table to keep in sync.

This guide covers opening the page, reading the rollup columns, which
contact-level scores feed in, and turning the ranking into a playbook. The
entity behind the accounts — golden records, membership, and the
parent/child hierarchy — is defined in
[B2B accounts: golden records and hierarchy](/concepts/cdp-accounts); this
page is the scoring layer on top.

## 1. What account-level scoring does

Account-level scoring aggregates individual churn, intent, propensity, and
value up to the account. The rollups per account:

* **`account_churn_risk`** — a value-weighted churn average across the
  account's members. A high-value contact's churn risk moves the account
  number more than a trial user's, so the ranking tracks revenue at stake,
  not headcount. An account with no attributed value reports no churn number
  (shown as `—`, sorted last) rather than masquerading as a top risk.
* **`expansion_propensity`** — the mean expansion (upsell) propensity across
  the account's members.
* **`intent_score`** — the mean buying-intent score across the account's
  members.
* **`total_value_cents`** — the account's aggregate member value, the sum of
  per-contact lifetime-value estimates.
* **`firmographic_band`** — a size band (`solo`, `small`, `mid`, `large`,
  `enterprise`) estimated from the number of contacts Orbit holds for the
  account. Until a data-enrichment provider is connected, contact count is
  the only available size signal; the page's enrichment card shows which
  firmographic signals (industry, employee count, revenue range) each
  provider would score on instead.
* **`health_segment`** — the account-based-marketing triage label the
  rollup lands in: **At risk**, **Expansion**, **Engaged**, or **Stable**.

Accounts key on the contact's `company` attribute, so the ranking appears
automatically wherever your contact records carry a company name. This is
intentionally different from the **Audience → Accounts** entity, which is
keyed by the explicit `groupId` you send with `group` calls — both views
describe the same organizations when your `group` calls carry a name that
matches the `company` attribute on member contacts. The comparison table in
[Accounts versus Account Scores](/concepts/cdp-accounts) walks the
distinction.

## 2. Open the page and read the rollup columns

Open **Insights → Account Scores** in the dashboard. The view is gated to
the **owner**, **admin**, and **developer** roles — the underlying rows are
PII-bearing contacts and their scores, so the same `contacts:read`
requirement applies as on the contact profile. Other roles do not see the
page and receive a 403 from the endpoints.

The ranked table shows one row per account:

| Column         | What it is                                                                                          |
| -------------- | --------------------------------------------------------------------------------------------------- |
| **Account**    | The company name, with its firmographic size band alongside.                                        |
| **Health**     | The ABM health segment badge — At risk, Expansion, Engaged, or Stable.                              |
| **Contacts**   | The number of scored contacts on the account.                                                       |
| **Churn risk** | The value-weighted account churn risk, as a percentage. `—` means no attributed value to weight by. |
| **Expansion**  | Mean expansion propensity across members.                                                           |
| **Intent**     | Mean intent score across members.                                                                   |
| **Value**      | The account's aggregate value in your tenant currency.                                              |

Above the table, three controls shape the ranking:

* **Sort by** — account churn risk, expansion propensity, intent score,
  account value, or contact count.
* **Order** — highest first or lowest first.
* **Account size** — filter out accounts with fewer than 2, 5, or 10
  contacts to focus on established organizations rather than solo rows.

The list loads 50 accounts at a time behind a **Load More** button, with
the footer reporting the loaded count against the true total.

Select any row to drill into one account: the rolled-up scores, the health
segment and firmographic band, and the member breakdown — each member's
churn, intent, propensity, and lifetime-value estimate with their lifecycle
stage, so you can see exactly which contacts are driving the account's
number.

If the page shows **"No accounts to score yet"** the rollup has nothing to
aggregate: account scores roll up scored contacts that carry a company
name, so populate the `company` attribute on contacts (via import, forms,
or the track/group ingest) and let the contact-level scores compute. If a
role other than owner, admin, or developer needs access, assign one of
those roles — there is no separate account-scores permission to toggle.

## 3. Which contact-level scores feed in

Every number on the page is a rollup of the per-contact
[churn, propensity, intent, and LTV scores](/guides/cdp-predictive-models)
the CDP computes for each contact:

* **Churn risk per member** is value-weighted into `account_churn_risk`.
* **Propensity and intent per member** average into `expansion_propensity`
  and `intent_score`.
* **Per-member LTV estimates** sum into `total_value_cents`.

Membership is the link: contacts grouped by a shared `company` value are
the account's members, so the score of an account is only as current as the
scores of its contacts. Keep the upstream models trained and scored — the
[CDP predictive models guide](/guides/cdp-predictive-models) covers the
train → evaluate → score loop — and the account ranking follows on the next
read.

Because the rollup is derived on read, there is no backfill or refresh to
run: once contacts carry a `company` value and computed scores, their
accounts appear in the ranking.

## 4. Drive B2B playbooks from the ranking

The ranking is a triage queue for account-based work:

1. **Retention.** Sort by account churn risk, highest first. The accounts
   at the top carry the most value-weighted risk — drill in to see which
   members are driving it, then target those contacts with a save play
   rather than a blast to the whole base.
2. **Expansion.** Sort by expansion propensity to surface accounts whose
   members are ready to buy more — the queue for upsell and cross-sell
   outreach.
3. **Segment the members.** Once an account is worth spending against,
   build a segment over its members in **Audience → Segments** with the
   conditions the campaign needs, and activate it like any other audience.
   The segmentation walkthrough in
   [B2B accounts: golden records and hierarchy](/concepts/cdp-accounts)
   covers locating accounts, collecting member contact ids, and building
   the segment.
4. **Filter to real accounts.** Use the Account size filter to drop
   one-contact rows when the motion only makes sense above a deal size.

Programmatic playbooks use the same endpoints the page renders:
`GET /api/v1/cdp/accounts/scores` for the ranked list (sortable by
`churn_risk`, `contacts`, `propensity`, `intent`, or `value`, with
`order`, `min_contacts`, `limit`, and `offset` controls) and
`GET /api/v1/cdp/accounts/score?account=<name>` for one account's rollup
plus its member breakdown. Both are read-only and carry the same
owner/admin/developer + `contacts:read` gate. Endpoint-level detail lives
in the [CDP API reference](/api-reference/endpoints/cdp).

## See also

* [B2B accounts: golden records and hierarchy](/concepts/cdp-accounts) —
  the account entity: `groupId`-keyed profiles, golden records, membership,
  parent/child hierarchy, and the Accounts-versus-Account-Scores comparison.
* [CDP predictive models](/guides/cdp-predictive-models) — the per-contact
  churn, intent, propensity, and LTV models the rollup aggregates.
* [CDP segments](/guides/cdp-segments) — building and activating an
  audience from the accounts the ranking surfaces.
* [CDP API reference](/api-reference/endpoints/cdp) — the account-scores
  endpoint contracts.
