How to Read Your Unity Ads Campaign Results

Sep 30, 2026|4 Min
User acquisition
Dashboard

You launched your campaign. Money is going out, installs are coming in. But what do the numbers actually mean, which ones matter, and how do you know if it's working?

This is the third guide in the series. In the first we set up a full Unity Ads campaign from scratch: attribution, budgets, targeting, and creative packs. In the second, we built playable ads in Unity Playworks, covering both the no-code template route and the Unity plugin for developers. This one is about what happens after you hit Go Live: how to read the data, understand what's driving your results, and make better decisions on the next campaign.

We'll walk through the Unity Ads reporting dashboard using real campaign data.

What we'll cover:

  1. Finding your way around the reporting view
  2. The key metrics and what they tell you
  3. ROAS, the metric that matters most
  4. Pulling data programmatically with Unity's APIs
  5. Reading the campaign table
  6. Naming conventions that save you headaches
  7. Inside a campaign: goals, bids, slots, and budget
  8. Comparing campaign results
  9. Spotting creative fatigue before it costs you
  10. Why ROAS is a curve, not a number
How to Understand Unity Ads Campaign Results

The reporting view

Start in the reporting section. This view shows data across all apps in your organization, so if you're running several games, everything sits in one place.

Viewing options at the top let you change the graph type and set your timeframe. One option worth using regularly is compare against previous period, which tells you at a glance whether this week beat last week.

Dimensions break the data down by source, country, creative, or campaign type. Reach for these when the overview isn't specific enough.

Metrics is where you choose what to display. For example, installs, spend, ROAS, conversion rate, and everything else lives here.

The metrics you'll actually use

The dashboard supports impressions, installs, spend, eCPM (effective cost per mille) , CPI (cost per install), CVR (conversion rate), CTR (click-through rate), and IPM (install per mille), along with time intervals of day 0, 1, 3, 7, 14, 21, and 28 for ROAS, retention, ad revenue, and IAP metrics.

That's a lot of numbers. Most of them are supporting evidence. One is the decision-maker.

ROAS: the metric to understand above all others

Return on ad spend is the dial the algorithm responds to, and understanding how it behaves changes how you run campaigns.

Set a higher ROAS goal, say 80% by day 7, and the algorithm gets selective. It targets fewer users but higher quality ones. Volume goes down, efficiency goes up.

Set a lower ROAS goal and the algorithm casts a wider net. More installs, lower cost per install, but the players may not be as valuable long term.

Neither setting is wrong. It depends on your game and your stage. Early on you might want volume to feed the algorithm data. Later you optimize for quality.

The underlying formula is simple:

ROAS = Revenue per user (ARPU) / Cost to acquire user (CPI)

Of course, this must be measured both over the same cohort and time window.

There are three optimization types, matching what we covered in the setup guide: in-app purchases at day 7 or day 28, ad revenue at day 0, day 7, or day 28 and hybrid at day 7 and day 28. Shorter windows allow faster adjustments. Longer windows optimize for users with delayed spend behavior, like RPG players.

Pulling data programmatically

If you're running UA at any real scale, Unity gives you programmatic access to everything in the dashboard. These are great when you're managing 20 or more campaigns across multiple apps since automating your reporting is a serious time saver.

The Stats API

This pulls campaign performance data directly into your own dashboards, spreadsheets, or internal tools: installs, spend, ROAS, impressions, and more, filterable by date, country, campaign, and creative.

The Advertising Management API

This handles the other direction. Create, update, and pause campaigns and adjust bids programmatically over REST.

Separately, there is a Campaign Management API that lets you automate setting changes.

Reading the campaign table

Now to real campaigns. The example below shows App Store® and Google Play campaigns over the past 30 days, filterable by platform and timeframe using the apps section at the top.

Four columns tell you most of what you need at a glance:

  • Starts: How many times a creative was shown on a user's device.
  • Installs: How many of those led to an actual download.
  • Conversion rate: Installs divided by starts. This is your read on how well creatives are converting.
  • Spend: Total cost for the selected period.

Click into the App Store® campaign and you'll see every campaign, live and paused.

Naming conventions: five parts

Before going deeper into the numbers, look at the campaign names. There's a logic here that saves real headaches once you're running campaigns simultaneously.

