Where do I find the Apple Ads report?
Open the top-level Apple Ads item of the dashboard sidebar (path/apple-ads-report). The report is not an item inside the Analytics menu. The browser page title reads Analytics — Apple Ads, and a campaign page is titled Analytics — Apple Ads Campaign.
The Apple Ads report is enabled on all accounts, except a few that keep the legacy page. If you see only Analytics → Apple Search Ads and no top-level Apple Ads item, your account does not have the Apple Ads report: contact support. An account without the Apple Ads report that opens an Apple Ads report link (/apple-ads-report or a campaign page) is redirected to the legacy Analytics → Apple Search Ads page (/apple-search-ads). For accounts that have the Apple Ads report, the legacy Apple Search Ads entry under Analytics is hidden and its URL redirects to the Apple Ads report.
In the dashboard, users with the Developer role cannot see report data: the report and campaign pages show Apple Ads data is not available for your role and ask them to contact the Owner or Administrator for a role change. The Owner, Administrator, Manager, Analyst, Viewer and Observer roles can view the report with no extra permission beyond access to the project.
What do the controls in the report header do?
The report header holds, in this order:
The same controls appear on the campaign page.
The ⋯ menu contains How metrics are calculated for everyone. Owners and Administrators (users who may manage the Apple Search Ads settings) also see Spend history…, on accounts with campaign management enabled. On the main report, Setup guide appears after the setup guide was dismissed or completed. The menu is hidden when it has no items.
Which levels and pages does the report have?
The report has exactly three level tabs: Campaigns, Ad groups and Keywords. There is no ad (creative) level and no search-terms level. Ads appear only as the Ad filter, which narrows the Qonversion cohort and does not filter Apple spend (see How do filters work?). Each campaign has its own page (/apple-ads-report/campaigns/<id>) with an ad-groups table and a keywords table below it. By default the top ad group on the page is selected, so its keywords show without any click. Selecting another ad-group row, or ticking several, shows the keywords of those ad groups. After you clear the selection with ✕ on the selected-group chip, the keywords area reads Pick an ad group to see its keywords.
Which periods can I select, and which time zone do they use?
The period picker offers the presets Last 7 days, Last 30 days, Last 3 months, Last 6 months and Last 12 months, a field to enter a custom number of last days, and a custom date range picked in the calendar or typed asdd.mm.yyyy.
Report periods are whole UTC days. The from and to dates are inclusive and snapped to UTC day boundaries, and every day boundary in the report (cohort install dates, window boundaries) is UTC.
When the selected period includes today (UTC), the period control shows a live marker. Its tooltip reads: “The selected period includes today — the last day is incomplete and spend syncs with a lag, so today’s numbers keep changing”.
Read ROAS and CAC
The report has two kinds of return and cost metrics: to date columns over the whole period and cohort window columns (Dn) cut at a fixed number of days after install.
No payers means CAC cannot be calculated — unavailable, not $0.
In Growing mode the install dates are the whole selected period and events count up to today; in Mature mode only closed install dates count. See Growing and Mature cohort windows.
Growing and Mature cohort windows
The Cohort windows control switches every ROAS Dn / CAC Dn value on the page (cards, chart and tables) between Growing and Mature. Growing is the default. Your choice is saved per user and applies across all of your accounts and projects.When is a Mature window closed?
In Mature mode a window uses only install dates that are at least n + 5 full UTC days old (window length + a 4-day maturation buffer + the boundary day), and never fewer than 7 days. For example, D7 for installs on 1 October (UTC) needs 12 days, so those installs count in D7 from 13 October (UTC).
Before any date has closed, the hatched cell shows what has accrued so far. While a selected window has no closed install day yet, its columns get a second header row
<Dn> cohort with final values <date> — the UTC date its first final values are expected; meanwhile its cells show the provisional accrued value (hatched) or — when there is none.
The ROAS Dn and CAC Dn summary cards can show recalculated through <date>: the UTC date by which the whole period’s cohort set for that window is settled. It is an upper bound taken from the period’s last day, so rows can settle earlier. Lifetime has no such date.
When a window’s first values are still pending, the cumulative columns get a header group To date / not closed, which explains that they include immature cohorts and are not directly comparable with closed Dn windows.
Lifetime never closes: its columns are always shown muted. In Mature mode it covers cohort days past the maturation buffer, in Growing mode every install of the period to date.
Even a closed window can still change: a refund is booked against the window of the purchase it cancels, so a closed Dn figure can go down later when refunds of purchases inside it arrive. What settles at closing is which installs belong to the window.
Which cohort windows can I select?
Cohort windows available: D0, D3, D7, D14, D30, D60, D90, D180, D365 and Lifetime. D3, D7 and D30 are the cohort windows selected by default. On the report list their ROAS/CAC columns start hidden and are shown from Columns (group Cohort windows); the campaign page shows them by default. The window selection travels in the page link. Each window adds two independent columns named<metric> <window>, for example ROAS D30, CAC D30, ROAS Lifetime and CAC Lifetime. The same names are used in the table header, the CSV header, the Columns picker and the summary cards.
Dn counts events up to the end of the UTC day “install date + n”: D0 means through the end of the install day, D7 through the end of the 7th day after the install day. Lifetime is unbounded (cumulative to date). Dn windows use calendar days in UTC: an install late in the UTC day gets a shorter Dn than an early-morning install, the same convention as Qonversion’s cohort analytics.
Why are closed-window ROAS and CAC not available yet?
When no daily spend history has been recorded for the project yet, the page says Closed-window ROAS and CAC aren’t available yet. Its detail names how many days of history the shortest and longest selected windows need, for example with D3 and D30 selected: “We only recently started recording daily spend for this project — D3 needs 8 days of it, D30 needs 35 days. They’ll appear on their own.” Owners and Administrators get an Import spend history… button instead of waiting. How spend history is recorded and imported is described in How fresh is Apple Ads data in Qonversion, and how do I fill in spend history?.Understand “—”
An em dash — in a cell means no value — never 0)**.
No payers in a CAC Dn cell is a separate state: the window has spend and installs, but nobody has paid.
Revenue basis and refunds
Gross revenue is what customers paid. Net revenue is store proceeds after the store commission and, where the store reports it, tax. Both are already net of refunds — the Gross/Net toggle changes the deduction basis, not refund treatment. Where the store has not reported tax (older history and stores that never report it), Net revenue falls back to the pre-tax proceeds, so a project with partial tax coverage reports Net on a mixed basis. The toggle changes Revenue, Refunds, ROAS (both to date and the Dn windows), ARPU and ARPPU. CAC Dn and Cost per trial use spend only and do not change with it. Revenue excludes trial-period transactions and is net of refunds within the sales event set (trial converted, subscription started, renewed, refunded, partially refunded, in-app purchase, in-app refunded). Revenue is cumulative to date: only the install date is limited by the selected period, so the number keeps changing after the period ends — it grows as the cohort keeps paying and can go down when refunds arrive. The Refunds column is the refunded amount of the cohort, cumulative to date, in the selected Gross/Net basis. Revenue is already net of these refunds, so do not subtract the Refunds column from Revenue again. In window revenue (ROAS Dn) a refund is booked against the window of the purchase it cancels, so Dn revenue only grows with n. Window revenue excludes trial-period transactions and nets refunds — a known difference from the Cohorts page, which counts trials and shows refunds separately.Read spend in the report currency
When spend is withheld because a rate is missing, CPA, CPT, CPM, ROAS, CPS, Cost per trial and window ROAS/CAC are withheld too, while installs, taps, impressions and cohort metrics stay available. The report page shows no dedicated notice for this: the affected cells show — with the generic tooltip No data attributed (≠ $0), and only the CSV export names the missing dates and currencies.
With a non-USD Apple Ads account currency, report spend is converted local → USD at each spend date’s rate and then USD → display currency at one period rate, so it can differ slightly from the local-currency spend shown in Apple Ads even when the display currency equals the account currency.
What do the Total and Unallocated rows mean?
The Ad groups and Keywords tabs have no Total row. In window columns, the Total row counts each paying user once over the whole report, not as the sum of the rows (a user attributed to two entities counts once). The legend reads Unallocated = Apple spend with no matching attributed campaign.
Row filters (State & delivery, search, Spend ≥, metric filters) do not change the Total row, which is why the table hides it while any of them is active.
How do filters work?
The filter picker offers Country, Media source, Campaign, Ad (creative name), Locale, Device (model), Device ID, OS version, SDK version, User ID and Q User ID. On the Ad groups and Keywords levels it also offers Ad set (ad group). It also offers State & delivery and metric filters. Product, purchase currency and app version filters are not offered.
Filters can be switched to exclude values (is none of), except Country, Campaign and Ad group — excluding those is rejected because Apple spend cannot be excluded the same way.
Why are ROAS Dn and CAC Dn dimmed when I filter?
With any filter other than Country active, ROAS Dn and CAC Dn values are dimmed in the columns and on the summary cards, in both Growing and Mature mode, and the column tooltips explain why. For filters that narrow only the Qonversion cohort (Media source, Ad, device and customer filters) the filter narrows revenue and payers but not the spend they are divided by, so ROAS Dn reads too low and CAC Dn too high. Read these two on the unfiltered report. Campaign and ad-group (Ad set) filters depend on the mode. In Mature mode, ROAS Dn and CAC Dn divide by the daily Apple spend history, which only Country narrows, so these filters leave that spend unfiltered too. In Growing mode, ROAS Dn and CAC Dn divide by the live Apple spend of the selected period, which Campaign and ad-group filters do narrow, so under those filters the values are dimmed and the tooltip warns although that spend is filtered.Which row filters are there?
Row filters affect the table only: the summary cards and the Unallocated row stay whole-report, and the Total row is hidden while any row filter is active.
With attribute filters active, the summary cards reflect them (Summary reflects active filters when only Country filters are active, or Summary uses active filters · window exceptions are marked when any other filter is active; the ROAS Dn and CAC Dn card values are then dimmed). The Spend card follows only Country, Campaign and ad-group filters. With row filters active the strip notes Row filters affect the table only.
How is the table sorted?
Every metric column except Budget usage (including the ROAS Dn / CAC Dn window columns) is sortable in both directions. Rows with no value always go last. Sorting by a ROAS Dn / CAC Dn column puts rows without a value last, then ranks significant rows (at least 3 paying users and at least 30 attributed users in the window) before the rest, then closed windows before maturing ones, and only then orders by the value. This holds in both sort directions.Which columns are shown by default, and how do I add more?
In the report table no columns are pinned by default, and no cohort-window (ROAS Dn / CAC Dn) columns are shown until you add them. Add any other column through Columns; the layout is saved per level. The Columns picker groups columns into Entity state, Cohort windows, Apple report (“Delivery and cost exactly as Apple Ads reports it”) and Qonversion (“Cohort behaviour and revenue measured by Qonversion”).
Every column is defined in Apple Ads report columns and metric definitions.
How do I export the report to CSV?
Export CSV downloads the current level with the current filters, search and sort, using exactly the visible columns in their on-screen order and values formatted as in the table, up to 5000 rows. When more rows exist, the file starts with# truncated at X of Y rows.
When non-USD Apple spend was converted, the CSV starts with a currency comment that begins
# Converted to USD at daily rates; and lists the source, the date range, the currencies, the display currency, the display method and the display rate date. If some days had no exchange rate, the caption reads “Spend unavailable for N days: no exchange rate for” the currency, and a second line lists them: # Spend FX unavailable: <date> <currency>; ….
For projects with per-app scope, the CSV includes a # Apple app scope: line with the project, the app id (or unproven) and a version hash, and, when the campaign mapping is incomplete, a # Apple metrics unavailable: line with the reason.
What does per-app scope change in my report?
Per-app scope is not on for every project: it applies only to projects it has been enabled for. To find out whether it can be enabled for your project, contact support. On accounts with the Apple Ads report only (without campaign management), report data is available only for projects with per-app scope. For projects with per-app scope, the report includes only the Apple Ads campaigns that Apple confirms promote the project’s iOS app, so spend is split per app; campaigns of other apps in the same Apple Ads account are excluded. When Apple has not confirmed which campaigns belong to the app (or campaign data is incomplete), the page shows Some spend and return metrics are unavailable. with an explanation such as “Apple hasn’t confirmed which campaigns belong to this app. Affected totals, ROAS and acquisition costs are withheld. Confirmed campaign values remain available.” and a Request again button. While Apple’s campaign data for the app is incomplete, the Total and Unallocated rows show no spend-based values (Apple metrics, ROAS, CPS, Cost per trial — withheld, not zero). When the app’s campaign list itself is not confirmed, the Total row’s cohort metrics are withheld as well. Rows of confirmed campaigns keep their values.What does “How metrics are calculated” show?
How metrics are calculated in the ⋯ menu opens a dialog of three paragraphs: the population definition, the revenue definition and the Gross/Net explanation. The cohort population is installs attributed to Apple Ads (the attribution source is one of Apple’s Search Ads sources and the campaign is known), grouped by install date inside the selected period. How installs are attributed is described in How do I collect Apple Ads attribution with the Qonversion SDK?.What do the empty and error states mean?
All page-level data problems show in one strip above the table.
Other health-strip messages (spend history, “Updated …” indicator) are listed in How fresh is Apple Ads data in Qonversion, and how do I fill in spend history?.
Read Budget Usage
Budget usage is available on the Campaigns level only: spend over the last 7 complete UTC days / (7 × the campaign’s current daily budget). It is an operational window independent of the selected report period and cannot be summed, sorted or filtered. Bands, reasons for a missing reading and the details dialog are described in What does the Budget usage column show for Apple Ads campaigns?.Manage campaigns, bids, and budgets
On accounts with campaign management enabled, you can pause and resume campaigns, ad groups and keywords, change keyword bids and change campaign daily budgets from the report; on accounts with the report only, it is read-only. This requires the Manage Apple Ads campaigns capability; account owners and administrators have it through their role, and every other role gets it only when an owner or administrator grants it. Limits, confirmations and errors are described in How do I pause campaigns and change bids and budgets for Apple Ads in Qonversion?.Understand campaign-management limits
Each project can make at most 10 changes per rolling minute and 60 per rolling hour, and changes that can increase spend are limited to 20 resumes (enables), 20 bid increases and 10 daily-budget increases in any rolling 24 hours. In the dashboard, one change cannot raise a bid or daily budget to more than 3× the current value shown in the report; all limits are listed in What limits apply to campaign changes?.Known limitations
Report dates and historical spend
Report periods, cohort install dates and window boundaries are whole UTC days. Qonversion records daily Apple Ads spend history from about the time you connect, and earlier history is not backfilled automatically; Owners and Administrators can add older days through Spend history… in the ⋯ menu (on accounts with campaign management enabled). Details are in How far back does Apple Ads spend history go after I connect?.Compare with the Apple Ads console
Qonversion’s report differs from the Apple Ads console by design. Spend, impressions, taps and installs come from Apple, but subscriber metrics (trials, payers, revenue, ROAS) cover only installs that Qonversion attributes to Apple Ads with a known campaign, grouped by install date, and every date is a UTC day. Every reason for a difference is listed in Why don’t Qonversion’s Apple Ads numbers match the Apple Ads console?.Related pages
- Apple Ads report columns and metric definitions — the formula and notes for every column of the report.
- How fresh is Apple Ads data in Qonversion, and how do I fill in spend history? — how spend history is recorded and imported, the “Updated …” indicator and differences from the Apple Ads console.
- What does the Budget usage column show for Apple Ads campaigns? — the Budget usage (7d) reading, its bands and reasons.
- How do I pause campaigns and change bids and budgets for Apple Ads in Qonversion? — pausing, resuming, bids, daily budgets, permissions and limits.
- How do I connect Apple Ads to Qonversion? — how to connect your Apple Ads account to a Qonversion project.