Integrations
AdMob ad revenue
Measure ROAS for ad-funded apps: forward AdMob's impression-level revenue to Traqio from the paid-event callback, and it joins the install that saw the ad.
For an ad-funded app, ad revenue is the revenue. AdMob reports the value of every impression to the app through its paid-event callback; forwarding it to Traqio joins that revenue to the install that saw the ad — and from there to the campaign that drove it — so a game or a utility gets a real ROAS per campaign, not just an app-wide total.
Which SDKs
trackAdRevenue is available in the React Native, Expo and Capacitor SDKs (the JavaScript engine). The native, Flutter, KMP, MAUI and Unity SDKs do not report ad revenue yet.Set up#
Turn on impression-level ad revenue#
In AdMob: Settings → Account → Reporting → impression-level ad revenue.
Forward each paid event to the SDK#
// In AdMob's paid-event callback, once per impression: Traqio.trackAdRevenue({ valueMicros: 21500, // the AdValue in micros — 0.0215 of the currency; never pre-round it currency: "USD", // ISO 4217, as AdMob reports it precision: "estimated", // AdMob's precisionType adUnitId: "ca-app-pub-0000000000000000/0000000000", adFormat: "rewarded", adSourceName: "AdMob Network", // the mediation source that filled it, when known });Pass the value in micros as AdMob gives it — never pre-rounded: a single banner impression is worth a fraction of a cent. Add the format and the mediation source when you have them; they are kept with each impression.
Test with test ad units#
Traqio.init({ /* … */ testAds: true }); // while on AdMob's test ad unit idsTest impressions appear in the console as TEST — the pipe is proven — and are never counted as revenue.
Go live#
Switch to real ad unit ids and remove
testAds. The AdMob card turns to Receiving impressions and the revenue reaches the revenue, ROAS and cohort reports.
How Traqio handles it#
| Aspect | Behaviour |
|---|---|
| Batching | impressions are queued on the device and sent in batches of up to 100 |
| Double counting | each batch has an id persisted with the queue — a retry after a crash is recognised, never counted twice |
| Attribution | matched to the install by the SDK's device id, else by your user id; unmatched revenue is still recorded, as unmatched |
| Storage | summed per currency and per UTC day of the impressions, so cent fractions are not rounded away |
| Ad networks | never forwarded to Meta or TikTok: thousands of tiny values would distort the purchase signal their bidding uses |
| iOS | ad revenue also moves the SKAdNetwork conversion value, like a purchase |
Frequently asked questions#
- Why doesn't Traqio use the AdMob Reporting API?
- Because it cannot be attributed. The Reporting API gives daily totals by app, country, ad unit and source, with nothing that identifies an install, so it could only produce an app-wide total — never revenue per campaign. The paid-event callback fires on the device, per impression, where the install is known.
- Will Traqio's ad revenue match the AdMob dashboard?
- Closely, not exactly. Most mediation sources report an estimated value per impression (precision: estimated), so totals drift a few percent from the final AdMob payout, in both directions.