Deep Linking

Deep linking for iOS and Android

WarpLink turns one short link into a Universal Link on iOS, an App Link on Android, and a web fallback everywhere else, with the app association files generated and hosted for you. Deep linking, install attribution, and real-time analytics come from the same SDK, so one link opens the right screen, credits the install it caused, and reports the click as it happens.

How deep linking works with WarpLink

  1. Create a link

    Create a short link in the dashboard, through the REST API, or from an AI client over the MCP server. Give it a destination URL and, if you want one, a custom slug. The link is live the moment you save it, and it counts clicks and renders social previews before any app exists.

  2. Register the app

    Register your iOS bundle ID and team ID, your Android package name and signing fingerprint, or both. WarpLink generates and hosts the association files iOS and Android check, so the same links start opening your app directly, and store fallbacks catch anyone who does not have it yet.

  3. Ship the SDK

    Add the SDK and call configure with your SDK key. It hands each incoming link to your router with the path and parameters intact, runs the deferred check on first launch, and reports the install back. Deep linking, install attribution, and analytics all come from that one call.

One SDK call

iOS (Swift)
import WarpLink

WarpLink.configure(
    apiKey: "wl_live_xxx",
    options: WarpLinkOptions(onLink: { result in
        guard case .success(let deepLink) = result, let deepLink else { return }
        navigate(to: deepLink.destination)
    })
)
Android (Kotlin)
WarpLink.configure(
    context = this,
    apiKey = "wl_live_xxx",
    options = WarpLinkOptions(onLink = { result ->
        result.onSuccess { deepLink -> navigateTo(deepLink.destination) }
        result.onFailure { error -> Log.e("WarpLink", error.toString()) }
    })
)
React Native
import { WarpLink } from '@warplink/react-native'

WarpLink.configure({ apiKey: 'wl_live_xxx' })

WarpLink.onDeepLink((event) => {
    if (event.deepLink) {
        navigation.navigate(event.deepLink.destination)
    }
})
Sub-10ms redirects·300+ edge nodes·Never blocked·Open source SDKs

Frequently Asked Questions

No. Only a destination URL is required to create a link, so you can create one, share it, and read the clicks before you register anything. Register an iOS or Android app later and WarpLink generates and hosts the association files iOS and Android check, so the short links you already handed out start opening the app.

Yes. One short link serves everyone: iOS gets a Universal Link, Android gets an App Link, and a desktop browser gets your web destination. WarpLink detects the device at the edge and answers with a single redirect, so you never maintain one link per store or per campaign.

WarpLink does. The apple-app-site-association file and assetlinks.json are generated when you register an app and regenerated whenever you change its configuration, on aplnk.to and on every verified custom domain. Your side is the Associated Domains entitlement on iOS and the App Links intent filter on Android.

Yes. Point a subdomain such as go.yourapp.com at WarpLink with two DNS records, and the HTTPS certificate is issued and renewed for you. Every organization can run one custom domain free for three months, and paid plans carry three domains on Starter up to unlimited on the $149 Unlimited plan. The plans are at warplink.app/pricing.

They go to the fallback URL you set on the link for iOS or Android, and to your app's store URL when the link has none, so no tap is wasted. When they install and open the app, deferred deep linking hands them the destination the original link named, with a confidence score attached. That part is covered at warplink.app/deferred-deep-linking.

Your links should open the app.
Your data should tell you why.

Set up deep linking, attribution, and analytics in minutes. Free to start.

Start building, free

Have a question?