Skip to content
All posts

2 min read

Do you need AI for deep linking?

Deep linking is mostly URL routing plus one small matching problem, and neither part needs a model.

Rewritten in October 2026. The February 2025 version was mostly filler, so I've cut it down to the argument.

No. I've been building apps since 2010, and most of deep linking is plumbing that's either configured right or broken.

iOS fetches apple-app-site-association and Android fetches assetlinks.json to decide whether your app may open links on your domain. They hold your app ID, package name and the SHA-256 fingerprints of your signing certificates, and a typo in the team ID means your links open in the browser until someone finds the typo. The tap is routing too: installed apps open through Universal Links or App Links, and otherwise the link page reads the user agent and sends the person to the App Store, the Play Store or a QR code.

Carrying the link across the install is mostly lookups. On Android the Play Store URL carries a click ID in its referrer parameter, and after install the app reads it back through the Play Install Referrer API and fetches that exact click. On iOS the link page puts the link on the clipboard and the app reads it on first launch (iOS asks the user to allow the paste).

The fuzzy part is the backup for when neither signal is there, which matches the app's first launch against recent clicks. It's the obvious place for a model, and also the place where being able to explain an answer matters most. DeepLinkNow scores it as a plain weighted sum of four signals, with missing values scoring nothing. Someone who tapped on Wi-Fi and opened the app three minutes later on mobile data scores 60, MEDIUM, and when a user emails asking why their invite didn't come through, the score shows which signals disagreed. The app reads confidenceScore and matchQuality and sets its own cut-off with minConfidence.

A model might get a few more correct matches out of the same inputs, but the inputs are an IP, a device type and screen size, a timestamp, a language and a timezone, which isn't much to learn from. Getting more would mean collecting more about people and keeping it longer.

The one model-shaped feature is the opt-in landing page translation on paid plans: your page text goes through Azure Translator once when you save it and the result is stored, so no tap waits on it.

Machine learning does make sense for ad fraud in paid acquisition, where some of the installs you pay networks for aren't people and spotting them at scale is a reasonable job for a model.

Try DeepLinkNow on your app.

Deep links and deferred deep links for iOS, Android, React Native and Flutter. Free to start.