Docs
grovs.io Start for free

Copy to Clipboard

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

Without it, deferred deep linking matches by fingerprint. Grovs records the browser's IP address and user agent at the tap, then matches them on a first launch within five minutes. That window is short, and a busy network can make the match ambiguous.

With copy to clipboard, the preview page copies the link when the visitor taps Open. The app reads it back on first launch. The match is exact and works for up to 48 hours after the tap.

How it works

  1. Tap. Grovs records the view, creates a click record for that browser and link, and caches the fingerprint.
  2. Preview page. The visitor sees your branded page with an Open button. Its link is the tapped link plus a short device tag that identifies this tap.
  3. Copy. Tapping Open writes the link to the clipboard, then continues to the App Store, Google Play or the installed app. Nothing is copied without the tap.
  4. First launch. The native SDK checks the clipboard for a Grovs link and sends it to Grovs.
  5. Match. Grovs finds the click from the device tag and attributes the install to it. Your app gets the link's payload through the normal deep link callback. If the tag is missing or older than 48 hours, Grovs falls back to the fingerprint match.

Each environment is separate. Test and production have their own link domains, settings and activity, so a test link never affects a production app.

Turn it on

Copy to clipboard only works where the preview page is shown for that platform.

For the whole project

Open Links → Link Settings → Redirect Rules. For iOS and Android separately:

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

This sets the default for every link. The project fields are copy_to_clipboard_ios and copy_to_clipboard_android, both off by default.

In the link dialog, under the iOS or Android redirect, change App preview page from Default. Then use the same Copy link to clipboard switch. Choosing Default again removes the override.

Through the Links API and the SDKs, pass copy_to_clipboard_ios and copy_to_clipboard_android:

  • true or false overrides the project setting.
  • Omitted or null inherits it.

They only apply where the preview page is shown, which show_preview_ios and show_preview_android control the same way.

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

What the visitor sees

The preview page looks the same; the copy happens on the Open tap. The write is best-effort. If the browser refuses it, the visitor still continues, and a fingerprint match applies within five minutes.

On first launch, the OS may show that the app read the clipboard:

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

The SDKs first ask Grovs whether the project served a copy-enabled preview page in the last 48 hours, and skip the clipboard if not. They also skip it when the clipboard holds no web URL. They never send anything that isn't a link on one of your Grovs domains. Details: iOS, Android.

The prompt appears on the first launch after install only, and an organic installer can see it if their clipboard holds a web address. If you never enable copy to clipboard, the SDKs never read the clipboard.

Custom domains

On a custom domain, the copied link uses that domain. The backend recognizes it automatically. The native SDKs need your hosts so they only read links on them: pass clipboardDomains on iOS and Android.

Requirements and limits

ItemRule
SDK versionsiOS SDK 3.0 and Android SDK 3.0 or later. The Web SDK never reads the clipboard; it only sets the flags on links it creates.
Preview pageMust be shown. Skip Preview disables copying for that platform, whatever the switch says.
Match window48 hours after the tap. After that, first launch matches by fingerprint only.
Duplicate tapsOne click record per browser and link within five minutes.
PlatformsiOS and Android only. Desktop visitors are never asked to copy.
Self-hostedSet PREVIEW_BASE_URL, since the preview host serves the page.

What is attributed

A successful match:

  • records an open of the link, attributed to the tapped click
  • merges the browser visitor into the app device, so click and install are one visitor
  • moves last-touch attribution to that link

Analytics show the tap under the link's views and the open under its opens, in the environment where they happened. Repeated first-launch lookups with the same clipboard return the payload again but count the open once.

Troubleshooting

No payload after a real install. Check both switches are on for the platform. Install from the store after tapping the link on the same device, within 48 hours. Installs from Xcode or Android Studio also match, 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 the project has recent copy-enabled traffic. Turn copy off for the project to stop it.

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

For the fingerprint flow, see Deferred deep linking.

Last updated 2026-10-26
Was this page helpful?