URLs & Web Fundamentals
What is deep linking?
Deep linking is the practice of using a URL that points directly to a specific piece of content, a particular page, section, product, article, or application state, rather than to a homepage or top-level entry point. A deep link navigates users to the exact content they are seeking in a single click rather than requiring them to navigate from a generic entry point to the specific destination.
The term deep reflects the navigation depth the link skips, instead of arriving at the surface level, a homepage or app launch screen, and drilling down through navigation layers to reach specific content, a deep link delivers users directly to the content at whatever depth it exists in the site or application structure.
In web contexts deep linking is the standard model of web navigation, every hyperlink that goes to a specific page rather than a homepage is technically a deep link. https://example.com/products/blue-widget is a deep link, it goes directly to the blue widget product page rather than to https://example.com. The term is most distinctively used in contexts where deep linking is technically complex or non-obvious, particularly mobile application deep linking, where navigating to specific in-app content from external contexts requires specific technical implementation.
For redirect management deep linking is relevant both as the fundamental model of redirect destinations, redirects should preserve path information and deliver users to specific content rather than generic entry points, and as a specific technical challenge in mobile contexts where redirects interact with app deep link schemes.
Types of deep linking
Deep linking encompasses several distinct technical approaches, each addressing different contexts and challenges.
Standard web deep links: the most straightforward form. Any URL with a specific path, /products/blue-widget, /blog/redirect-management-guide: is a deep link in the sense of pointing to specific content rather than the homepage. Web deep links work through standard HTTP, the URL specifies the exact resource and the server returns that resource directly. No special implementation is required beyond having a URL structure that allows direct navigation to specific content.
Web deep links break when URLs change without redirects, a product page that moves to a new URL but has no redirect from the old URL leaves deep links pointing to the old URL returning 404 errors. Maintaining deep link functionality through URL changes requires comprehensive redirect coverage, ensuring every URL that has been shared or linked continues to navigate correctly regardless of underlying content reorganisation.
Mobile app deep links, URI schemes: mobile applications can register custom URL schemes that the operating system routes to the app. myapp://products/blue-widget uses the custom scheme myapp://: when a browser or another app encounters this URL the operating system checks whether any installed app has registered the myapp scheme and opens the appropriate app to the specified content.
Custom URI scheme deep links have significant limitations. If the app is not installed the link fails, the operating system has no handler for the custom scheme and displays an error. The custom scheme provides no fallback for users without the app. Custom schemes can conflict, two apps registering the same scheme creates ambiguity about which app handles the link.
Universal links, iOS, and App Links, Android: the modern approach to mobile deep linking. Rather than custom URI schemes universal links and App Links use standard HTTPS URLs, https://example.com/products/blue-widget: that the operating system routes to the app if the app is installed and to the website if it is not.
Universal links require the app developer to host a verification file, apple-app-site-association for iOS, on the domain at a specific path. iOS verifies that the app is authorised to handle the domain’s URLs by checking this file. When a user taps a universal link on a device with the app installed iOS opens the app to the specified content. When the app is not installed iOS opens the URL in Safari, providing a seamless fallback to the web experience.
App Links for Android work similarly, a assetlinks.json file hosted on the domain verifies the relationship between the domain and the Android app. Android routes the URL to the app when installed or to the browser when not.
Universal links and App Links are the preferred deep linking approach for production mobile apps, they eliminate the failed link problem of custom URI schemes and provide natural fallback to web content.
Deferred deep linking: a deep linking mechanism that handles the case where a user clicks a deep link but does not have the app installed, sends them through an app store to install the app, and then deep links them to the specific content after installation. Standard deep links fail if the app is not installed, the link opens the website or errors. Deferred deep links remember the intended content destination through the installation process.
Deferred deep linking is implemented through mobile measurement platforms, Branch, AppsFlyer, Adjust, that use fingerprinting or device identifiers to match the original deep link click to the app session after installation. The matching enables the app to open directly to the intended content on first launch rather than the default launch screen.
Email and push notification deep links: links in email campaigns and push notifications that open the app to specific content when the app is installed. A promotional email linking to a specific product opens the product page in the app, providing a more engaging experience than opening a browser. Email deep links typically implement fallback to the mobile web version for recipients without the app installed.
Deep linking in mobile apps
Mobile app deep linking is the most technically complex and commercially significant area of deep linking practice, with substantial redirect management implications.
The deep link routing challenge: a mobile app is not a web server, it does not receive HTTP requests and route them to content the way a web server routes URL paths to page content. When an app opens from a deep link the operating system passes the URL to the app, the app must parse the URL and navigate its internal interface to the specified content. An app that receives myapp://products/blue-widget must extract the products/blue-widget path, look up the product, and navigate the app’s UI to display that product.
This routing logic must be implemented in the app, deep link handling code that maps URL path patterns to app navigation actions. As app content evolves, new content types, reorganised navigation, the deep link routing code must be maintained to ensure existing deep links continue to navigate correctly.
The installed app detection problem: a web page cannot directly detect whether a user has a mobile app installed. Attempting to open myapp://products/blue-widget either opens the app silently or fails silently, the web page cannot distinguish between success and failure. Modern implementations use intent-based systems, Android intent URLs, or universal links, iOS, Android App Links, to avoid this detection problem.
Deep link redirect flows: mobile deep link implementations frequently use redirect chains to handle the install/no-install decision. A marketing link, https://exmpl.co/campaign/product: redirects to a mobile measurement platform URL, which routes to either the App Store or Play Store with a deferred deep link if the app is not installed, or directly to the app via universal link if installed. The redirect chain serves routing and attribution purposes, but the chain adds latency and creates potential breakage points.
Deep linking and redirects
Deep linking and redirect management intersect in several important ways, both in web and mobile contexts.
Preserving deep link destinations in redirects: when a URL that has been used as a deep link changes the redirect must preserve the deep link destination, sending users to the equivalent specific content at the new URL rather than to a generic homepage. A product page that moves from old-domain.com/products/blue-widget to new-domain.com/products/blue-widget should be redirected with a path-preserving 301 redirect: not a global redirect to the new domain’s homepage.
Path-preserving redirects, old-domain.com/* → new-domain.com/*: maintain deep link functionality through domain changes. Every specific URL continues to navigate to the equivalent specific content at the new domain. A global redirect to the homepage breaks all deep links, users who saved specific product pages or shared specific article URLs all arrive at the homepage rather than the content they expected.
Deep link fallback and redirects: mobile deep link implementations frequently use web URLs as fallback destinations, when the app is not installed users are sent to the web equivalent of the deep-linked content. These fallback web URLs must be functioning, returning relevant content with 200 OK responses, for the deep link experience to degrade gracefully. A mobile deep link that falls back to a 404 error web page provides a poor experience for users without the app.
Maintaining redirect coverage for fallback URLs, ensuring web URLs that serve as mobile deep link fallbacks are not left as 404 errors when content reorganises, is a specific deep link maintenance requirement. When content moves on the web the deep link fallback URLs must be updated or redirected to maintain fallback functionality.
Short URL deep links: deep links are often distributed as short URLs, making long deep link URLs shareable in social media, email, and print. The redirect chain is: short URL → redirect → deep link destination. For mobile contexts the redirect destination may itself be a routing URL that sends users to the app or web fallback. Maintaining these redirect chains requires verifying that every link in the chain remains functional, a broken link at any point in the chain prevents users from reaching the deep-linked content.
Universal link verification and redirects: universal links on iOS require the apple-app-site-association file to be served at https://example.com/.well-known/apple-app-site-association with a 200 OK response and the correct content type. If the domain is behind a redirect, example.com redirecting to www.example.com: the verification file must be served on the redirect destination domain. iOS fetches the verification file from the domain in the universal link URL, redirect chains on the domain may cause verification failures if not correctly configured.
Deep linking best practices
Use universal links and App Links rather than custom URI schemes: custom URI scheme deep links fail when the app is not installed and cannot provide web fallback. Universal links and App Links provide the same in-app deep linking with automatic fallback to web content, a better user experience across all installation states.
Maintain web URL parity with app content: for every piece of content accessible through a deep link in the app there should be an equivalent web URL that either serves the content directly, for SEO-indexable content, or redirects to the most relevant web equivalent. Web URL parity enables link preview, accessibility, and fallback for users without the app.
Implement fallback URLs for all deep links: every mobile deep link should have a functioning fallback web URL. The fallback should navigate to the equivalent web content, not the homepage. Test fallback URLs regularly to ensure they remain functional as content evolves.
Path preservation in domain migrations: when a domain used for universal link verification or fallback URLs changes, through a domain migration, update the universal link configuration to reflect the new domain. The verification file must be present on the new domain. All existing deep links pointing to the old domain either need updating or need permanent redirects from the old domain to the new, with the path preserved.
Monitor deep link analytics: deep link performance data, click rates, conversion rates, app open rates, fallback rates, reveals deep linking effectiveness and identifies broken deep links. A high fallback rate on a link expected to open the app may indicate a universal link verification problem. A high 404 error rate on fallback URLs indicates missing redirect coverage.