← All posts
5 min read

Apple Search Ads ROAS: formula, costs and trial timing

Calculate Apple Ads ROAS for a subscription cohort, compare CPI and cost per paid subscriber, and account for refunds, fees and trials that haven't converted yet.

Orange bar chart illustration for Apple Search Ads return on ad spend

Apple Search Ads ROAS is the revenue attributed to an acquisition cohort divided by the ad spend used to acquire it. If $100 of spend brings in $240, ROAS is 2.4x, or 240%.

For a subscription app, the arithmetic is easy. The mistakes usually come from mixing dates, calling gross revenue profit, or counting a trial as though it has already paid.

The ROAS formula

ROAS = attributed revenue / acquisition spend
ROAS (%) = attributed revenue / acquisition spend × 100

Google's ROAS documentation uses conversion value divided by cost. For the calculations here, conversion value means revenue attributed to the selected Apple Ads cohort. These are reporting calculations, not a recommendation to use Google's bidding settings in Apple Ads.

Write a label that tells someone what you counted: "Day-30 gross revenue ROAS, US installs acquired September 1 to 7" is much easier to check than "ROAS: 1.4x".

Keep the following definitions beside your report:

  • Which campaign, ad group or keyword acquired the users.
  • Acquisition dates and country.
  • Revenue observation window, such as the first 30 days after each acquisition.
  • Gross revenue or net proceeds, and how refunds are treated.
  • Currency and conversion method, if spend and receipts use different currencies.

If spend is zero, the ratio is undefined. Mark it unavailable instead of displaying an infinite return.

A worked subscription example

The following numbers are hypothetical and use a single currency. They describe one acquisition cohort after every user has had a full 30 days to produce revenue.

InputAmount
Apple Ads spend$100
Attributed installs50
Trial starts20
Subscribers with a paid conversion8
Gross attributed revenue, before refunds$160
Refunds from those transactions$20
Revenue after refunds, before other deductions$140

From those inputs:

CalculationResult
Gross revenue ROAS: $160 / $1001.6x
Refund-adjusted revenue ROAS: $140 / $1001.4x
Cost per install: $100 / 50$2
Cost per trial: $100 / 20$5
Cost per paid subscriber: $100 / 8$12.50

The $40 difference between refund-adjusted revenue and ad spend still has to cover any remaining fees and costs. Calling it profit would overstate the result.

Count each receipt once. If your revenue export already subtracts refunds, don't subtract the same refund again. Check how transfers and duplicate events are handled before adding up subscription data.

Include collected renewal receipts when they belong to the same acquisition cohort and fall inside the stated observation window. A renewal from an older cohort belongs in that cohort's report.

What counts as good ROAS?

Your break-even point depends on what remains from each revenue dollar and how long you can wait to recover the acquisition cost.

For a simple planning example, suppose 70% of gross revenue remains after all non-ad variable costs. This is an assumed margin, not Apple's fee schedule. Gross revenue must reach $100 / 0.70, or about $142.86, to cover $100 in ad spend. Break-even gross ROAS is therefore about 1.43x.

If you want an additional margin, or fixed costs aren't included, you'll need a higher target. With net proceeds in the numerator, use the costs still excluded from those proceeds rather than subtracting a platform fee twice.

Keep observed and projected ROAS separate. Future renewals may change the result, but a forecast needs its own assumptions about retention, refunds and plan mix. Don't quietly add projected lifetime revenue to a column labeled collected revenue.

CPI, CPA and ROAS measure different things

There is a naming trap in Apple Ads: Apple's average CPA is install-based. It doesn't mean you've acquired a paying subscriber. Apple also distinguishes tap-through and total installs, so keep the attribution basis consistent when comparing reports.

MetricWhat you can diagnose
Cost per installHow much you're paying to bring someone into the app
Cost per trialWhether those users reach and start the subscription offer
Cost per paid subscriberWhat you spend for a user who pays
ROAS at a stated cohort ageHow much attributed revenue has returned so far

Cheap installs can still produce little revenue. Conversely, a higher install cost can be workable if those users pay and stay. Read the costs together before changing bids.

A weak trial rate is a reason to inspect relevance and onboarding. Trials without paid conversions call for a closer look at the offer and the elapsed trial period. Those are diagnostic possibilities; the metric alone doesn't establish the cause.

Give every cohort the same time to convert

A person who starts a seven-day free trial today hasn't had the same opportunity to pay as someone acquired three weeks ago. Keep active trials visible, but don't put their expected payments into observed revenue.

For a day-30 comparison, wait until every acquisition included has reached day 30, or use a report that applies an equal age window to each user. Comparing all September receipts with September ad spend can mix renewals from older users with the cost of newly acquired users.

You can still review delivery and cap spending while a cohort matures. The bidding guide covers hold, lower and pause decisions. Waiting for revenue doesn't require leaving a campaign's budget unchecked.

Check attribution before interpreting missing revenue

Ad spend and subscription receipts need a reliable connection. RevenueCat's Apple Ads integration uses an AdServices attribution token to collect Apple's attribution data and lets you follow subscription revenue over time.

Its current documentation flags a September 2026 limitation: AdServices returns attribution: false for installs from ad groups using age or gender targeting. Missing campaign information in that situation doesn't prove the ads produced no paying users. Check the integration and targeting before drawing that conclusion.

Keep unattributed revenue separate. Allocating it to keywords in proportion to spend would create a modeled estimate, so it shouldn't appear as observed keyword ROAS.

The RevenueCat setup guide covers the integration workflow. The subscription campaign guide explains how to use downstream outcomes when planning a test.

Compare keywords before increasing the budget

A campaign average can hide different results. Use the same revenue basis and cohort age for each keyword, and keep country and subscription plan differences visible where the sample allows it.

For a keyword with acceptable mature economics, impression share can help you investigate whether more visibility is available. It doesn't show whether the next users will pay back at a higher bid.

Save the current spend, revenue basis and cohort age before changing anything. Then compare the additional spend with the revenue those newly acquired users produce after the same observation window.

Sources

Research, analyze, optimize

Find the right keywords, study the competitors already earning attention, and turn that into a stronger App Store page.

Available for macOS 14.6 and above

AppSprint developer 1AppSprint developer 2AppSprint developer 3AppSprint developer 4AppSprint developer 5AppSprint developer 6AppSprint developer 7AppSprint developer 8

Loved by 544 users

Related articles

See all posts →