Links
Deferred deep linking
Keep the destination through an install, and what each platform can do.
A deferred deep link remembers where a visitor wanted to go while they install the app. Someone taps a link, has no app, installs it from the store, opens it, and lands on the linked screen instead of the home screen.
What each platform can do#
Every match says how it was made (matchMethod) and how sure it is (confidence). Beck Links never
fingerprints devices and never reads an advertising ID.
| Platform | How | Confidence | When it works |
|---|---|---|---|
| Android | Google Play Install Referrer (install_referrer) | certain | The app was installed from Google Play after the click. Not for sideloads or other stores |
| iOS | A click URL copied to the pasteboard by the landing page, read once by the app (pasteboard) | certain | You turned it on in the dashboard and in the app (enablePasteboard: true), the visitor tapped Get the app, and allowed the paste prompt |
| Both | Anything else | none | The install is organic and no deferred link is delivered |
How it works#
- The visitor taps the link. Beck Links records a click and, for a store-bound visit, keeps what the app will need: the link, its path, data, parameters and, for an item pattern, the item. On Android the Play URL carries a click ID as the install referrer; on iOS the landing page's button copies a click URL.
- The visitor installs and opens the app. The SDK reports the first open with the evidence the platform gave it (the referrer, or the pasteboard click URL).
- Beck Links matches the click, within the project's window (7 days by default), and answers with a
LinkEvent(isDeferred: true). A click matches one install only. - The app receives it on
onLink, like any link.
The deferred link is delivered once per install, also for a reinstall. getInitialLink() waits at most
firstOpenTimeout (3 seconds by default); a match that arrives later updates attribution, but is not
delivered as a link.
Turn it on#
Android. Nothing besides the platform setup. Install the app from Play.
iOS. Pasteboard deferred linking is on by default in the dashboard (Settings, environment card, iOS pasteboard matching; switch it off there if you do not want it). The app opts in in code, which is the step that is easy to forget:
await BeckLink.instance.configure(apiKey: 'pk_live_YOUR_KEY', enablePasteboard: true);The SDK reads the pasteboard only on the first run, only when iOS reports it probably holds a web URL, and only uses a click URL of your project environment. It never writes or clears the pasteboard.
Verify it works#
- Android: upload a build to a Play internal testing track and join as a tester. Uninstall the
app, tap a link (it opens the Play Store), install from Play, open the app. Builds installed with
adb installorflutter runhave no install referrer. - iOS: turn on pasteboard deferred linking, uninstall the app, tap a link in Safari, tap Get the app, install your build (TestFlight or Xcode), open it and allow the paste.
If the match is missing, see Troubleshooting.