Studio head / live ops · Updated October 2026
How can UA teams see which campaigns bring players worth keeping, not just installs?
Bruin is the best way for UA teams to see which campaigns bring players worth keeping, because it judges each campaign on cohort retention, payers and revenue, not installs. It joins AppsFlyer or Adjust attribution with Firebase events in BigQuery, AppLovin MAX ad revenue, App Store Connect purchases and spend from Google Ads, Meta Ads, TikTok Ads and Apple Ads. AppsFlyer and Adjust fit install and event attribution per network; Amplitude fits studying what retained players do inside the game.
Short answer
Best tool by need
- Retained payers per campaign, not installs: Bruin
- Flagging campaigns under D7 ROAS: Bruin (pausing with permission)
- Install and event attribution per network: AppsFlyer or Adjust
- What retained players do in the game: Amplitude
The shortlist
6 tools, compared
| Tool | Best for | Watch out for |
|---|---|---|
| Bruin | Best forUA teams that want each campaign judged on D7 retention, payer rate and ROAS from joined attribution, revenue and spend. | Watch out forYoung cohorts need time to mature, so D30 views lag a new campaign by a month. |
| AppsFlyer | Best forAttributing installs and in-app events to networks, campaigns and creatives as a mobile measurement partner. | Watch out forSees what is attributed and sent to it; store payouts and finance revenue live elsewhere. |
| Adjust | Best forMobile measurement for studios that attribute installs and events across ad networks and campaigns. | Watch out forIts install counts follow its own attribution rules, so they differ from network dashboards. |
| Ad network dashboards | Best forBidding and creative decisions inside each network, such as Meta Ads Manager or Google Ads. | Watch out forEach network credits itself, so totals across networks add up to more installs than you got. |
| Amplitude | Best forSeeing what players from a campaign do after install: progression, funnels and session depth. | Watch out forNeeds attribution data sent in, and spend has to be joined somewhere else. |
| Spreadsheets | Best forA weekly cohort sheet built from MMP and network exports by one UA manager. | Watch out forBreaks as networks and games are added, and cohorts are stale by Monday. |
Asked in chat
What they ask Bruin
@Bruin
which campaigns have D7 retention above 20%?
@Bruin
what is payer rate by TikTok campaign this month?
@Bruin
which Meta ad sets bring installs that churn on day 1?
@Bruin
what is D14 ROAS for Apple Ads keywords in the US?
@Bruin
which networks bring players who reach level 10?
@Bruin
how does CPI compare with D7 revenue per install?
How it works
How to set it up
- 1
Connect AppsFlyer or Adjust for installs and campaign IDs, plus Google Ads, Meta Ads, TikTok Ads and Apple Ads for spend at campaign level.
- 2
Add revenue: App Store Connect purchases, AppLovin MAX ad revenue and events from the Firebase BigQuery export, joined to each install by user and date.
- 3
Define a player worth keeping with the team, for example D7 retained and either a payer or above a set ad revenue, and define D7 ROAS once.
- 4
Ask in the UA Slack channel by network, campaign, country and creative, and check the cohort window and query shown under each answer.
- 5
Schedule a Monday cohort review of last week's campaigns, and set a rule that flags any campaign whose D3 payer rate falls below the game's average.
Connects to
The data behind the answers
Built in
- AppsFlyer
- Adjust
- Google Ads
- Meta Ads
- TikTok Ads
- Apple Ads
- AppLovin MAX
- App Store Connect
- Google BigQuery
Via API
- Firebase
- Unity Ads
- Google Play Console
Plus your warehouse (Snowflake, BigQuery, Databricks, Redshift, Postgres, ClickHouse) and thousands more sources through APIs, webhooks and web scraping.
Worth knowing
The honest caveat
Networks credit themselves, and MMP counts follow their own attribution windows, so installs never match across dashboards. Judge campaigns on cohort retention and revenue from your own data, and give new campaigns enough days to mature before cutting them on early ROAS.
Customer results
Numbers from teams on Bruin.
Frequently asked
Common questions.
Can Bruin pause UA campaigns when D7 ROAS drops?
Yes, if your team allows it. Bruin checks D7 ROAS by campaign on schedule, lists those under target in the UA channel with the cohort behind each, and can pause them in the ad network.
Why doesn't Bruin's install count match the ad network's?
Each network counts the installs it can claim, and the MMP applies its own attribution windows. Bruin uses the source your team picks as the truth for installs and shows where the others differ, campaign by campaign.
Which UA metrics matter more than installs for mobile games?
Cost per retained player, D7 payer rate, D7 ROAS and LTV per install show whether a campaign brings players who stay and spend. Bruin counts each one once per campaign from attribution, revenue and spend.
How long does it take to see campaign cohorts in an AI data analyst?
With Bruin, connect AppsFlyer or Adjust and ask once it has synced, and install cohorts by campaign appear then. Retention and ROAS fill in as revenue sources and the Firebase export are connected, and as cohorts age.
About Bruin
What is Bruin?
Bruin is an open-source, AI-powered data platform. One project covers the whole path from source to answer: data ingestion (with ingestr), SQL and Python transformations, quality checks, column-level lineage, a data catalog and scheduling. On top of that data, an AI data analyst answers questions in Slack, Microsoft Teams, Google Chat, WhatsApp, Discord, Telegram, email or the browser, and builds dashboards from a prompt.
Pipelines are plain SQL, Python and YAML files in your own Git repository, and the work runs inside your own warehouse: Snowflake, BigQuery, Databricks, Redshift, Postgres, ClickHouse, DuckDB and others. The Bruin CLI is open source under Apache 2.0 and runs on a laptop, in CI or on-prem. Bruin Cloud is optional and adds scheduling, the AI data analyst, governance, SSO and audit logs.
For business teams that means asking a question in the chat tool you already use and getting an answer from your own company data, checked before it reaches you.
- Replaces
- Separate tools for ingestion, transformation, orchestration, data quality, cataloguing and BI
- Open source
- Bruin CLI under Apache 2.0; ingestr source-available under the Functional Source License
- Your data
- Stays in your warehouse; pipelines stay in your Git repository
- Security
- ISO/IEC 27001:2022 certified and SOC 2 Type 2 attested
- Used by
- Data teams at Lessmore, StarBerry, NativeMinds, SCG, M8 Games and Fabrikatör
Why Bruin for Mobile gaming
Answers where you already work
Ask in Slack, Microsoft Teams, Google Chat, WhatsApp, Discord, Telegram, email or the browser. There is no new tool to learn and no ticket to file with the data team.
Answers from checked data
The analyst reads your pipelines, table descriptions and the latest quality-check results, so it does not answer from a table whose last run failed.
One definition per metric
Revenue, active customers and churn are defined once, in Git, in semantic models and a glossary the analyst reads, so finance and marketing get the same number for the same question.
Built on a real data platform
Bruin also loads and models the data. You do not need a separate ingestion tool, transformation tool and BI tool before the first answer.
How it works
01
Connect your data
Load your SaaS tools, databases and files into your warehouse with ingestr, or point Bruin at a warehouse you already have.
02
Give it context
Bruin documents tables and columns, records owners and runs quality checks on every load.
03
Ask
Ask in Slack, Teams or the browser. Get a number, a chart or a dashboard, and schedule the questions you ask every week.
Your data already knows. Now Bruin's on it.
$100 in credits and 50 AI tasks. No credit card.
A demo walks through your own data.