Skip to main content
Documentation

Quickstart

Create a WarpLink account, register your app, install the SDK, and verify your first deep link in under 30 minutes. Step by step, with iOS and Android code.

This guide walks you through creating your first WarpLink deep link and testing it on a device.

1. Create an Account

Sign up at warplink.app. You'll automatically get a free organization with 10,000 monthly clicks.

2. Register Your App

In the dashboard, go to Apps and click Register App. Fill in your platform details:

Go to Links and click Create Link, or use the API:

You'll get back a short link on your app's subdomain, like https://yourapp.aplnk.to/abc123.

myapp://promo is an in-app route, so it only opens for someone who already has the app. On iOS and Android, everyone else is sent to ios_fallback_url or android_fallback_url if the link has one, and to your app's store URL if it does not. Set at least one of those, or a visitor without your app has nowhere to land. On Android, use the https://play.google.com store address so installs match. See Getting more installs matched.

4. Install the SDK

Use an SDK key here, not an API key. The SDKs authenticate with an SDK key, created in the dashboard under Keys > SDK keys. It is pre-scoped for link resolution and install attribution. Only an SDK key records installs, so configure the SDK with it. If you have more than one app, choose the app when you create the key: a key tied to one app records installs only for that app.

Add WarpLink via Swift Package Manager:

Configure in your AppDelegate. One onLink callback receives taps and deferred installs:

Then forward the tapped URL to the SDK (there is no swizzling):

Scene-based apps forward from their scene delegate instead, and setting your delegate class to the drop-in WarpLinkAppDelegate or WarpLinkSceneDelegate does it for you. See the iOS SDK guide.

Add to your build.gradle.kts:

Initialize in your Application class. Cold start and the deferred check are wired automatically:

Install the package:

Configure in your app entry. One onLink callback handles cold start, warm start, and deferred installs:

On iOS, forward the tapped URL from your AppDelegate so taps reach the SDK. Add the WarpLink call to the delegate method you already have and keep returning your existing linking result, so React Navigation and Expo Linking still receive the URL:

Android needs no host code. The React Native SDK guide covers the Objective-C form, custom URL schemes, and Expo prebuild. If your app has a SceneDelegate (Info.plist declares UIApplicationSceneManifest), the iOS SceneDelegate hook is also required: iOS stops calling the AppDelegate method above once a scene exists.

Add the package:

Configure once from your root widget's initState. One onLink callback handles cold start, warm start, and deferred installs:

navigateTo waits for your navigator before it pushes a route. The Flutter SDK guide has the full root widget and the navigatorKey setup.

No AppDelegate, SceneDelegate, or MainActivity code is needed. On Android, set minSdk = 26 in android/app/build.gradle.kts and keep the launchMode your Flutter template sets. The Flutter SDK guide covers both platforms, including Flutter's own link handling.

Add one option so the SDK knows your link hosts from the very first launch: linkDomains: ["yourapp.aplnk.to"] at configure(), plus any custom domain such as links.yourapp.com, or the plist / manifest equivalent on native. Full detail in Use it in your app.

5. Enable Associated Domains (iOS Only)

Universal Links only open your app if iOS can verify your app is allowed to handle them. Before testing, add the Associated Domains capability in Xcode (Signing & Capabilities > + Capability > Associated Domains) with applinks:yourapp.aplnk.to (find your app's subdomain in the dashboard: open the app, then Settings), and enable Associated Domains on the same App ID at developer.apple.com. Skip this step and the link opens Safari instead of your app, with nothing in the redirect to explain why. Full steps: Configure Associated Domains for Universal Links.

Android has an equivalent requirement, but no separate developer-portal step: adding the android:autoVerify="true" intent filter to AndroidManifest.xml, covered in the Android SDK guide, is what triggers verification. React Native and Flutter apps need both: the React Native and Flutter guides cover the iOS capability and the Android intent filter together.

  1. Open https://yourapp.aplnk.to/abc123 on a device with your app installed
  2. The link should open your app directly via Universal Links (iOS) or App Links (Android)
  3. If the app isn't installed, the user is redirected to the app store

Next Steps