A good convention has five parts: app, geo, platform, creatives, and type.

App identifier

Keep it short, around four letters, because you need to scan the table fast.

Geo targeting

Two-letter country codes: US, JP. Use WW for worldwide, T1, T2, or T3 if you group by tier, and ROW for rest of world.

Platform

iOS, ADR for Android, or GP for Google Play.

Creatives

Use "All" if you're running everything, or a tag for a specific set, such as Xmas for a Christmas creative batch.

Campaign type

ROAS D7, ROAS D28, Creative Test, whatever it is. Put it at the end.

So a campaign named something like Hon_US_iOS_All_ROAS_IAP_D7 tells you immediately: US territory, iOS, all creatives, ROAS campaign optimized for in-app purchases at day 7. You read that in two seconds. That's the goal.

Agree on the same kind of convention for creatives with your team. Include the app code, country, format, and variation. When you're staring at a table of 30 creatives, you'll be glad you did.

Inside a campaign

Click into a campaign and a few fields are worth understanding.

Goal and optimization type

ROAS, installs, or retention. What is this campaign actually trying to achieve?

Bid strategy

Automatic or manual. For most people starting out, automatic is fine and Unity's algorithm handles it.

Slots

This one is specific to iOS and catches people out. Your iOS app has a maximum of 50 advertising slots shared across all campaigns, and each campaign consumes up to two, one per creative pack type. The more campaigns you run, the faster you burn through them. Running past the limit degrades SKAdNetwork reporting accuracy, so the best practice is to keep all campaigns for one app inside a single organization to stay within it.

Budget

You'll normally see the dollar amount allocated to that campaign.

Countries and bids

Expand the campaign for a breakdown by territory, showing current ROAS goals per country and how they're performing over time. Remember the tradeoff: higher goals restrict volume, lower goals open it up. You can tune this per market.

Comparing results

Here's something important when looking across campaigns.

A tier 1 campaign targeting the US, UK, and Australia will typically show a higher eCPM and a higher CPI than campaigns targeting broader regions. Bids are more competitive in those markets because players there spend more. You pay more per install, but lifetime value is typically higher.

The same logic applies between platforms. iOS users have historically had higher lifetime value*, so cost per install is higher there too.

So when comparing campaigns, compare tier 1 iOS against tier 1 iOS. Not tier 1 iOS against worldwide Android. Otherwise the numbers will mislead you.

Spotting creative fatigue

Inside each campaign you can see how individual creatives are performing, and this is where you catch fatigue.

Creative fatigue happens when a creative has been shown so many times to the same audience pool that performance starts to drop. Click rate falls, conversion drops, CPI creeps up.

The historical view is your early warning system. If a creative was performing well three weeks ago and is underperforming now, that's fatigue. Time to swap it out.

A creative test campaign is the best tool here. It gives every creative an equal number of impressions so you can compare performance fairly across your audience and across markets. Use it to find winners before committing budget to a full ROAS campaign.

ROAS is a curve, not a number

Zoom out for a moment. Day 1 ROAS looks completely different from day 28 ROAS, and the difference depends heavily on your monetization model.

Games monetizing primarily through ads (hypercasual, hybrid-casual) see most of their revenue early. A player either watches ads in the first few sessions or they don't. Day 0 and day 7 ROAS windows make sense here.

Games monetizing through in-app purchases (RPGs, strategy, mid-core) have much longer monetization curves. Significant revenue can arrive well after the first week, so day 28 targets are more appropriate.

The mistake to avoid is using a short ROAS window on a game that monetizes slowly. You'll cut campaigns that were actually profitable. You just didn't wait long enough to see it.

Wrapping it up

Now you’ve seen exactly how to measure results on the Unity Ads reporting dashboard. You know where to find your key metrics, what ROAS is actually controlling, how to compare campaigns fairly, and how to spot creative fatigue before it eats your performance.

If you missed the first two guides which went over campaign setup and playable ads, they're worth reading alongside this one. Together the three cover the full picture from launch to optimization.

*Source: Business of Apps, Lifetime Value App Rates 2026 https://www.businessofapps.com/data/ltv-app-rates/, 2026