Adjust
Preserve GrowSurf referral attribution in Adjust links for native mobile app referrals.
How It Works
If you use Adjust, we recommend using an Adjust link as your GrowSurf campaign Share URL.
This is the URL that referred friends land on when they open up a referral link. Depending on the device they open the link on (web, iOS, or Android), they will either land on a webpage or your App Store / Google Play listing on mobile.
When a participant shares their referral link, the GrowSurf referral code must stay attached to the Adjust link. Your app then passes the Adjust deferred deep link URL into the GrowSurf mobile SDK before calling addReferredParticipant().
How to Set Up
Step 1: In GrowSurf, open Campaign Editor > 5. Installation and set your Share URL to the Adjust link that routes users to your app.

Step 2: Staying within the same GrowSurf screen as the prior step, you need to append a deep_link query parameter to the Share URL. Depending on your Adjust link type, choose an option below.
If your Adjust link uses a branded Universal Link domain (e.g., acecraft.go.link, zuscoffee.go.link, villamarket.go.link):
Get your app's deep link URL encoded
Get your app's deep link URL. For example, it looks something like
myapp://open.Use a tool like this to URL-encode it. Using the same example above, you should have something that looks like
myapp%3A%2F%2Fopen.Replace
myapp%3A%2F%2Fopenin the examples below with your value from the previous step (leave{{referralCode}}as literal text — GrowSurf substitutes it for each participant's referral code at share time).
If your Adjust link has no query parameters yet, prefix with ?:
Before:
https://zuscoffee.go.link/C0PHhAfter:
https://zuscoffee.go.link/C0PHh?deep_link=myapp%3A%2F%2Fopen%3Fgrsf%3D{{referralCode}}
If your Adjust link already has query parameters (e.g., an adj_t token), prefix with &:
Before:
https://villamarket.go.link/?adj_t=kzdgn86After:
https://villamarket.go.link/?adj_t=kzdgn86&deep_link=myapp%3A%2F%2Fopen%3Fgrsf%3D{{referralCode}}
If your Adjust link uses the standard tracker URL format (e.g., app.adjust.com):
Get your app's deep link URL encoded
Get your app's deep link URL. For example, it looks something like
myapp://open.Use a tool like this to URL-encode it. Using the same example above, you should have something that looks like
myapp%3A%2F%2Fopen.Replace
myapp%3A%2F%2Fopenin the examples below with your value from the previous step (leave{{referralCode}}as literal text — GrowSurf substitutes it for each participant's referral code at share time).
If your tracker URL has no query parameters yet, prefix with ?:
Before:
https://app.adjust.com/abc123After:
https://app.adjust.com/abc123?deep_link=myapp%3A%2F%2Fopen%3Fgrsf%3D{{referralCode}}
If your tracker URL already has query parameters (e.g., a campaign tag), prefix with &:
Before:
https://app.adjust.com/abc123?campaign=summerAfter:
https://app.adjust.com/abc123?campaign=summer&deep_link=myapp%3A%2F%2Fopen%3Fgrsf%3D{{referralCode}}
There's no configuration necessary in Adjust. GrowSurf substitutes {{referralCode}} with each participant's referral code at share time (e.g., abc123).
Step 3: Pass the Adjust deferred deep link URL into the GrowSurf attribution adapter before calling addReferredParticipant().
Step 4: Call addReferredParticipant() after the GrowSurf SDK has handled attribution. This method will validate pending attribution and creates a new referred participant record only when there is a valid referrer.
iOS Deferred Deep Linking (New Installs)
This is the primary path for an app referral program — a referral targets people who don't have your app yet, so most referred installs are cold installs. On iOS it's best-effort even when configured (see the troubleshooting tips below), so pair it with a fallback such as manual referral-code entry.
For users who tap an Adjust link (and don't have your iOS app installed), the referral code only survives the install if Adjust LinkMe is enabled. iOS 14+ removed the IDFA/device matching (App Tracking Transparency), and iOS 15 Private Relay masks the click IP, which broke the probabilistic matching Adjust otherwise uses for cold-install deferred deep links. LinkMe is optional and off by default. Without it, an iOS user who installs from a referral link may open the app with no referral data, and addReferredParticipant() finds no referrer.
To enable it:
On your Adjust link: add a LinkMe tag so the token is written at click time —
adj_linkme=1for Universal/branded (.go.link) links, orlinkme=1for standard tracker URLs.In your app: enable LinkMe on the Adjust config before starting the Adjust SDK. The exact call depends on your Adjust SDK major version —
ADJConfig.enableLinkMe()in Adjust iOS SDK v5, orsetLinkMeEnabled(true)in v4 (confirm against Adjust's current LinkMe docs for your version).
On iOS 16+, the user sees a one-time "Pasted from …" prompt on first launch when the SDK reads the LinkMe clipboard token. Without LinkMe, Adjust falls back to server-side, probabilistic matching, which is unreliable on modern iOS. The installed-app flow (an Adjust link that opens an app the user already has) does not need LinkMe.
As with every provider, GrowSurf reads grsf out of whatever deep link Adjust delivers — so a deferred referral survives only when LinkMe is enabled and the delivered deep_link still carries grsf.
Additional Tips
Test both flows before launching:
Installed app flow: Users who already have your app installed
New install flow: Users who don't have your app installed
If the referral code is missing after app install, confirm that the deep link URL passed to
GrowSurfAdjustAttribution.handlecontainsgrsf,ref, orreferredBy. The most common cause is that thedeep_linkparameter in your Adjust Share URL was not URL-encoded correctly, or{{referralCode}}was accidentally URL-encoded to%7B%7BreferralCode%7D%7Dand was not substituted by GrowSurf.The
deep_linkvalue should URL-encode the://,?, and=characters of your app's deep link scheme, but{{referralCode}}itself must remain as literal text (not URL-encoded). For example,myapp%3A%2F%2Fopen%3Fgrsf%3D{{referralCode}}is correct;myapp%3A%2F%2Fopen%3Fgrsf%3D%7B%7BreferralCode%7D%7Dis not.iOS deferred (cold install) is best-effort. Even when LinkMe is enabled, a referral can be missing after a new iOS install if the user declined the iOS "Paste from …" prompt on first launch, copied something else before opening the app (overwriting the clipboard token), or tapped the link from an in-app / non-Safari browser. Provide a fallback such as manual referral-code entry, and don't assume the user always lands on a specific screen. (Android's Play Install Referrer is deterministic and isn't affected by these.)
See iOS SDK Attribution Providers, Android SDK Attribution Providers, and Getting Started for Native Mobile for more details.
Last updated
Was this helpful?