All metrics

What is data freshness?

Data freshness answers the question every other number depends on: is the data under this dashboard current? Each connected source — store, ad platform, messaging platform — is graded by the time since its last successful sync: fresh within 26 hours, stale up to 72, critical beyond that. A brand new connection reads pending for its first 48 hours, then critical if it has still never synced.

Formula

fresh    ≤ 26 h since last successful sync
stale    ≤ 72 h
critical  > 72 h   (never synced: pending for 48 h, then critical)

Worked example

The freshness widget shows the store connection fresh (synced 3 hours ago), one ad platform stale at 41 hours, and a messaging platform critical at 9 days. Every marketing number on the dashboard is now quietly missing nine days of email revenue — nothing on those charts says so, which is exactly why this widget exists. The 26-hour bound is a daily sync cadence plus slack, so one missed run flips a source to stale.

How Saldo Metrics computes it

v_data_freshness joins each connection to its latest ingest run and grades the time since the last successful one against the thresholds above. Soft-deleted (disconnected) connections are excluded — they would otherwise decay to critical forever. The widget appends one extra row from v_fx_rate_freshness for the ECB exchange-rate feed, which is global reference data rather than a per-org connection. The stale-connections alert metric counts connections currently stale or critical, so you can be notified instead of noticing.

Why it matters

Every metric in the app inherits the staleness of its sources, silently: a stale ad connection makes yesterday's ROAS look great by omitting yesterday's spend. A glance at freshness before reading anything unusual turns most "why did revenue drop" investigations into "the sync failed" one-liners.

Common mistakes

  • Debugging metrics before checking freshness. An odd number with a stale source is almost always the sync, not the business.
  • Ignoring stale because critical hasn't hit. Stale means one to three missed days — already enough to distort daily comparisons.
  • Expecting disconnected sources to appear. They are deliberately hidden; the connection doctor on the connections page covers their history.

Where you see this in the app

The Data Freshness dashboard widget, one row per connection plus the ECB FX feed, and the stale-connections alert metric.

Formula
hours since last successful sync per connection → fresh / stale / critical
How Saldo Metrics computes it
canonical.v_data_freshness, canonical.v_fx_rate_freshness

Last reviewed 2026-08-29