Reading the attribution dashboard
Six tiles, a KPI cube, and a set of honesty behaviours that suppress a number rather than show you a wrong one.
Dashboard → Attribution. Window is 7d or 30d, both UTC, compared against an equal-length prior period.
The tiles
Installs, paid installs, net revenue, clicks, cost, and ROAS (net) — net meaning after commission and tax, so it's comparable to what actually lands. roas_gross is available too, for comparing against a platform's own dashboard.
When ROAS goes quiet instead of wrong
Blended ROAS is withheld — not shown as a number — unless cost data covers at least 98% of installs. Below that threshold you get "partial" plus the coverage percentage, not a number built on a fifth of your spend. The same discipline applies elsewhere: CTR is withheld when clicks exceed impressions rather than showing something over 100%, and there is no FX conversion anywhere — mixed currencies produce a named block reason (mixed_revenue_currency, mixed_spend_currency, currency_mismatch) instead of a blended total that's quietly wrong.
The KPI cube
Group by source, campaign, link, or day; expand a source row to see its campaigns; top-N capped at 25/50/100/200; an organic toggle. Each row carries spend provenance — api, link_declared, mixed, or none — because cost data comes from two different places and they aren't the same kind of number: synced spend from a connected ad platform, or cost you declared on the link itself (CPC/CPM/CPI × the observed clicks/impressions/installs), used only where no synced row exists for that (provider, campaign, date).
assisted — installs where this source was a contributor, not the winner — reads null, not 0, at grains where it can't be computed. Null means "not measured here," zero means "measured, and it's zero." They aren't the same claim.
Charts
Installs per day, net revenue per install, D1/D7 retention, in-app event volume, assisted installs per source, and a waterfall explainer that shows which rung resolved each install.
The assisted-installs panel isn't a window total
It's computed client-side from the fetched install sample (200 rows), not the whole window's data. Read it as directional, not as a total you'd reconcile against the tiles above.
The install explorer and exports
A row-level table with per-install match reasoning and contributors, plus three CSV downloads — installs, events, and touches — each capped at 100,000 rows with X-Fictura-Row-Count and X-Fictura-Truncated headers so a truncated export tells you it's truncated instead of looking complete.