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.

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=1 for Universal/branded (.go.link) links, or linkme=1 for 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, or setLinkMeEnabled(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.handle contains grsf, ref, or referredBy. The most common cause is that the deep_link parameter in your Adjust Share URL was not URL-encoded correctly, or {{referralCode}} was accidentally URL-encoded to %7B%7BreferralCode%7D%7D and was not substituted by GrowSurf.

  • The deep_link value 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%7D is 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.)

Last updated

Was this helpful?