Attribution

Install attribution from the links you already share

WarpLink attributes an app install, or a re-open, to the link click that drove it, matching on the Play Install Referrer, a device identifier, a probabilistic match, or raw device signals, and returns a confidence score with every answer. The result reaches your app in seconds on first launch, with no advertising identifier and no App Tracking Transparency prompt, next to the deep linking and real-time analytics the same SDK already provides.

What is install attribution?

Install attribution connects an app install to the link click that drove it, so you can see which link, campaign, or creator earned each install. WarpLink matches on the Play Install Referrer, a device identifier, a probabilistic match, or raw device signals, and returns a confidence score with every answer, with no click ID for you to carry through the store.

How it works

  1. A visitor taps the link. We record the click with the request address, the device language, and the timezone, then send the visitor to your app, your fallback URL, or the store.

  2. The app opens for the first time. The SDK runs the attribution check once, on first launch, and sends the device signals to the attribution API with your SDK key, along with the Play Install Referrer on Android or the identifier for vendor (IDFV) on iOS.

  3. The server walks the match cascade. It tries the referrer first, then the device ID (IDFV), then the probabilistic match, then raw signals, in that order. The first successful match wins.

  4. Exact matches stop the walk. A Play Install Referrer match names the link, scores 1.0, and returns matchGuaranteed as true. The IDFV recognizes an install asking again and returns it as first matched.

  5. Probabilistic matches carry a score. The probabilistic match and raw signals tiers compare the request address, language, and timezone, stored only as a one-way hash. The score runs from 0.20 to 0.85 and falls as time passes since the click.

  6. The install shows up on the link. The result returns to the app with a match type and a confidence score, and the install appears against the link in your dashboard next to its clicks.

Key facts

  • Match cascade order: referrer, device ID (IDFV), probabilistic match, raw signals. The first match wins.
  • Exact matches score 1.0. Probabilistic matches score between 0.20 and 0.85.
  • No advertising identifier (IDFA or GAID) and no App Tracking Transparency prompt. Match keys are stored only as one-way hashes.
  • The match window is 6 hours by default and 24 hours at most, set per link.
  • The SDK needs an SDK key. An API key cannot record installs.
  • It attributes installs from links you own, such as organic, referral, creator, email, and QR traffic.
  • Plans start at Free ($0, 10K clicks a month) and run through Starter ($19), Growth ($49), and Scale ($99) to Unlimited ($149, no click ceiling).

Read how install attribution works in the docsPlans and pricing

How install attribution works

  1. Share a link

    Share your short link in an email, a post, a QR code, or a referral. The redirect records the click along with the signals it can see: the address the request came from, the device language, and the timezone. The visitor carries on to your app, to your fallback URL, or to the store. No SDK is involved yet.

  2. The visitor installs

    Android can hand the answer over intact: when the destination is a Play Store URL, the Play Store carries the install referrer through the install, which makes that match exact. On iOS the click stays claimable for the window set on the link, six hours by default and 24 hours at the most.

  3. The SDK reports first launch

    On first launch the SDK sends the signals the device can gather and the server walks the cascade in order: referrer, then device identifier, then the probabilistic match, then raw signals. The first hit wins and comes back with a match type and a confidence score, and the install shows up against that link in your dashboard.

One SDK call

iOS (Swift)
if let attribution = WarpLink.attributionResult {
    let confidence = attribution.matchConfidence ?? 0

    if attribution.matchGuaranteed || confidence > 0.5 {
        navigate(to: attribution.destination)
    } else {
        showOnboarding()
    }
}
Android (Kotlin)
val attribution = WarpLink.attributionResult

if (attribution != null) {
    val confidence = attribution.matchConfidence ?: 0.0

    if (attribution.matchGuaranteed || confidence > 0.5) {
        navigateTo(attribution.destination)
    } else {
        showOnboarding()
    }
}
React Native
import { WarpLink } from '@warplink/react-native'

const attribution = await WarpLink.getAttributionResult()

if (attribution) {
  if (attribution.matchGuaranteed || attribution.matchConfidence > 0.5) {
    navigateToLink(attribution.linkId)
  } else {
    showOnboarding()
  }
}
Flutter
import 'package:warplink_flutter/warplink_flutter.dart';

final attribution = await WarpLink.getAttributionResult();

if (attribution != null) {
  if (attribution.matchGuaranteed || attribution.matchConfidence > 0.5) {
    navigateToLink(attribution.linkId);
  } else {
    showOnboarding();
  }
}
Sub-10ms redirects·Never blocked·Open source SDKs·MCP server, free on all plans

Frequently Asked Questions

Yes, and it never asks for the prompt. There is no advertising identifier anywhere in the cascade: no IDFA on iOS and no GAID on Android. The one exact tier is the Play Install Referrer on Android. On iOS the identifier for vendor, which is scoped to your own apps and exempt from App Tracking Transparency, recognizes an install asking again. The probabilistic tier compares the request address, the device language, and the IANA timezone name, stored only as a one-way hash.

A score from 0.0 to 1.0 built from the match's signal type and how much time passed since the click. An exact install match, which only the Play Install Referrer on Android produces, always scores 1.0 and reports matchGuaranteed. A probabilistic match starts at 0.85 when the launch follows the click within an hour and decays to 0.30 in the 6 to 24 hour band.

Your app gets the attribution result on first launch and can act on it in code, and the dashboard shows the installs each link earned. Install records and every attribution attempt are readable through GET /v1/installs and GET /v1/attribution/attempts with an API key, and through the MCP tools list_installs and list_attribution_attempts. Over the MCP server an AI client can read a link's click analytics with either the analytics:read or the links:read scope, free on every plan and sharing the REST API limit of 60 requests a minute. The attribution endpoint itself belongs to the SDKs: it takes an SDK key, and an API key is rejected. The plans are at warplink.app/pricing.

Your links should open the app.
Your data should tell you why.

Set up deep linking, attribution, and analytics in minutes. Free to start.

Start building, free

Have a question?