Docs

Migrate from AppsFlyer

Move your existing AppsFlyer OneLink subdomain and links to Grovs without breaking old links.

If your AppsFlyer OneLink deep links run on a subdomain you control, such as old.acme.com, you can move that hostname to Grovs without breaking existing links. When someone opens an old OneLink, Grovs looks it up with your AppsFlyer credentials, recreates the matching Grovs link, and redirects the visitor to your branded URL. After the first click, that link is served straight from Grovs.

Migration requires an active paid subscription. If you start without an eligible plan, the dashboard prompts you to upgrade. Open Settings → Billing to subscribe.

This guide moves your existing AppsFlyer hostname and links. To send new deep links and capture attribution through Grovs, also add the Grovs SDK. See the SDK reference.

AppsFlyer OneLink data API required. The migration lookup relies on AppsFlyer's OneLink data API, which is a paid AppsFlyer entitlement. If your plan lacks it, the API rejects the token. Confirm your AppsFlyer plan includes OneLink API access before migrating.

Your old links must be on a custom subdomain you control. Migration only works if your AppsFlyer OneLinks already run on a subdomain you can point via DNS, such as links.acme.com. Links on AppsFlyer's default *.onelink.me domain cannot be migrated. Grovs can only take over a hostname you control, so those old links will not resolve through Grovs.

How it works

After you point the old hostname at Grovs, every legacy link is resolved on demand:

The first visitor to open a given old link triggers the lookup. Everyone after that is served from the cache, with no call to AppsFlyer.

Before you start

  • An active paid plan.
  • An AppsFlyer subdomain you control, such as old.acme.com, and access to its DNS settings. Migration works only for custom OneLink subdomains, not the shared *.onelink.me host.
  • Your OneLink ID and API token (see Finding your AppsFlyer credentials).
  • An updated mobile build, shipped before you flip DNS.

Ship the new build before you flip DNS. Grovs serves its own Apple App Site Association and Android assetlinks on the migrated host, replacing what AppsFlyer served. If you point DNS at Grovs before your app trusts the new host, universal links and App Links open the browser instead of your app.

Migrate your AppsFlyer hostname

1

Open the Domain settings

In the dashboard, go to Link Behaviour → Domain and click Migrate from another platform.

2

Confirm the pre-flight checklist

If your iOS or Android SDK is integrated, Grovs asks you to confirm your app is ready:

  • iOS: you've added applinks:old.acme.com to your iOS Associated Domains entitlement and shipped a new build to the App Store.
  • Android: you've updated your assetlinks.json setup with the SHA-256 cert fingerprint and shipped a new Android build.
  • Your users have had time to update to the new build.

You can't continue until each item is checked.

3

Choose AppsFlyer and enter your credentials

Select AppsFlyer as the provider, then enter:

  • OneLink ID: for example abc123. Grovs uses this to match incoming legacy links.
  • API token: the V2.0 token Grovs uses to read the original link details during migration.
4

Enter the old hostname

Enter the AppsFlyer subdomain you're moving, for example old.acme.com. Grovs checks its current DNS and shows where it points today. Submit this before changing DNS. Grovs provisions SSL first, and traffic only moves once DNS points the host at Grovs.

5

Complete the DNS checklist

Grovs walks you through a three-part DNS checklist. Add each record at your DNS provider as it appears:

  1. Hostname ownership verified: add the ownership TXT record if shown.
  2. SSL certificate issued: add the SSL validation TXT record(s). If an _acme-challenge record already exists, replace its value or add another with the same name.
  3. CNAME pointing to Grovs: add the CNAME once SSL is active.

On Cloudflare DNS, set the CNAME to "DNS only" (gray cloud). If your domain's DNS is managed by Cloudflare, the CNAME pointing to Grovs must be DNS only (the gray cloud), not the orange Proxied cloud. A proxied (orange) record prevents the certificate from issuing and stops your links from resolving.

Grovs refreshes status automatically as DNS updates. Click Recheck to poll sooner.

SSL can take a few minutes to a few hours to issue, and Grovs keeps trying for up to 72 hours. If it doesn't issue in time, verify the TXT record is correct and start over to re-create the challenge.

6

Test credentials and flip DNS

Before moving traffic, use Test to confirm Grovs can reach AppsFlyer with your credentials:

  • Credentials OK: you're ready.
  • Credentials invalid: rotate them in Settings → Migration before flipping DNS, or old links stop resolving.
  • Rate limited or unreachable: AppsFlyer is temporarily unavailable. Try again shortly.

When SSL is active and the test passes, update the CNAME record to point the old hostname at Grovs. Traffic moves gradually as DNS resolvers refresh.

Finding your AppsFlyer credentials

  • OneLink ID: found in your OneLink template configuration.
  • API token: in AppsFlyer, open your account menu and go to Security Center → Manage your AppsFlyer API tokens (on older dashboards: Settings → API tokens), then copy the V2.0 token.

Cutover at a glance

Managing and removing

Once migration is active, Link Behaviour → Domain shows AppsFlyer, the migrated hostname, and a green Active badge with the last verification time.

  • Rotate credentials: if your token changes, open Settings → Migration and use Rotate migration credentials. Grovs verifies the new credentials with AppsFlyer before saving.
  • Remove migration: click Remove migration and confirm by typing the hostname. This removes the migration source and the legacy hostname from Grovs.

If DNS still points at Grovs after you remove the migration, old links stop resolving. Repoint or retire the hostname's DNS first. Removal also clears Grovs's cached link mappings. Links that were already recreated keep working, but every old slug hits AppsFlyer again on first click if you re-onboard later.

Lifecycle and billing

Migration is use-it-or-lose-it. If your subscription lapses, Grovs tears down the migrated hostname and clears the cached mappings. Recovery is a full re-onboarding with fresh credentials. Keep billing active for as long as you rely on migration.