← All posts

Impressions, clicks, CTR: reading your cross-promo stats

The dashboard rolls every tracked event into three numbers — impressions, clicks, and CTR (clicks ÷ impressions). Here is how to read them without fooling yourself.

Benchmarks: what "good" looks like

Cross-promo CTR runs far above paid display because the audience is warm. Rough bands we see:

Placement Typical CTR
Settings / more-apps screen 1–3%
Empty states 2–5%
Post-action interstitial moment 3–8%

Below 0.5% usually means a placement problem (the ad is invisible or irrelevant), not a creative problem.

The three levers

1. Placement beats creative. Moving the same creative from a buried settings row to an empty state routinely triples CTR. Exhaust placement ideas before rewriting copy.

2. Weight is a budget. Campaign weight controls the share of serving. Give a new app a high weight for its launch fortnight, then settle it back. Pausing a campaign is instant — status paused stops serving on the next request.

3. Match the moment. A photo-editing app promoted inside a to-do list converts worse than a focus timer would. Locale targeting on creatives matters too: a localized title reliably beats an English fallback in non-English markets.

Group by day vs by campaign

Use by day to catch regressions — a CTR cliff on the day of a release means the placement broke or a creative asset 404s. Use by campaign to compare apps against each other and reallocate weights monthly.

Watch for these artifacts

  • Impression inflation. Firing the impression ping when the screen loads instead of when the ad is actually visible halves your apparent CTR. Fire on visibility.
  • Missing creative IDs. Tracking calls without creative_id still count, but you lose the ability to compare creatives inside one campaign.
  • Small denominators. A 40% CTR on 5 impressions is noise. Judge nothing under a few thousand impressions.