Skip to content
Tolinku
Tolinku
Sign In Start Free
Comparisons · · 5 min read

Migrating from AppsFlyer OneLink to Tolinku

By Tolinku Staff
|
Tolinku platform comparisons dashboard screenshot for comparisons blog posts

AppsFlyer is an attribution platform that includes deep linking through its OneLink product. Many teams that started with AppsFlyer for install attribution find themselves paying enterprise prices for a full attribution suite when all they need is reliable deep linking and basic analytics.

Migrating your deep linking from AppsFlyer OneLink to Tolinku lets you separate concerns: use Tolinku for deep linking (at a fraction of the cost) while keeping AppsFlyer for attribution if you still need it, or replace both.

For the general migration guide covering multiple providers, see Migrating to Tolinku from Branch, Firebase, and AppsFlyer.

Understanding What You're Migrating

AppsFlyer OneLink bundles several features:

  • Deep linking: Route users to specific in-app content
  • Deferred deep linking: Preserve link context through install
  • Smart banners: Web-to-app banners
  • Link management: Create and manage marketing links
  • Attribution: Track which campaigns drove installs and events
  • Audience segmentation: Target users based on behavior and attribution

You're migrating the deep linking component. Attribution is a separate concern that you can keep with AppsFlyer, move to another attribution provider, or handle with Tolinku's first-party analytics.

AppsFlyer OneLink uses templates that define routing behavior. Export your template configurations:

  • Template name and ID: Each template has a unique ID
  • Deep link path: The URL scheme or Universal Link path
  • Subdomain: Your branded link subdomain (e.g., yourapp.onelink.me or custom domain)
  • Platform behavior: What happens on iOS, Android, and web
  • Deep link parameters: Custom parameters passed through the link

List all active OneLink URLs:

  • Marketing campaign links (generated in the AppsFlyer dashboard)
  • Custom links (created via the API)
  • In-app share links (created via the SDK)

Parameter Mapping

AppsFlyer OneLink supports several parameter types:

  • Deep link value (deep_link_value): The primary routing parameter
  • Deep link sub-parameters (deep_link_sub1 through deep_link_sub10): Additional custom parameters
  • Attribution parameters: pid (media source), c (campaign), af_channel, etc.

Document which parameters your app reads and how it uses them.

Step 2: Set Up Tolinku

Create Your Appspace

  1. Create an Appspace at tolinku.com
  2. Configure iOS settings (Bundle ID, Team ID)
  3. Configure Android settings (Package Name, SHA-256 fingerprint)
  4. Set your default web fallback URL

Domain Configuration

If you used yourapp.onelink.me: This domain belongs to AppsFlyer. You'll need a new branded domain (e.g., go.yourapp.com). See the Domains setup guide.

If you used a custom domain: You can transfer it to Tolinku by updating DNS after setting up your routes.

OneLink Template Tolinku Route
Template with deep_link_value=product_123 Route path: /product/:id
Template with deep_link_value=invite + deep_link_sub1=CODE Route path: /invite/:code
Template for web fallback to custom page Route with custom web fallback URL

The key difference: OneLink uses a flat parameter structure (deep_link_value, deep_link_sub1). Tolinku uses standard URL paths and query parameters (/product/123?ref=abc). This is simpler but requires remapping your routing logic.

Step 3: Replace the SDK

Separating Deep Linking from Attribution

If you want to keep AppsFlyer for attribution but use Tolinku for deep linking, you can run both SDKs:

  • Tolinku SDK: Handles deep link routing (Universal Links, App Links, deferred deep linking)
  • AppsFlyer SDK: Handles install attribution and post-install event tracking

This is a valid intermediate step. You can remove the AppsFlyer SDK later when you're ready.

If Replacing Both

Remove the AppsFlyer SDK entirely:

iOS:

  1. Remove AppsFlyerLib dependency
  2. Remove AppsFlyerLib.shared().start() from AppDelegate
  3. Remove OneLink resolution callbacks (AppsFlyerLibDelegate.onAppOpenAttribution)
  4. Remove AppsFlyerLib.shared().continue(userActivity) from link handling
  5. Remove event tracking calls (AppsFlyerLib.shared().logEvent())

