Docs

Copy to Clipboard

Match an install to the exact link that was tapped by copying the link to the clipboard on the preview page.

Deferred deep linking normally works by fingerprint: when a link is tapped, Grovs records the browser's IP address and user agent, and when the app first launches within five minutes it matches the two. That is fast and needs nothing from the user, but the window is short and a busy network can make the match ambiguous.

Copy to clipboard removes the guesswork. With it enabled, the link's preview page copies the link to the clipboard when the visitor taps Open, and the app reads it back on its first launch. The match is exact, and it works for up to 48 hours after the tap instead of five minutes.

How it works

  1. Tap. A visitor opens a Grovs link on their phone. Grovs records the view, creates a click record for that browser and link, and caches the fingerprint as usual.
  2. Preview page. Because the platform is set to show a preview page with copy enabled, the visitor sees the branded page with your app icon and an Open button. The link that page holds is the tapped link plus a short device tag, so the tap can be told apart from every other tap on the same link.
  3. Copy. When the visitor taps Open, the page writes that link to the clipboard and then continues to the App Store or Google Play (or to the app, if it is installed). Nothing is copied without the tap.
  4. First launch. After installing, the visitor opens the app. The native SDK checks whether the clipboard holds a Grovs link and, if it does, sends it to Grovs.
  5. Match. Grovs finds the click record from the device tag, merges the browser visit with the installed app so the install is attributed to that click, and returns the link's payload to your app through the normal deep link callback. If the tag is missing or older than 48 hours, Grovs falls back to the fingerprint match.

The whole flow is per environment: test and production projects have separate link domains, separate settings, and separate activity, so a test link never influences a production app.

Turning it on

Copy to clipboard rides on the preview page: it is only offered, and only takes effect, when the preview page is shown for that platform.

For the whole project

In the dashboard, open Links Behaviour → Redirect Rules. For iOS and for Android separately:

  1. Choose Show Preview Page.
  2. Switch on Copy link to clipboard.

This becomes the default for every link in the project. The setting lives on the project's redirect configuration, as copy_to_clipboard_ios and copy_to_clipboard_android, both off by default.

Every link can override the project default per platform. In the link dialog, under the iOS or Android redirect, change App preview page from Default to your own choice, then use the same Copy link to clipboard switch. Choosing Default again removes the override and the link follows the project's rules.

Through the REST API and the SDKs, pass copy_to_clipboard_ios and copy_to_clipboard_android. Each is tri-state: true and false override the project setting, and omitting the field, or passing null, inherits it. They only take effect where the preview page is shown, which the matching show_preview_ios and show_preview_android fields control the same way.

SDKParameters
iOScopyToClipboardiOS, copyToClipboardAndroid on generateLink
AndroidcopyToClipboardIos, copyToClipboardAndroid on generateLink
WebcopyToClipboardiOS, copyToClipboardAndroid on generateLink

What the visitor sees

On the preview page, nothing changes: the copy happens as part of the Open tap. The clipboard write is best-effort. If the browser refuses it, the visitor still continues to the store, and that install is matched by fingerprint if it happens within five minutes.

On the app's first launch, the operating system may tell the user that the app read the clipboard:

  • iOS shows its paste confirmation. Denying it leaves the install unattributed; nothing else changes.
  • Android 12 and later show a "pasted from your clipboard" toast.

To keep these prompts away from people who never tapped a link, the SDKs ask Grovs first whether the project has served a copy-enabled preview page in the last 48 hours, and skip the clipboard entirely when it has not. They also skip it when the clipboard holds no web URL, and they never send anything that is not a link on one of your Grovs domains. See the platform pages for the exact behavior: iOS, Android.

The prompts appear on the first launch after install only. A project with copy-enabled links can therefore show the prompt once to an organic installer whose clipboard happens to hold a web address, because the SDK cannot tell without reading it. If you never enable copy to clipboard, the SDKs never read the clipboard.

Custom domains

If your links are served from a custom domain, the copied link uses that domain. The backend recognizes it automatically; the native SDKs need to be told which hosts are yours so they only read links on them. Pass the domain when configuring the SDK: clipboardDomains on iOS and Android.

Requirements and limits

  • The native SDK must be recent enough to read the clipboard: iOS SDK 3.0, Android SDK 3.0. The Web SDK never reads the clipboard; it only sets the flags on links it creates.
  • The preview page must be shown for the platform. Skip Preview disables copying for that platform regardless of the copy switch.
  • The match is valid for 48 hours after the tap. After that, a first launch is matched by fingerprint only.
  • A tap is recorded once per browser and link within five minutes, so repeated taps do not create duplicate click records.
  • Desktop visitors are never asked to copy; the feature applies to iOS and Android only.
  • Self-hosted deployments need PREVIEW_BASE_URL configured, since the preview page is served from the preview host.

What is attributed

A successful match produces an open of the link attributed to the tapped click, merges the browser visitor into the app device so the click and the install belong to one visitor, and moves last-touch attribution to that link. Analytics show the tap under the link's views and the resulting open under its opens, in the environment where they happened. Repeated first-launch lookups with the same clipboard content return the payload again but count the open only once.

Troubleshooting

The app gets no payload after a real install. Confirm both switches are on for the platform, that you installed from the store after tapping the link on the same device, and that less than 48 hours passed. Installing from Xcode or Android Studio skips the store, but the clipboard match still works as long as the link was copied on that device.

The paste prompt appears for users who never tapped a link. Expected once per install while your project has recent copy-enabled traffic. Turning copy off for the project stops it.

Copy works on iOS but not Android. The switches are per platform. Check the Android redirect rule shows the preview page with copy enabled.

See also Deferred deep linking for the fingerprint flow and its pitfalls.

Edit this page on GitHubLast updated 2026-09-15