Android · Google Ads · install referrers

Know when an install came from Search.

Your MMP says “Google Ads.” It doesn’t say which surface. PPC Bridge reads the Play install referrer and answers one question — did this install come from the Search surface, the traffic that converts better and retains longer.

How it works

Three steps, no SDK.

PPC Bridge is a single HTTP endpoint. You keep your app, your MMP, and your data pipeline exactly as they are.

STEP 1

Capture the referrer

A few lines of Kotlin against the Play Install Referrer API at first launch — or replay referrers server-side from your MMP’s raw-data exports. No release needed if your exports already carry them.

STEP 2

POST it as-is

Send the raw string to /v1/detect with your key. Percent-encoded, double-encoded, or a full click URL — we normalize Play’s quirks for you.

STEP 3

Route on the decision

You get search: true/false with a confidence and a versioned mapping. Log it next to your MMP’s attribution and see which “Google Ads” installs were actually Search.

Why Search

Search installs are the premium installs.

Experienced PPC teams keep reporting the same thing: app installs from Google’s Search surface convert better and hold their LTV. The signal that identifies them — gad_source=1 — is sitting in your install referrer today, unread.

AppsFlyer, Kochava and Singular answer “did this install come from Google Ads?” PPC Bridge answers “did it come from Search specifically?”
Complement, not compete

Runs next to the MMP you already trust.

PPC Bridge is not an attribution provider. It classifies one string per install and hands you the answer — a second column in the reporting you already have, not a second source of truth to reconcile.

works alongside AppsFlyer Kochava Singular
The fine print, up front

What we won’t tell you.

Android & web only

iOS has no install referrer, so there is nothing honest to detect. If you send an iOS install, we say unsupported_platform instead of guessing.

Google owns the signal

gad_source is not officially documented and its values can drift. Our mapping is versioned data, promoted only when the evidence corroborates it — never a hardcoded guess.

Surface, not campaign

search: true proves the click surface was Search. It is not campaign-level control, and we won’t sell it as that.

When we’re not sure, we say false.

The API

One endpoint. Bring a referrer, leave with an answer.

Bearer-key auth, JSON in, JSON out, fails closed. Everything below works with a free key — 100,000 requests a month while we validate.

curl# classify one install referrer
curl https://ppcbridge.com/v1/detect \
  -H "Authorization: Bearer dtk_live_…" \
  -d '{"referrer":
   "utm_source%3Dgoogle-play%26gad_source%3D1"}'

# → { "search": true, "network": "search",
   "confidence": "high", … }
Kotlin — capture at first launchreferrerClient.installReferrer.let {
  api.post("/v1/detect",
    body = mapOf(
      "referrer" to it.installReferrer,
      "platform" to "android"))
}
// off your critical path — fire and forget

Privacy by default: we store decisions, not identifiers. gclid and raw signals are echoed back in the response and dropped — never persisted unless you opt in for debugging, and then only for 30 days. Decision logs purge after 90.

Start reading the signal you already have.

Sign in, create a key, and classify your first referrer in the next five minutes.

Get an API key