> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt

# Are our biggest accounts our happiest ones? – Context Warehouse pocket guide

[](/pocket-guides.md)Aa

[](/pocket-guides/context-warehouse/support-tickets-churn.md)[](/pocket-guides/context-warehouse/acquisition-channels-retention.md)

# Are our biggest accounts our happiest ones? – Context Warehouse pocket guide

Revenue and engagement should move together. When they don't, that's an account worth worrying about — it might be about to churn. This Skill compares each account's ARR from Salesforce or HubSpot against its PostHog engagement score and flags the high-ARR, low-engagement quadrant.

## Example data and how to read it

The skill looks for patterns like Fig. 1: Globex Corp pays more than Acme Co but logged activity on only 2 of the last 30 days. The gap between the two numbers is the risk to watch.

| Account | ARR | Active days (30d) | Flag |
| --- | --- | --- | --- |
| Globex Corp | $84,000 | 2 | high ARR / low engagement |
| Initech | $76,500 | 4 | high ARR / low engagement |
| Acme Co | $68,000 | 21 | ok |

Fig. 1 – Example data: ARR plotted against real engagement, with the at-risk quadrant flagged.

## Doing this by hand

1.  **Connect [Salesforce](/docs/cdp/sources/salesforce.md) or [HubSpot](/docs/cdp/sources/hubspot.md)** via [Data pipeline > Sources](/docs/data-warehouse/sources.md) for ARR.
2.  **Build an engagement [Trends](/docs/product-analytics/trends/overview.md) insight**, broken down by group (account): active days or a count of key events.
3.  **Export both and join in a spreadsheet** on account name or domain, sorting by ARR to spot the low-engagement outliers by eye. The [SQL editor](/docs/data-warehouse/sql.md) does the same join live, or you can ask PostHog AI to analyze the insight, and your list updates itself instead of going stale.

## Get an agent to do the work

Copy the Skill below and add it to your agent. The agent confirms how you track accounts (a PostHog group, or persons aggregated by email domain), pulls ARR from the CRM, and defines a simple, explainable engagement score: active days, distinct active users, or a count of key events. It joins the two on account name or domain and flags accounts in the top ARR quartile with low engagement. Scoring is a judgment call, so it states exactly how the score was defined rather than presenting one number as gospel.

This measures CRM-ARR versus engagement health. For expansion candidates based on usage against *plan limits* instead, that's [Upsell-ready accounts](/pocket-guides/context-warehouse/upsell-ready-accounts.md).

posthog-value-vs-engagement/SKILL.md

```markdown
# Are our biggest accounts our happiest ones?
**Question:** Where does account ARR diverge from product engagement — which big accounts barely use us?
**For:** CS & Leadership · **Difficulty:** Intermediate · **Shape:** one dashboard
**Data sources:** PostHog groups (engagement per account) + Salesforce / HubSpot (ARR per account)
## What this produces
A saved PostHog insight plotting ARR against an engagement score per account, with the high-ARR / low-engagement
quadrant flagged — the accounts whose revenue is at risk, and the expansion targets.
## Workflow
First read `references/posthog-workflow.md` for the shared setup: confirm the PostHog MCP is connected, ensure the
CRM source (Salesforce or HubSpot) exists (secure connect-link flow if not), and learn the real schema. This
question is account/group-centric, so pay special attention to PostHog group types. Then:
### 1. Identify the pieces in this project
- **Account entity.** This works best when the user tracks a PostHog group (e.g. organization). Confirm the group
  type and how accounts are identified. If they only have persons, aggregate to a company via email domain.
- **ARR per account.** From the CRM: `salesforce_account` / `hubspot_companies` ARR (or an annualized amount) per
  account. Confirm the field.
- **Engagement score.** Define a simple, transparent score per account — e.g. active days in the last 30, distinct
  active users, or count of key events. Keep it explainable.
- **Join key.** CRM account ↔ PostHog group by name or domain (see join gotchas in the shared reference; lowercase
  and trim).
### 2. Build and validate the query
Adapt names and validate with `query-run`. Produce one row per account with ARR and engagement so it can be
plotted or flagged.
```sql
-- ARR vs engagement per account, flagging high-ARR / low-engagement.
-- Adapt: group type, CRM table/fields, engagement definition, and the account join key.
WITH engagement AS (
    SELECT
        e.person.properties.company_domain AS account,     -- or the group key
        count(DISTINCT toDate(e.timestamp)) AS active_days_30d,
        count(DISTINCT e.person.id) AS active_users_30d
    FROM events AS e
    WHERE e.timestamp >= now() - INTERVAL 30 DAY
    GROUP BY account
),
arr AS (
    SELECT lower(domain) AS account, sum(annual_recurring_revenue) AS arr
    FROM hubspot_companies
    GROUP BY lower(domain)
)
SELECT
    a.account,
    a.arr,
    coalesce(e.active_days_30d, 0) AS active_days_30d,
    coalesce(e.active_users_30d, 0) AS active_users_30d,
    if(a.arr >= quantile(0.75)(a.arr) OVER () AND coalesce(e.active_days_30d, 0) <= 5,
       'high ARR / low engagement', 'ok') AS flag
FROM arr AS a
LEFT JOIN engagement AS e ON a.account = e.account
ORDER BY a.arr DESC
```
Engagement scoring is a judgment call — keep it simple and tell the user exactly how you defined it so the flags
are trustworthy.
### 3. Save the insight
Save as a SQL/HogQL insight named "ARR vs engagement by account" (a table works; a scatter is ideal if the user
wants the quadrant visual). Offer to put it on a dashboard. Return the URL and name the specific high-ARR /
low-engagement accounts.
## Self-driving development (offer this)
With ARR mapped against real engagement, the user can protect at-risk revenue and find expansion targets. Offer to
help build cohorts for the flagged quadrants and trigger tailored CS outreach or in-product nudges — catching big
accounts before they wobble.
```

Show full example

Fig. 2 – The Skill itself, copy and paste this into your agent to answer the question.

See also: [Upsell-ready accounts](/pocket-guides/context-warehouse/upsell-ready-accounts.md) · [Tickets & churn](/pocket-guides/context-warehouse/support-tickets-churn.md)

[‹ Do support tickets predict churn?](/pocket-guides/context-warehouse/support-tickets-churn.md)[All guides](/pocket-guides.md)p. 6 of 15[Which channels bring customers who stick? ›](/pocket-guides/context-warehouse/acquisition-channels-retention.md)