Know which ad actually paid for your subscribers.

Sourceline connects your ad spend to real RevenueCat revenue, trials, conversions, renewals, refunds, so you see true ROAS per channel and creative, not just installs.

See how it works

No credit card · 5 minutes to connect

Real ROAS by channel

Platform-reportedSourceline (real)
Meta
2.1x
1.3x
TikTok
1.8x
0.9x
Google
1.4x
1.4x

Meta says 2.1x. Once trials cancel and refunds land in Stripe/RevenueCat, TikTok's ROAS is under 1x, the exact spend that should get cut first.

Synced from RevenueCat · updated daily

Everything between ad spend and Stripe payout.

Sourceline turns RevenueCat events and ad-platform spend into the numbers that decide next month's budget.

Meta1.3x
TikTok0.8x
Google1.4x

Channel & campaign ROAS

Realized revenue against spend, not trial starts dressed up as conversions.

D1D7D30D90

Cohort LTV curves

Day 1/7/30/90 revenue per install cohort, so you know payback period before you scale.

Creative #14: "Free trial"

TikTok · Winter Promo

1.6x

Creative-level attribution

See which ad is paying for itself, not just which platform. Kill the creative, not the campaign.

#growth-alerts

TikTok: Winter Promo dropped to 0.8x real ROAS

Alerts that matter

Slack or email the moment a campaign’s real ROAS drops below your threshold.

Today, ad platforms lose sight of a subscriber the moment they open your app. A trial start reads as a conversion, the cancellation three weeks later reads as nothing, and the campaign that looked like your best one is quietly the reason your blended CAC keeps climbing.

Not another platform to onboard your team to.

AppsFlyer and Adjust are built for teams with a dedicated growth analyst. Sourceline is built for the one person deciding whether to keep spending on Meta.

AppsFlyer / Adjust
Sourceline
Getting started
Sales call, SDK integration, contract review
Paste an API key, add a webhook. Five minutes.
Pricing
Custom quote based on MAU or spend tier
Flat monthly price, shown on this page
Dashboard
Dozens of reports built for a dedicated analyst
One table: which campaigns are paying for themselves
Built for
A growth team with someone whose job is this tool
The person who built the app and also runs the ads

We still do the hard part behind the scenes, trial state, refunds, real conversion tracking. The dashboard just does not need to show its work.

Three steps, five minutes.

Paste a read-only RevenueCat API key. We pull trials, conversions, renewals, and refunds. Nothing writes back to your account.

RevenueCat API key

rc_live_••••••••7f2a

Connected

Built to respect the privacy rules that started this problem.

Read-only by default

Your RevenueCat and ad-account keys are read-only. Sourceline never writes back to your accounts.

No device fingerprinting

Attribution is done server-side from spend and click IDs you already have, no SDK, no extra tracking prompt for your users.

ATT / SKAdNetwork-safe

Nothing here relies on device-level identifiers Apple has already restricted. It works within the privacy rules that broke everyone else.

Revoke access anytime

Disconnect any account in one click. Your data export leaves with you. Nothing is held hostage.

Runs on the stack you already have.

No new SDK to ship. Connect the accounts you're already using.

RevenueCatMeta AdsTikTok AdsGoogle AdsApple Search AdsSlack

Priced for the spend you actually track.

Free while we're in private beta. These are the plans we'll launch with.

Starter

$0/mo

Up to $500/mo tracked ad spend

  • 1 app
  • 7-day data history
  • Channel-level ROAS
  • Email support
Join the beta
Most popular

Growth

$39/mo

Up to $10k/mo tracked ad spend

  • 3 apps
  • 12-month data history
  • Campaign & creative-level ROAS
  • Cohort LTV curves
  • Slack & email alerts
Join the beta

Scale

$99/mo

Unlimited tracked ad spend

  • Unlimited apps
  • Unlimited history
  • API access
  • Priority support

Questions worth asking upfront.

Stop guessing which ad pays for itself.

Join the private beta and connect RevenueCat in five minutes. Free while we're in beta.