How do you measure true roas after shifting subscription payments to a web funnel?

When we moved billing to the web, the biggest win was being able to tie ad spend directly to revenue without the app store friction.

We measured ROAS by preserving UTMs, attributing purchase revenue to campaign/creative at checkout, and pulling those events into our analytics. That let us calculate ROAS at campaign and creative level without relying on noisy install metrics.

We also compared cost per paid user and payback period before and after the change. The transparency exposed which creatives actually returned a positive LTV and which ones were inflating install numbers.

How are you calculating ROAS after a web migration? What attribution window and LTV assumptions do you use?

I switched to measuring ROAS from web purchase revenue within a 30 day window.

We track revenue at the purchase moment and tie it to the stored UTM. That gave us a straight ROAS metric per campaign.

Web2Wave’s initial funnel template made mapping those fields easy.

We use 30 and 90 day ROAS but optimize to 30 initially.

Because the web funnel preserves UTMs, we can break ROAS down to creative. That let us stop spend on several high-install creatives that never produced paid users.

measure revenue per visitor not per install

Change your unit of measurement from install to paid conversion.

Track CAC per paid user and compare to LTV using consistent attribution keys. Use a 30 day window for quick iterations and a 90 day window for strategic decisions. Make sure refunds and chargebacks are reconciled back into the ROAS calculation so you aren’t overestimating performance.

We saw big differences when we moved to revenue-per-visitor ROAS. Some channels had 2x better ROAS on web than app install ROAS suggested. Run both metrics side by side for a month to see the gap.

I use campaign revenue divided by ad spend over 30 days.

Remember to exclude refunded purchases from ROAS.