Android:

  1. Remove com.appsflyer:af-android-sdk from build.gradle
  2. Remove AppsFlyerLib.getInstance().start() from Application class
  3. Remove AppsFlyerLib.getInstance().subscribeForDeepLink() callbacks
  4. Remove event tracking calls

Add Tolinku SDK

Configure Universal Links (iOS) and App Links (Android) for your Tolinku domain. Handle incoming links by parsing the URL path and parameters:

iOS:

func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
    guard let url = userActivity.webpageURL else { return }
    handleDeepLink(url: url)
}

func handleDeepLink(url: URL) {
    let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
    let path = url.path

    if path.hasPrefix("/product/") {
        let productId = String(path.dropFirst("/product/".count))
        navigateToProduct(id: productId)
    }
    // Handle other routes...
}

Android:

private fun handleDeepLink(uri: Uri) {
    val path = uri.path ?: return

    when {
        path.startsWith("/product/") -> {
            val productId = uri.lastPathSegment
            navigateToProduct(productId)
        }
        // Handle other routes...
    }
}

Parameter Migration

Map AppsFlyer's parameter structure to Tolinku's URL structure:

AppsFlyer Parameter Tolinku Equivalent
deep_link_value URL path segment
deep_link_sub1 through sub10 URL query parameters
pid (media source) utm_source parameter
c (campaign) utm_campaign parameter
af_channel utm_medium parameter

Example mapping:

# AppsFlyer OneLink
https://yourapp.onelink.me/abc?deep_link_value=product&deep_link_sub1=123&pid=email&c=summer_sale

# Tolinku equivalent
https://go.yourapp.com/product/123?utm_source=email&utm_campaign=summer_sale

Step 4: Handle Smart Banners

If you use AppsFlyer's smart banners (the web-to-app prompts on your mobile website), replace them with Tolinku's smart banners:

  1. Remove the AppsFlyer smart banner script from your website
  2. Add the Tolinku banner script
  3. Configure banner settings in your Appspace

Step 5: Test and Cut Over

Testing

Test every deep link flow:

  • Existing user taps a link → app opens to correct screen
  • New user taps a link → installs from store → app opens to correct screen (deferred deep linking)
  • User without app on web → redirected to correct fallback URL
  • OG previews render correctly on social platforms

Cut Over Strategy

Recommended: Parallel running

  1. New campaigns use Tolinku links (new branded domain or new paths)
  2. Existing AppsFlyer OneLink URLs continue to work through AppsFlyer
  3. Gradually shift all link creation to Tolinku
  4. After 2-4 weeks, evaluate if any significant traffic still hits OneLink URLs
  5. If using a custom domain, update DNS to point to Tolinku

If using AppsFlyer's domain (onelink.me): You can't redirect the old domain. New links must use your Tolinku domain. Old links continue to work through AppsFlyer as long as your account is active.

AppsFlyer-Specific Considerations

Attribution Data Continuity

If you keep AppsFlyer for attribution, your historical attribution data stays intact. If you're leaving AppsFlyer entirely:

  • Export your attribution data before deactivating
  • Set up equivalent attribution tracking in Tolinku's analytics
  • Expect a gap in attribution data during the transition

Cost Implications

AppsFlyer's pricing is based on attributed conversions, not just deep link clicks. By moving deep linking to Tolinku, you may be able to downgrade your AppsFlyer plan (or eliminate it entirely if you don't need third-party attribution).

Tolinku pricing starts at $39/month per Appspace with 50,000 clicks included. Compare this to AppsFlyer's enterprise pricing to understand your savings.

If your app uses AppsFlyer's invite/referral system, replace it with Tolinku's referral program feature. The mechanics are similar (unique referral links, attribution, reward tracking) but the implementation differs.

Timeline

Day 1-2: Audit OneLink configuration, set up Tolinku, create routes Day 3-4: Integrate SDK, replace deep link handling code Day 5-6: Testing across all platforms and scenarios Day 7: Begin parallel running with new campaigns on Tolinku Day 7-28: Transition period Day 28+: DNS cutover for custom domains (if applicable)

For the general migration guide, see Migrating to Tolinku from Branch, Firebase, and AppsFlyer.

Get deep linking tips in your inbox

One email per week. No spam.

Ready to add deep linking to your app?

Set up Universal Links, App Links, deferred deep linking, and analytics in minutes. Free to start.