The MMP that shows its work
Meta says 40.TikTok says 25.You got 12.
Three dashboards, three answers, and a spreadsheet where you try to reconcile them. Traqio ties each install to the ad that paid for it, joins your real revenue to your real spend, and shows you the working.
Free up to 1,000 conversions a month. No card, no call.
Deterministic on Android · SKAN on iOS · Meta CAPI + TikTok Events built in
One campaign, one day, three sources
Sample dataMeta Ads Manager
40
installs claimed
TikTok Ads Manager
25
installs claimed
RevenueCat
12
paying users
Traqio
38attributed installs
12 payers · $214 revenue · 1.78× ROAS — each one traced to the ad that paid for it.
The calculation
ROAS is one division. Here are both of its halves.
Attributed revenue over ad spend, per campaign, ad set and ad. Nothing is modelled and nothing is smoothed — and every figure below adds up, which you are welcome to check.
Blended ROAS, last 30 days
2.14×
Revenue comes from your app's events and your RevenueCat webhook, joined to the install that earned it. Spend is pulled daily from the Meta and TikTok marketing APIs, in the ad account's own billing currency.
Per campaign
Meta·Prospecting
ROAS 2.63×
$8,420 attributed revenue
$3,200 ad spend
Meta·Retargeting
ROAS 3.64×
$5,100 attributed revenue
$1,400 ad spend
TikTok·Spark Ads
ROAS 1.52×
$3,960 attributed revenue
$2,600 ad spend
TikTok·Broad
ROAS 0.75×
$1,120 attributed revenue
$1,500 ad spend
Spend is stored at all three levels, and every read filters by level. An ad's spend is already inside its ad set's, which is already inside its campaign's — summing the table would triple the denominator and cut every ROAS to a third. There is a regression test for exactly that.
How it works
One install, four hops, nothing fingerprinted.
Our click id is written into your tracking link and read back after the store round-trip. That is the entire mechanism: no device graph, no probabilistic match, no cross-app identifier.
- 1
The click
Someone taps your ad on Meta or TikTok. Your tracking link carries our click id.
clk_8f2a3c - 2
Google Play
The Install Referrer carries that id across the store round-trip — the one place Android hands it back intact.
clk_8f2a3c - 3
First open
The SDK reads the referrer once, sends the install, and never touches the advertising id or the pasteboard.
clk_8f2a3c - 4
The join
The install is matched to campaign, ad set and ad on the network's own ids. Deterministic: same input, same answer, every time.
clk_8f2a3c
iOS works differently and we will not pretend otherwise. Apple limits everyone to SKAdNetwork's aggregated postbacks there — we verify Apple's signature, decode the conversion value against your mapping, and report modelled revenue separately from measured revenue.
Why you can believe the number
We would rather show the mechanism than ask for your trust.
We are new, so there are no customer logos to put here and we are not going to borrow anyone else's. What we can do instead is open the box: here is how the number is made, and here is where it can be wrong.
Two senders, one conversion
During a migration you will run us and the network's own SDK at the same time, so every purchase is sent twice. If the two senders disagree on the event id, your conversions double and every ROAS you read is half the truth.
Your app's Meta SDK
sends the purchase from the device
event_id tq1_9c4e17b0a2f8Traqio's server
sends the same purchase via the Conversions API
event_id tq1_9c4e17b0a2f8Meta
conversions counted 1
Same event id, so the second one is discarded. One resolver feeds both connectors, and the id survives our own HTTP retries byte for byte.
Both platforms dedupe on the event id for 48 hours. After that, the same purchase legitimately counts again — that is not a bug, and we would rather say so than let you find out.
Where our number can be wrong
Every measurement tool has a list like this. Most do not print it on the homepage.
- Ad revenue is an estimate
- AdMob reports revenue per impression on the device and tells us how precise each figure is. It will drift a few percent from your actual payout. We chose it anyway, because the aggregate Reporting API cannot be attributed to a campaign at all.
- Spend moves for about three days
- Ad networks restate spend after the fact — late-billed impressions, invalid-traffic credits. We re-pull a rolling window instead of freezing the first number they gave us, so yesterday's ROAS can still shift slightly.
- iOS is aggregated, for everyone
- SKAdNetwork is coarse, delayed and privacy-thresholded. Anyone promising you device-level iOS attribution is describing something Apple does not allow.
- Organic is what is left over
- An install we cannot tie to a click is recorded as organic, not assigned to the nearest campaign. That makes organic a real bucket rather than a rounding error, and it is why our attributed totals are conservative.
What you see
Your cohorts start on the day the install happened.
Cumulative revenue per user, by day since install. Vendors differ on whether day zero is counted. We count it.
Traqio — from D0
Cumulative ARPU, one install-day cohort
D0 $0.42
D7 $3.10
Cohorts that start at D1
The install day is not in the table
D0 is missing — and it is not empty, it is unreported.
In this cohort, 14% of the first week's revenue lands on install day. A table that opens at D1 never shows it to you — it shows a smaller number and calls it the total.
Pricing
Three plans. One product.
The free plan is not a trial and not a preview of the real thing. It is the real thing, with a volume cap. The plans differ in how much you send, never in what you get.
Free
$0
up to 1,000 conversions / mo
- Deterministic install attribution
- ROAS per campaign, ad set and ad
- Meta CAPI + TikTok Events forwarding
- SKAN conversion values and postbacks
- RevenueCat and AdMob revenue
- Retention and ARPU cohorts from D0
Pay-as-you-go
$0.05 / conversion
after the first 1,000 each month
- Deterministic install attribution
- ROAS per campaign, ad set and ad
- Meta CAPI + TikTok Events forwarding
- SKAN conversion values and postbacks
- RevenueCat and AdMob revenue
- Retention and ARPU cohorts from D0
Enterprise
Custom
volume rate, same product
- Deterministic install attribution
- ROAS per campaign, ad set and ad
- Meta CAPI + TikTok Events forwarding
- SKAN conversion values and postbacks
- RevenueCat and AdMob revenue
- Retention and ARPU cohorts from D0
That list is identical under all three plans, and that is the whole point. What a larger customer negotiates is the rate — never the product.
A conversion is an attributed install, or a post-install event you chose to measure. Organic installs we simply observe are free. Billing is not switched on during early access, so nothing is charged today.
Straight answers
What Traqio is not yet
We just told you where our number can be wrong, so it would be strange to hide what the product does not do. Here is the honest list.
- Android is where attribution is deterministic. On iOS you get SKAN, like everyone else.
- Meta and TikTok are the networks we support. Not Google Ads, not Apple Search Ads.
- One SDK is ready to ship today, verified end to end on a real device. The others exist in the repo but are not released — the install guide says which is which, and how far each one is proven.
- We are not a certified measurement partner at Meta or TikTok yet, so we are not in the MMP drop-down inside your ads manager.
- Billing is not wired. The free tier is genuinely free right now, because there is nothing to charge you with.
No dates attached, deliberately. A roadmap with missed dates is worth less than a clear list of what is true today.
FAQ
The questions you were going to ask
- Why not just use AppsFlyer?
- If you are already on it and it works, stay. The difference that matters is where ROAS lives: on the large platforms the cost integrations that make ROAS complete sit in the enterprise tier, behind a sales call. Here they are in the free plan, because there is only one product.
- Do I have to integrate another SDK?
- Yes — one package, an init() call and a track() call. We would rather say that plainly than bury it. Today you install it from a build we send you rather than from a public registry, because we have not published it yet.
- Can I trust your numbers if you have no customers?
- Do not trust them — check them. Every figure on this page shows its inputs, the attribution is deterministic rather than modelled, and the places our number can drift are listed above in plain language.
- What does it cost?
- 1,000 conversions a month free, then $0.05 each, with a negotiated rate at high volume. No minimum and no annual contract. No payment provider is wired yet, so nothing is billed during early access.
- Other plans are free at my volume. Why pay for this one?
- Some free tiers in this category are larger than ours, and our comparison pages say so in each vendor's own words, with the date the page was read. What the price buys here is a different thing: one product on every plan, so nothing is taken away as you grow; a rate published before you talk to anyone; and a number that shows the inputs it was built from.
Read further
One page per measurement problem
From attributing an install to the campaign that caused it, to ROAS on RevenueCat revenue — each use case on its own page.
- Attribute every app install to the campaign that caused it
- One ROAS number across Meta and TikTok
- An MMP for indie apps: the same product at every price
- ROAS for your Meta app campaigns
- Attribution + ROAS for TikTok app campaigns
- True ROAS with RevenueCat revenue
- Apple Search Ads attribution and ROAS in Traqio
- Google Ads app campaigns: attribution and ROAS in Traqio
- LTV & ROAS for subscription apps
- ROAS reporting for UA agencies
- Attribution + ROAS for indie mobile games
Point your spend at the ads that actually pay.
Create an account, declare your app, and get an SDK key. It takes about a minute, and nobody will call you.
Free up to 1,000 conversions a month. No card required.
Built and shipped by Khufu FZCO. A real person reads hello@traqio.app.