Partner
Playbook
← All practices
← Back to knowledge base

Practice 04.05 · ASO and SEO

Connect search, web, and app with deep links

A deep link is a precise address inside the app. It should preserve the original task after a tap, sign-in, or even a new install, and provide a clear fallback when the destination is unavailable.

Practice outcomeA continuous-journey map and iOS/Android test matrix covering installed, signed-out, not-installed, and outdated-app states.

2 hours for the first route

In plain language

A link should lead to the right room, not just the building

Someone reading a guide about their status expects the tap to open that status. The home screen makes them find the way all over again. A good route remembers the destination through sign-in and offers a safe alternative when the screen is unavailable.

What you will need

One routeA specific web page or message, a destination screen in the app, and one expected action.
DevelopmentAn iOS and Android developer, or a links owner who knows the supported paths and the sign-in behavior.
TestingDevices on both platforms, the app installed and uninstalled, test accounts, and analytics events.
Terms in plain language

Term

A link to a specific app screen

After a tap, the user lands in the promised journey rather than on the home screen.

ExampleA push about a saved lesson opens that lesson directly.

Term

SEO

Improving website pages for search

Useful pages answer real user questions and help people find the product through search engines.

ExampleOne page answers one question, explains constraints, and leads to a relevant app journey.

Term

Analytics event

A record of a specific user action

The app sends an event when a user opens a screen, taps a button, or completes an action.

Exampleregistration_started and registration_completed reveal how many people abandon registration.

Term

Conversion

The share of people moving to the next step

Shows how many people who started a step completed it or reached the next one.

Example80 registrations completed from 100 started: 80 ÷ 100 × 100% = 80% conversion.

01

When to use it

Clicks from search, the site, email, or push open the home page, get lost after sign-in or a fresh install, and leave the target action unmeasurable.

In plain language

What to describe before development

First map the behavior for every user state. The same link must not silently dead-end when the app or the screen is missing.

Route map

Match the source, the promised screen, the required sign-in, and the target action after opening.

Start with the single most important link and write down the expected behavior for the five states by hand.

Technical errors

Collect successful opens, fallback routes, unknown paths, and the app version for every link.

Without events, keep a manual test log with the device, version, steps, and a video of the error.

Taps and actions

Join the tap, the destination-screen open, and the completed action with one route identifier.

Add a technical route_id parameter to the link and the screen event before the next launch.

02

Set up a continuous route

1

Choose one task and screen

Start with a specific promise and a final result. Do not create a universal “open the app” link.

Where to do it
In the first row of the route map.
What the result looks like
The “How to check status” article → the specific status screen → the user sees the next step.
2

Describe the user states

Write down the behavior when the app is installed, the user is signed out, the version is outdated, or the app is missing.

Where to do it
In the rows of the test matrix.
What the result looks like
After sign-in the original route ID survives and opens the status, not the home screen.
3

Add a safe fallback

If the destination screen is unavailable, show a relevant web page, the store, or help. Do not leave a blank screen and an unexplained error.

Where to do it
In the link router settings.
What the result looks like
App not installed → the web guide stays available, plus a clear button to the store.
4

Test on real devices

Check iOS and Android, cold start, sign-in, an old version, and entry from different sources. Record the actual result for every row.

Where to do it
On the devices and versions the audience actually uses.
What the result looks like
Android 13 from the browser, iOS 17 from email, and both platforms after signing out.
5

Join the tap to the outcome

Pass route_id — the route identifier — and record the destination-screen open, the fallback path, errors, and the target action.

Where to do it
In the link parameters and analytics events.
What the result looks like
A tap on the site → the app opens → the status is viewed → the next step, with route_id=status_help.

03

Practical examples

01

Sign-in does not erase the destination

The status link asks the user to sign in, keeps the route_id, and after sign-in opens the promised screen instead of the home page.

02

No app — no dead end

The user stays on the useful web guide and gets a clear link to the store. After installing, the route continues — or a web alternative opens safely.

The finished artifact

Verification matrix for the “Open status” route

Walk every row on iOS and Android. “The app opened” is not enough — the promised screen must appear.

StateExpected pathFallback routeResult
Installed, signed inStraight to the status screenNot neededCheck iOS/Android
Installed, signed outSign-in → status screenPreserve the destinationThe route ID is not lost
App not installedStore pageThe web answer stays availableNo error shown
Outdated versionA supported screen or an update promptWeb versionNo dead end
Screen removedA current alternativeHelp sectionA “route not found” event

The scenario is ready when the tap shows the promised screen in every supported state, and route errors land in the report with the version and platform.

04

Deep-link checklist

The link is ready only after the full path is tested — not after one lucky open on the developer's device.

5

05

How to know the route works

1

Technical success

The share of taps that opened the promised screen or a correct fallback without an error.

2

Context preserved

After sign-in or a fresh install, the user continues the original task instead of landing on the home screen.

3

Useful action

Users complete the action after the tap, while “route not found” errors and back-navigation decline.

A deep link counts as working only when users reach the promised screen in every supported state — not just in the developer's test.