Open-source Android SDK

Stop paying for bot installs.

AdHedge checks every Android install with Play Integrity and shows what each ad network cost you per real install.

  • No Android ID, IMEI or runtime permissions
  • Free up to 1,000 verified installs/month
AdHedge console, Reconciliation: 474 installs reported by five ad networks, 263 Trusted, 44.5% reported but not Trusted, split into 125 that opened and failed checks and 86 that never opened.

Apps running Install Trust

  • Pulse
  • Quartra
  • Sift

What it catches

Every install gets a verdict and a reason.

Stale builds
Installs running a build Play stopped serving. Farms replay old APKs.
Sideloads dressed as Play
Installer says Google Play. Play's license check says no.
Emulators and test rigs
No device integrity, ADB on, test-keys builds.
Sessions with nobody in them
Opened once. Zero taps. Never back.
Reinstall churn
Same device inside 90 days. Billed once.
Installs that never opened
The network counted it. Your app never saw it. Upload their report to see the gap.

Your funnel

Already optimizing on revenue?

Every rate you trust is divided by installs.
Fix the denominator and your install-to-paid, D1 and ARPI change.
Your bidder funds placements before your revenue event fires.
A verified install is the earliest signal that starves a farmed placement. Bidding steers from about 10 real players a day.
Half of fraud lands in organic.
Your paid lift is measured against a baseline that isn't real. Organic installs get a verdict too.
Show ads? Those installs are also your invalid traffic.
Same devices, same ad account. Every install carries its verdict, so you can count them.

Install-to-paid

2.1%

reported, on 474 installs

3.8%

on 263 Trusted installs

Say 10 of the installs in the Reconciliation shot above paid. Same 10 people, two denominators.

Organic share of fraudulent installs, 52%: AppsFlyer, State of Fraud for Marketers 2026.

Product

See what every network really delivered.

Cost per real install, by campaign

Upload a network's install report. See reported installs, first opens, Trusted installs and ad spend per Trusted install for every campaign.

Installs that opened and failed checks are counted apart from installs that never opened.

Campaigns table: reported installs, first opens, Trusted installs, never opened, ad spend and ad spend per Trusted install for six campaigns across Google Ads, Unity Ads, AppLovin, TikTok Ads and ironSource.

Every verdict shows its work

Each install lists its reason codes, what they mean and the value measured. Verdict history keeps every revision and the thresholds it used.

Send a network the flagged installs as an evidence pack: a summary PDF and every install as CSV.

Install detail: three negative reason codes with tier and meaning, and a verdict history of three revisions from pending to SUSPECT.

A bill you can check line by line

Every new install lands on a line: billed, credited or never billed. An install downgraded after billing comes off the bill.

Billing statement: 1,295 new installs, 819 Trusted, 7 credited, 812 billable, with unverified, suspect, reinstalls and pending never billed, and a projected invoice of $99.

How it works

One dependency. One listener.

  1. 01

    Add the SDK

    A repository, a dependency and a routing key, by hand or by your coding agent. Link a Cloud project in Play Console. Every step.

    maven("https://maven.adhedge.io")
    implementation("io.adhedge:install-trust:0.4.0")
  2. 02

    Ship your next build

    Every new install is checked on first launch and gets a verdict.

  3. 03

    Keep your revenue goal

    Your listener fires verified_install on a final TRUSTED verdict for a new install. Add it as a conversion your bidder learns from. Bidding steers from about 10 real players a day.

Privacy

What we never collect

No hardware IDs. No permission prompts.

Read the data-safety sheet
  • No package list.
  • No contacts, precise location, or phone permissions.
  • No Android ID or advertising ID.
  • No IMEI, serial, MAC, or SSID.
  • No touch coordinates.
  • No tracking across apps.
  • No stored Play Integrity tokens.
  • No keystrokes or screen content.

Pricing

Bots are free. You pay for the people.

Flat price up to a cap, then $0.03 per verified install. Everything else is free.

Free

$0 /month

Up to 1,000 verified installs a month. No card.

Verdicts, reconciliation and evidence packs keep working past it.

  • Verdicts with reason codes
  • Reconciliation view (CSV upload)
  • Evidence pack export
  • A verdict for your conversion event
Start free
Pro

Pro

$99 /month per app

For apps past 1,000 verified installs a month. Agencies get 20% off.

  • Everything in Free
  • 5,000 verified installs, then $0.03 each
Get early access to Pro
Verified installs / monthFlatPast the capMonthly total
800$990 × $0.03$99
5,000$990 × $0.03$99
30,000$9925,000 × $0.03$849
200,000$99195,000 × $0.03$5,949

Pro pricing, per app. You never pay for unverified installs, existing users, or reinstalls.

FAQ

Questions we get

Does this block real users?
No. The SDK blocks nothing: it tells your app a verdict and your app fires its conversion. Rooting alone never makes an install SUSPECT.
Can I use this for an invalid-traffic claim?
Yes. The evidence pack exports device facts and dates for every flagged install that opened your app.
What do I set up in Google Cloud?
Link a Cloud project to your app in Play Console and enter its project number in Setup. Enable the Play Integrity API in that project, then grant the service account Setup shows the Play Integrity role. Setup shows both steps before you save. Step by step.
What does it send home?
Install facts, device build values and hardware figures, one Play Integrity token, and touch counts with session timing. No Android ID, IMEI or advertising ID. Every field, with its Android source and how long it is kept: data safety.
Does it slow my launch?
No. Its work runs on one background thread, and it adds under 120 KB after R8.
What about my existing users?
They get a verdict and never hit your bill. Your listener skips them with isNewInstall().
Does it work with AppsFlyer, Adjust, or Firebase?
Yes, and with Meta and TikTok. Your app fires verified_install through whichever SDK it already ships. Set it as your primary conversion. How.
Can a contractor see just one app?
Yes. Scope a member to named apps and every other app stays hidden from them.
Is it open source?
The SDK and the wire schema are Apache-2.0. Scoring runs on our side.

Stop paying for installs nobody made.

Early access for Android apps buying installs.