Account Health score — signals, thresholds and how to act

Account Health scores each ad account 0-100 from spend efficiency, performance trend, errors and creative fatigue, with levels and a 30-day trend.

Written By Salvatore Sinigaglia

Last updated About 13 hours ago

Account Health scores each ad account 0-100 from spend efficiency, performance trend, errors and creative fatigue, with levels and a 30-day trend.

Account Health score — signals, thresholds and how to act

Account Health at /account-health gives every connected ad account a single 0–100 score with a status of healthy, warning or critical. The score is the sum of four 0–25 signalsspend efficiency, performance trend, operational errors and creative fatigue — refreshed automatically. A KPI strip summarizes your whole portfolio, a table ranks accounts, and a drawer shows each account's signal breakdown, its ROAS/frequency details and a 30-day score trend.

Who is this for

Media buyers and admins managing several ad accounts who want an at-a-glance list of which accounts need attention today, without opening each platform. Owners see the whole team's accounts (with the responsible buyer's email); a single buyer sees their own.

Before you start

  • Connected, synced ad accounts: the score is computed from your ad data (Meta, Google Ads, TikTok, Taboola, Snapchat, Outbrain). Connect and sync first; the page shows a "connect" call-to-action when empty.
  • A target ROAS (recommended): spend efficiency compares your ROAS to a target you set. Without a target, that signal returns a neutral score.
  • Some delivery history: trend and fatigue signals compare recent windows, so brand-new accounts start near the neutral middle.

How the score works

The total is spend_efficiency + performance_trend + operational_errors + creative_fatigue, each capped at 25, for a max of 100 (apps/backend/src/services/ad-account-health.service.ts:365). The status thresholds are (ad-account-health.service.ts:48):

ScoreLevel
0–40Critical
41–70Warning
71–100Healthy

When a signal has no data to judge, it returns a neutral 13/25 rather than punishing the account.

The four signals (0–25 each)

  • Spend efficiency — how your ROAS compares to your target ROAS: (ROAS ÷ target) × 25. Neutral when no target is set or the account has no spend (ad-account-health.service.ts:67).
  • Performance trend — last 7 days vs the previous 7 days on CTR (weighted 40%), CPC (30%, lower is better) and conversions (30%). Each metric scores 25 for a >+10% improvement, 0 for a >−10% decline, 13 in between (ad-account-health.service.ts:79).
  • Operational errors — starts at 25 and subtracts 5 per rejected campaign (max −15); a disabled/inactive account scores 0 outright (ad-account-health.service.ts:108).
  • Creative fatigue — penalizes high ad frequency (−15 above 5, −8 above 3) and decaying CTR (−5 when CTR drops sharply). Neutral when frequency data is missing (ad-account-health.service.ts:127).

Reading the page

  • KPI strip — total accounts, how many are critical and warning, and the average score.
  • Table — each account with its score, level badge, the 1-day and 7-day score delta (up/down arrows), and four little bars for the individual signals. Sort by score, name or delta.
  • Detail drawer — click a row to open the breakdown bars, a 30-day score trend line, and details: current ROAS, target ROAS, average frequency and count of rejected campaigns.

Scores refresh on a schedule (roughly twice a day), and the header shows the last updated time.

How to act on each signal

  • Low spend efficiency → your ROAS is under target. Cut or restructure under-performing campaigns, or revisit whether the target is realistic. See ROAS explained and Profitability to check true profit.
  • Falling performance trend → CTR/CPC/conversions worsened week-over-week. Refresh creatives and audiences before the decline compounds.
  • Operational errors → you have rejected campaigns or a disabled account. Fix policy rejections and re-enable the account — this signal recovers immediately.
  • Creative fatigue → frequency is high and CTR is decaying. Rotate in fresh creatives; the Creative analytics fatigue tab pinpoints which ads.

Common issues

  • The page is empty: no connected/synced ad accounts. Use the "connect accounts" button to go to Integrations, then sync.
  • Spend efficiency looks neutral: you haven't set a target ROAS, or the account has no spend in the window, so Wevion returns the neutral 13/25 instead of guessing.
  • My score didn't change after I fixed something: scores refresh on a schedule (about every 12 hours). Give it a cycle; operational fixes surface fastest.
  • A brand-new account sits around 50: several signals lack history and default to neutral. The score sharpens as delivery data accumulates.

Best practices

Set a target ROAS

Spend efficiency is a quarter of the score and only works with a target. Set one so the signal reflects your real goal instead of staying neutral.

Work the critical list first, then watch the deltas

Sort by score ascending to triage critical accounts, then keep an eye on the 7-day delta — a healthy account trending down is tomorrow's problem.

Pair health with profitability

A healthy score means efficient, well-run delivery, not guaranteed profit. Cross-check with the Profitability suite to confirm accounts make money after costs.

FAQ

How is the Account Health score calculated?

It's the sum of four 0–25 signals — spend efficiency, performance trend, operational errors and creative fatigue — for a 0–100 total. Accounts score critical at 0–40, warning at 41–70 and healthy at 71–100. Signals with no data return a neutral 13/25.

Why is one of my signals showing a middle score?

Because Wevion has no data to judge it — for example, spend efficiency with no target ROAS set, or creative fatigue with no frequency data. Rather than penalize the account, the signal returns a neutral 13 out of 25.

How do I improve a critical account?

Open the account's drawer to see which of the four signals is lowest. Common fixes: set/raise ROAS vs target, refresh fatigued creatives, resolve rejected campaigns and re-enable any disabled account. Operational fixes recover the score fastest.

How often does the score update?

Health snapshots are recomputed automatically about twice a day, and the page header shows the last updated time. You also see a 1-day and 7-day score delta so you can spot accounts trending up or down.