Install Attribution
Understand Play Install Referrer, fingerprint matching, and privacy on Android.
WarpLink uses two tiers of attribution matching to connect app installs to the links that drove them.
Match Cascade
The SDK tries matching methods in order. The first successful match wins.
| Tier | Method | Signal | Confidence |
|---|---|---|---|
| 1 | Play Install Referrer | utm_source=warplink&utm_content={link_id} | 1.0 |
| 2 | Enriched fingerprint | IP + UA + language + screen + timezone | 0.40–0.85 |
Deterministic Matching (Play Install Referrer)
Used for first-install attribution via the Google Play Store.
When a user clicks a WarpLink URL and is redirected to the Play Store, the referrer URL includes utm_source=warplink&utm_content={link_id}. After install, the SDK reads the referrer via InstallReferrerClient and extracts the link ID for a direct match.
- Confidence: always 1.0
- Requires Google Play Services
- No user permission needed
- 2-second timeout (falls back to fingerprint if exceeded)
Probabilistic Matching (Enriched Fingerprint)
Used when the Play Install Referrer is unavailable (sideloaded apps, non-Google-Play devices).
The SDK collects device signals and sends them to the attribution API. The server computes a fingerprint including the request's IP address and checks for a match.
| Time Since Click | Confidence |
|---|---|
| < 1 hour | 0.85 |
| < 24 hours | 0.65 |
| < 72 hours | 0.40 |
| Multiple candidates | -0.15 per extra |
Interpreting Results
WarpLink.checkDeferredDeepLink { result ->
result.onSuccess { deepLink ->
if (deepLink != null) {
val confidence = deepLink.matchConfidence ?: 0.0
when {
confidence >= 0.5 -> navigateTo(deepLink.destination)
confidence >= 0.3 -> showSuggestion(deepLink.destination)
else -> showOnboarding()
}
}
}
}| Confidence | Recommended Action |
|---|---|
| 1.0 (deterministic) | Route directly to content |
| > 0.5 (probabilistic) | Route to content — high confidence |
| 0.3–0.5 | Show content with confirmation |
| < 0.3 | Show generic onboarding |
Privacy
Signals Collected
| Signal | Purpose | Source |
|---|---|---|
| Accept-Language | Fingerprint | Device locale configuration |
| Screen dimensions | Fingerprint | WindowManager.defaultDisplay |
| Timezone offset | Fingerprint | TimeZone.getDefault().rawOffset |
| User-Agent | Fingerprint | Custom WarpLink UA string |
| Play Install Referrer | Deterministic match | Google Play InstallReferrerClient |
Not Collected
- GAID (Google Advertising ID)
- Android ID
- Location data
- Contacts or personal data
- Cross-app identifiers
All signals are sent over HTTPS and used solely for attribution matching. Play Install Referrer data is read once at first launch and not stored beyond the attribution result.