Why it matters
Ad platforms update delivery continuously from the events they ingest. For Meta CAPI, Meta recommends sending events in real time or within about 1 hour. Delays beyond 2 hours can materially hurt performance on campaigns optimized on those events; delays of 24 hours or more can cause significant attribution and delivery issues, even if events still appear in Events Manager. For Google offline or imported conversions, daily uploads are the documented minimum for Smart Bidding; freshness requirements differ by activation path. Worse, a stale score trained on yesterday's behavior can misrank a user who refunded, upgraded, or churned since the model last ran.
Freshness problems often hide behind good model accuracy on paper. Analytics sees strong offline AUC; performance marketing sees flat platform ROAS. The gap is frequently pipeline latency, batch schedules, missing identifiers at send time, or scores computed before identity stabilizes.
For teams activating value-based bidding, freshness sits alongside calibration, signal volume, and match rate as a load-bearing part of signal quality. A perfectly calibrated model delivered late behaves like no model at all inside the platform's learning loop.
Signal freshness
Signal freshness is a design requirement in the Churney activation stack:
- First-party data in your data warehouse updates on a schedule your pipeline can support (ideally daily append-only feeds for modeling).
- Churney scores user-level pLTV soon after the anchor event, before optimization potency fades (Churney internal: ~36–48 hours post anchor).
- Signal transformation maps predictions into platform-ready magnitudes with monitoring on score age at send time.
- Churney delivers values directly to ad networks via Meta CAPI, Google Ads Conversion API, or app measurement paths with latency SLAs.
- Pilots track freshness KPIs alongside incremental ROAS vs BAU so readout separates model quality from delivery delays.
The data warehouse is an input to scoring. Freshness is about the time from anchor event to network receipt, not how fast BI dashboards refresh.
Category variants
| Model | How signal freshness shows up |
|---|---|
| Ecommerce / DTC | pLTV must follow first purchase before optimization potency fades; refund updates need timely downgrade paths where designed. |
| Subscription app | Trial-start scores must arrive while delivery can still learn; late scores after cancel rarely re-steer acquisition. |
| SaaS / PLG | Activation events and product usage features must reach the model and network before sales-assist or expansion signals stale the prediction. |
Common mistakes
- Batch-only scoring with intraday spend. Daily-only pipelines are often too slow for Meta value events (sub-hour delivery is recommended). For Google offline conversion imports, daily upload is the official minimum, though more frequent uploads can improve responsiveness.
- Sending value before identity is stable. Early events with low match rate look fresh but cannot steer optimization (Event Match Quality suffers).
- No monitoring of event lag. Teams discover staleness only after a failed pilot readout.
- Treating data warehouse refresh as network freshness. Updated tables do not help until values are sent to the ad platform.
Advertiser lens
| Role | What they ask | What good looks like |
|---|---|---|
| Head of Performance / UA | Are pLTV events arriving in time to matter? | Freshness SLA dashboard tied to anchor events and campaign learning phase. |
| VP Growth / CMO | Is latency killing our pilot? | Executive view: median lag, p95 lag, and match rate together. |
| Marketing Analytics / Data Science | How stale can scores be before bias appears? | Simulation or backtest on score age vs realized value; agreed max lag thresholds. |
| Data Engineering | What breaks freshness in our stack? | End-to-end tracing from data warehouse update to CAPI receipt; alerting on failed sends. |
| Finance / Procurement | Does SLA breach void test readout? | Contract language on data pipeline and activation latency where applicable. |
FAQ
What is signal freshness?
Signal freshness is how quickly a pLTV or value event reaches an ad platform after the user's anchor action, and how current the prediction remains at send time. Both timing and content recency matter.
Why does signal freshness matter for pLTV?
Platforms learn from events that arrive while optimization potency is still high (Churney internal: ~36–48 hours post anchor). Late events may still receive attribution credit in reporting but miss the window where delivery decisions are shaped.
How is freshness different from calibration?
Calibration is whether predicted values match realized outcomes in magnitude and rank. Freshness is whether those predictions arrive soon enough and stay current enough for the platform to use them.
What causes stale pLTV signals?
Common causes include batch-only pipelines, data warehouse delays, missing click or user IDs at send time, failed API deliveries, and scores not recomputed after major user behavior changes.
How do you measure signal freshness?
Track elapsed time from anchor event timestamp to ad network receipt (and processed status where available). Monitor median and tail latency by channel, campaign, and event type.
Can you refresh pLTV after the first send?
Some designs send an initial conservative score then update value when more data arrives. Platform rules, deduplication, and signal transformation policy must be documented; not all networks treat updates identically.
Does freshness replace the need for incrementality testing?
No. Fresh delivery is necessary but not sufficient. You still compare treatment vs BAU or holdout for incremental ROAS at cohort maturity.
Not the same as
| Term | Difference |
|---|---|
| Signal quality | Umbrella for accuracy, completeness, timeliness, and match; freshness is the timeliness slice. |
| Data warehouse latency | How fast internal tables update; does not guarantee ad network receipt. |
| Real-time bidding (RTB) | Auction-time bid decisions; pLTV freshness refers to conversion value delivery, not RTB millisecond latency. |