Attribution Providers

Configure direct deep links, Google Play Install Referrer, and attribution adapters for the GrowSurf Android SDK.

On Android, GrowSurf can capture referral attribution from direct deep links, Google Play Install Referrer, or provider callback payloads. Capture attribution before calling addReferredParticipant().


Use handleDeepLink(uri) when the installed app opens from a link that already contains grsf, which contains the referral code.

intent.data?.let { uri ->
    val attribution = growsurf.handleDeepLink(uri)
}

Example accepted links:

  • your-app://open?grsf=referrer_id

  • https://example.com/app?grsf=referrer_id

Already support deep links? If you use an attribution provider (Branch, AppsFlyer, Adjust, Singular) or otherwise open your app from links, this is already set up — just forward the opened Intent's URI to handleDeepLink(uri).

Starting from scratch? Add a custom-scheme <intent-filter> (android:scheme) to your launch Activity in AndroidManifest.xml — the quickest path, no domain needed — and/or set up Android App Links (android:autoVerify="true" plus an assetlinks.json hosted on a domain you control) for verified https links. Then read intent.data in onCreate/onNewIntent and call handleDeepLink(uri) inside a coroutine scope.

GrowSurf-hosted share links live on grow.surf (not your domain), so they can't open your app via App Links — use a custom scheme, your own domain with grsf appended, or an attribution provider.


Google Play Install Referrer

When Android referral clicks route to Google Play with a Play Install Referrer payload, addReferredParticipant(...) checks the install referrer once when no explicit or pending attribution exists. You can also call handleDeferredDeepLink() yourself before signup when you want to inspect the attribution result.

By default, the SDK checks the install referrer only once. Pass forceRefresh = true while testing if you need to query it again:


Adapters

GrowSurf provides adapters for popular attribution providers. Choose your provider below, or use Other to pass a dictionary of attribution values from any other provider.

Adjust adapter

Add the adapter artifact:

Then pass the Adjust deferred deep link into GrowSurf:

The adapter accepts Uri and String deep link values.


Accepted attribution keys

Key
Description

grsf

Preferred GrowSurf referrer ID.

ref

Alternate referrer ID.

referredBy

Alternate referrer ID.

provider

Attribution provider name. Ignored when the SDK method receives an explicit provider argument.

clickId

Provider click ID metadata.

click_id

Provider click ID metadata.

unique

Optional boolean string: true or false.

The SDK also parses values nested inside URL-like payload fields. For example, a provider value of https://example.com/?grsf=referrer_id&click_id=click_123 can still produce GrowSurf attribution. If a provider returns a GrowSurf-hosted share URL such as https://grow.surf/share/:campaignId/:referrerId, the SDK uses the participant value from the path.

Last updated

Was this helpful?