[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"blog-deep-linking-guide-en":3},{"id":4,"title":5,"excerpt":6,"content":7,"coverImage":718,"meta":729,"status":733,"slug":734,"author":735,"category":744,"publishDate":749,"featured":641,"updatedAt":750,"createdAt":751,"contentHtml":752,"previewUrl":753,"localeSlugs":754},86,"Deep Linking Explained: Types, Setup & Use Cases (2026)","Deep linking routes users to a specific screen in an app, PWA, or site. Compare standard, deferred & contextual deep links plus iOS, Android, PWA setup.",{"root":8},{"type":9,"format":10,"indent":11,"version":12,"direction":13,"children":14},"root","",0,1,"ltr",[15,23,30,34,38,70,74,78,82,117,121,125,137,150,153,160,199,203,206,213,217,259,263,275,279,320,324,363,367,408,412,424,428,470,477,481,532,536,585,589,593,635,648,652,656,660,664,672,676,683,687,702,706,710,714],{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":18},"heading","h2",[19],{"type":20,"text":21,"format":11,"detail":11,"mode":22,"style":10,"version":12},"text","What is deep linking?","normal",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":25},"paragraph",[26,28],{"type":20,"text":27,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Deep linking",{"type":20,"text":29,"format":11,"detail":11,"mode":22,"style":10,"version":12}," is the practice of using a URL to send a user directly to a specific screen, content piece, or state inside a mobile app, progressive web app (PWA), or website — instead of dropping them on the homepage. A deep link encodes both the destination identifier (a product ID, conversation, article) and any context the app needs to render that exact view.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":31},[32],{"type":20,"text":33,"format":11,"detail":11,"mode":22,"style":10,"version":12},"In 2026, deep linking spans three platforms simultaneously: native iOS apps via Universal Links, Android apps via App Links, and PWAs via web manifest scope and URL handlers. A single deep-link strategy has to cover all three.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":35},[36],{"type":20,"text":37,"format":11,"detail":11,"mode":22,"style":10,"version":12},"The three most common implementations:",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":42},"list","bullet","ul",[43,52,61],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":45},"listitem",[46],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":47},[48,50],{"type":20,"text":49,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Standard deep link",{"type":20,"text":51,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — opens the app at a specific page if the app is already installed",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":54},2,[55],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":56},[57,59],{"type":20,"text":58,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Deferred deep link",{"type":20,"text":60,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — survives an app install: routes the user to the same in-app destination after they download the app for the first time",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":63},3,[64],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":65},[66,68],{"type":20,"text":67,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Contextual deep link",{"type":20,"text":69,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — carries metadata (campaign source, referrer, custom payload) that lets the destination screen personalize the experience",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":71},[72],{"type":20,"text":73,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Deep link vs regular URL: why it matters",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":75},[76],{"type":20,"text":77,"format":11,"detail":11,"mode":22,"style":10,"version":12},"A regular URL points to a web page. A deep link points to an experience that may live on three different surfaces (app / PWA / web) and needs to pick the right one based on what the user has installed and which device they are on.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":79},[80],{"type":20,"text":81,"format":11,"detail":11,"mode":22,"style":10,"version":12},"The business impact:",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":83},[84,92,100,108],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":85},[86],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":87},[88,90],{"type":20,"text":89,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Higher conversion",{"type":20,"text":91,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — users dropped onto the homepage of a 50-screen app convert at one-third the rate of users routed straight to the relevant screen",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":93},[94],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":95},[96,98],{"type":20,"text":97,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Attribution",{"type":20,"text":99,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — deep links carry campaign IDs through the install funnel, so you can attribute installs to specific ads, emails, or social posts",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":101},[102],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":103},[104,106],{"type":20,"text":105,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Retention",{"type":20,"text":107,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — re-engagement campaigns (push, email, SMS) that open the relevant in-app screen retain 2–3x better than ones that open the homepage",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":110},4,[111],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":112},[113,115],{"type":20,"text":114,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Cross-channel continuity",{"type":20,"text":116,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — a user clicking a WhatsApp message, an Instagram ad, or a Google search result lands at the same in-app destination regardless of channel",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":118},[119],{"type":20,"text":120,"format":11,"detail":11,"mode":22,"style":10,"version":12},"The three types of deep links",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":123},"h3",[124],{"type":20,"text":49,"format":11,"detail":11,"mode":22,"style":10,"version":12},{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":126},[127,129,131,133,135],{"type":20,"text":128,"format":11,"detail":11,"mode":22,"style":10,"version":12},"A ",{"type":20,"text":130,"format":12,"detail":11,"mode":22,"style":10,"version":12},"standard deep link",{"type":20,"text":132,"format":11,"detail":11,"mode":22,"style":10,"version":12}," routes a user to an in-app destination ",{"type":20,"text":134,"format":53,"detail":11,"mode":22,"style":10,"version":12},"only if",{"type":20,"text":136,"format":11,"detail":11,"mode":22,"style":10,"version":12}," the app is already installed. If not, the link 404s or falls back to a web page. Useful for re-engagement campaigns aimed at your existing user base.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":138},[139,141,144,146,148],{"type":20,"text":140,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Example: ",{"type":20,"text":142,"format":143,"detail":11,"mode":22,"style":10,"version":12},"myapp://product/123",16,{"type":20,"text":145,"format":11,"detail":11,"mode":22,"style":10,"version":12}," or ",{"type":20,"text":147,"format":143,"detail":11,"mode":22,"style":10,"version":12},"https://myapp.com/product/123",{"type":20,"text":149,"format":11,"detail":11,"mode":22,"style":10,"version":12}," (when configured for Universal Links / App Links).",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":151},[152],{"type":20,"text":58,"format":11,"detail":11,"mode":22,"style":10,"version":12},{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":154},[155,156,158],{"type":20,"text":128,"format":11,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":157,"format":12,"detail":11,"mode":22,"style":10,"version":12},"deferred deep link",{"type":20,"text":159,"format":11,"detail":11,"mode":22,"style":10,"version":12}," survives an app install. The flow:",{"type":39,"listType":161,"start":12,"tag":162,"format":10,"indent":11,"version":12,"direction":13,"children":163},"number","ol",[164,170,176,182,188],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":165},[166],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":167},[168],{"type":20,"text":169,"format":11,"detail":11,"mode":22,"style":10,"version":12},"User clicks a link, doesn't have the app installed",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":171},[172],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":173},[174],{"type":20,"text":175,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Redirected to App Store or Google Play",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":177},[178],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":179},[180],{"type":20,"text":181,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Installs and opens the app for the first time",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":183},[184],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":185},[186],{"type":20,"text":187,"format":11,"detail":11,"mode":22,"style":10,"version":12},"SDK fetches the original deep-link context from a deep-linking server",{"type":44,"value":189,"format":10,"indent":11,"version":12,"direction":13,"children":190},5,[191],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":192},[193,195,197],{"type":20,"text":194,"format":11,"detail":11,"mode":22,"style":10,"version":12},"User is routed to the originally intended in-app screen, ",{"type":20,"text":196,"format":12,"detail":11,"mode":22,"style":10,"version":12},"not",{"type":20,"text":198,"format":11,"detail":11,"mode":22,"style":10,"version":12}," the generic onboarding flow",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":200},[201],{"type":20,"text":202,"format":11,"detail":11,"mode":22,"style":10,"version":12},"This is the deep-link type that drives most paid-acquisition ROI — without it, every install starts from the homepage and conversion drops by 40–60%.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":204},[205],{"type":20,"text":67,"format":11,"detail":11,"mode":22,"style":10,"version":12},{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":207},[208,209,211],{"type":20,"text":128,"format":11,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":210,"format":12,"detail":11,"mode":22,"style":10,"version":12},"contextual deep link",{"type":20,"text":212,"format":11,"detail":11,"mode":22,"style":10,"version":12}," carries arbitrary payload alongside the destination — campaign source, referral code, A/B variant, customer name, gift token, and so on. The destination screen reads the payload and personalizes. Most modern deep-linking SDKs (Branch, AppsFlyer OneLink, Adjust, Kochava) treat contextual deep linking as the default mode.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":214},[215],{"type":20,"text":216,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Common payload patterns:",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":218},[219,227,235,243,251],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":220},[221],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":222},[223,225],{"type":20,"text":224,"format":143,"detail":11,"mode":22,"style":10,"version":12},"campaign_id",{"type":20,"text":226,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for attribution",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":228},[229],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":230},[231,233],{"type":20,"text":232,"format":143,"detail":11,"mode":22,"style":10,"version":12},"referrer_user_id",{"type":20,"text":234,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for invite flows",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":236},[237],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":238},[239,241],{"type":20,"text":240,"format":143,"detail":11,"mode":22,"style":10,"version":12},"coupon_code",{"type":20,"text":242,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for one-tap discount apply",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":244},[245],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":246},[247,249],{"type":20,"text":248,"format":143,"detail":11,"mode":22,"style":10,"version":12},"variant",{"type":20,"text":250,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for landing-page A/B tests",{"type":44,"value":189,"format":10,"indent":11,"version":12,"direction":13,"children":252},[253],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":254},[255,257],{"type":20,"text":256,"format":143,"detail":11,"mode":22,"style":10,"version":12},"next_screen",{"type":20,"text":258,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for multi-step funnels",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":260},[261],{"type":20,"text":262,"format":11,"detail":11,"mode":22,"style":10,"version":12},"iOS Universal Links vs Android App Links",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":264},[265,267,269,271,273],{"type":20,"text":266,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Both platforms moved away from custom URL schemes (",{"type":20,"text":268,"format":143,"detail":11,"mode":22,"style":10,"version":12},"myapp://",{"type":20,"text":270,"format":11,"detail":11,"mode":22,"style":10,"version":12},") to associated-domain links (",{"type":20,"text":272,"format":143,"detail":11,"mode":22,"style":10,"version":12},"https://myapp.com/...",{"type":20,"text":274,"format":11,"detail":11,"mode":22,"style":10,"version":12},"). The mechanism is similar in spirit but the implementation details differ.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":276},[277],{"type":20,"text":278,"format":11,"detail":11,"mode":22,"style":10,"version":12},"How iOS Universal Links work",{"type":39,"listType":161,"start":12,"tag":162,"format":10,"indent":11,"version":12,"direction":13,"children":280},[281,295,305,314],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":282},[283],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":284},[285,287,289,291,293],{"type":20,"text":286,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Your app declares an ",{"type":20,"text":288,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Associated Domain",{"type":20,"text":290,"format":11,"detail":11,"mode":22,"style":10,"version":12}," (",{"type":20,"text":292,"format":143,"detail":11,"mode":22,"style":10,"version":12},"applinks:myapp.com",{"type":20,"text":294,"format":11,"detail":11,"mode":22,"style":10,"version":12},") in its entitlements",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":296},[297],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":298},[299,301,303],{"type":20,"text":300,"format":11,"detail":11,"mode":22,"style":10,"version":12},"You host a file at ",{"type":20,"text":302,"format":143,"detail":11,"mode":22,"style":10,"version":12},"https://myapp.com/.well-known/apple-app-site-association",{"type":20,"text":304,"format":11,"detail":11,"mode":22,"style":10,"version":12}," (AASA) listing which paths route to which app and team ID",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":306},[307],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":308},[309,311,312],{"type":20,"text":310,"format":11,"detail":11,"mode":22,"style":10,"version":12},"When iOS sees a tap on ",{"type":20,"text":147,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":313,"format":11,"detail":11,"mode":22,"style":10,"version":12}," and the app is installed, it intercepts the URL and opens the app at the matching route",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":315},[316],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":317},[318],{"type":20,"text":319,"format":11,"detail":11,"mode":22,"style":10,"version":12},"If the app is not installed, the browser opens the same URL — so the same link serves both web and app users",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":321},[322],{"type":20,"text":323,"format":11,"detail":11,"mode":22,"style":10,"version":12},"How Android App Links work",{"type":39,"listType":161,"start":12,"tag":162,"format":10,"indent":11,"version":12,"direction":13,"children":325},[326,341,351,357],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":327},[328],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":329},[330,332,334,336,337,339],{"type":20,"text":331,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Your app declares intent filters in ",{"type":20,"text":333,"format":143,"detail":11,"mode":22,"style":10,"version":12},"AndroidManifest.xml",{"type":20,"text":335,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for ",{"type":20,"text":272,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":338,"format":11,"detail":11,"mode":22,"style":10,"version":12}," with ",{"type":20,"text":340,"format":143,"detail":11,"mode":22,"style":10,"version":12},"android:autoVerify=\"true\"",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":342},[343],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":344},[345,347,349],{"type":20,"text":346,"format":11,"detail":11,"mode":22,"style":10,"version":12},"You host ",{"type":20,"text":348,"format":143,"detail":11,"mode":22,"style":10,"version":12},"https://myapp.com/.well-known/assetlinks.json",{"type":20,"text":350,"format":11,"detail":11,"mode":22,"style":10,"version":12}," listing the app's package name and SHA-256 certificate fingerprint",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":352},[353],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":354},[355],{"type":20,"text":356,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Android verifies link ownership at install time",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":358},[359],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":360},[361],{"type":20,"text":362,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Subsequent taps on verified URLs open the app directly, with no disambiguation prompt",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":364},[365],{"type":20,"text":366,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Key differences",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":368},[369,377,389,400],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":370},[371],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":372},[373,375],{"type":20,"text":374,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Verification cadence",{"type":20,"text":376,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — iOS re-fetches AASA on every install and update; Android verifies once at install. Update your AASA cautiously — CDN caches can take 24–48 hours to refresh.",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":378},[379],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":380},[381,383,385,387],{"type":20,"text":382,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Fallback behavior",{"type":20,"text":384,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — iOS opens the URL in Safari if the app is not installed. Android shows a chooser dialog when ",{"type":20,"text":386,"format":143,"detail":11,"mode":22,"style":10,"version":12},"autoVerify",{"type":20,"text":388,"format":11,"detail":11,"mode":22,"style":10,"version":12}," fails.",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":390},[391],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":392},[393,395,397,398],{"type":20,"text":394,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Custom-scheme support",{"type":20,"text":396,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — both platforms still accept ",{"type":20,"text":268,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":399,"format":11,"detail":11,"mode":22,"style":10,"version":12}," for backwards compatibility, but Apple discourages it and Android no longer guarantees launch.",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":401},[402],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":403},[404,406],{"type":20,"text":405,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Cross-app linking",{"type":20,"text":407,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — iOS Universal Links work from Safari, Mail, Messages, and WhatsApp without issue. Android App Links work from most sources, but in-app browsers (Instagram, TikTok) sometimes capture the click and stay in-WebView — a recurring source of \"the link didn't open the app\" complaints.",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":409},[410],{"type":20,"text":411,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Deep linking in the PWA era",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":413},[414,416,418,420,422],{"type":20,"text":415,"format":11,"detail":11,"mode":22,"style":10,"version":12},"PWAs are treated like web pages by deep-link infrastructure, with one important twist: once the user has installed the PWA to the home screen, taps on URLs within the PWA's ",{"type":20,"text":417,"format":12,"detail":11,"mode":22,"style":10,"version":12},"scope",{"type":20,"text":419,"format":11,"detail":11,"mode":22,"style":10,"version":12}," (defined in ",{"type":20,"text":421,"format":143,"detail":11,"mode":22,"style":10,"version":12},"manifest.json",{"type":20,"text":423,"format":11,"detail":11,"mode":22,"style":10,"version":12},") open the installed PWA instead of the browser.",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":425},[426],{"type":20,"text":427,"format":11,"detail":11,"mode":22,"style":10,"version":12},"What this means for deep linking in 2026:",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":429},[430,442,454,462],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":431},[432],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":433},[434,436,438,440],{"type":20,"text":435,"format":12,"detail":11,"mode":22,"style":10,"version":12},"PWA-friendly deep links",{"type":20,"text":437,"format":11,"detail":11,"mode":22,"style":10,"version":12}," must be ",{"type":20,"text":439,"format":143,"detail":11,"mode":22,"style":10,"version":12},"https://",{"type":20,"text":441,"format":11,"detail":11,"mode":22,"style":10,"version":12}," URLs that match the PWA's scope — custom schemes don't apply to PWAs",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":443},[444],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":445},[446,448,450,452],{"type":20,"text":447,"format":12,"detail":11,"mode":22,"style":10,"version":12},"URL handlers",{"type":20,"text":449,"format":11,"detail":11,"mode":22,"style":10,"version":12}," (a manifest field) let a PWA register to handle URLs from ",{"type":20,"text":451,"format":53,"detail":11,"mode":22,"style":10,"version":12},"other",{"type":20,"text":453,"format":11,"detail":11,"mode":22,"style":10,"version":12}," origins, but adoption is still uneven across browsers",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":455},[456],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":457},[458,460],{"type":20,"text":459,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Web Share Target",{"type":20,"text":461,"format":11,"detail":11,"mode":22,"style":10,"version":12}," lets a PWA appear as a share destination in OS share sheets — adjacent to deep linking, useful for re-engagement",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":463},[464],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":465},[466,468],{"type":20,"text":467,"format":12,"detail":11,"mode":22,"style":10,"version":12},"No deferred install",{"type":20,"text":469,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — there is no PWA equivalent of \"the app store installed it, now restore context.\" PWA install is instant from the same URL the user is on, so context is preserved by default",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":471},[472,474,475],{"type":20,"text":473,"format":11,"detail":11,"mode":22,"style":10,"version":12},"For brands shipping both a native app AND a PWA, the right pattern is a single canonical ",{"type":20,"text":439,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":476,"format":11,"detail":11,"mode":22,"style":10,"version":12}," URL that resolves to the best surface available: installed PWA > native app > web page.",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":478},[479],{"type":20,"text":480,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Marketing use cases for deep linking",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":482},[483,491,499,507,515,523],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":484},[485],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":486},[487,489],{"type":20,"text":488,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Click-to-install attribution",{"type":20,"text":490,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — deep links carry campaign IDs through the install funnel. Without them, you can't tell which ad drove which install at user level.",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":492},[493],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":494},[495,497],{"type":20,"text":496,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Email and SMS re-engagement",{"type":20,"text":498,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — open links straight into the abandoned cart, the unread message, or the renewal screen",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":500},[501],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":502},[503,505],{"type":20,"text":504,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Social and influencer campaigns",{"type":20,"text":506,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — Instagram and TikTok in-app browsers often hijack URLs; a deep link with proper App Links / Universal Links setup escapes the WebView and opens the real app",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":508},[509],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":510},[511,513],{"type":20,"text":512,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Cross-device handoffs",{"type":20,"text":514,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — user starts a checkout on mobile web, deep link them to the same cart on the iOS app",{"type":44,"value":189,"format":10,"indent":11,"version":12,"direction":13,"children":516},[517],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":518},[519,521],{"type":20,"text":520,"format":12,"detail":11,"mode":22,"style":10,"version":12},"WhatsApp and click-to-WhatsApp ads",{"type":20,"text":522,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — pair WhatsApp templates with deep links to your PWA or app so the user lands inside the experience, not on a generic landing page",{"type":44,"value":524,"format":10,"indent":11,"version":12,"direction":13,"children":525},6,[526],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":527},[528,530],{"type":20,"text":529,"format":12,"detail":11,"mode":22,"style":10,"version":12},"A/B testing",{"type":20,"text":531,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — different campaign variants route to different landing screens via contextual deep-link payload",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":533},[534],{"type":20,"text":535,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Common pitfalls",{"type":39,"listType":40,"start":12,"tag":41,"format":10,"indent":11,"version":12,"direction":13,"children":537},[538,546,558,569,577],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":539},[540],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":541},[542,544],{"type":20,"text":543,"format":12,"detail":11,"mode":22,"style":10,"version":12},"In-app browser hijacking",{"type":20,"text":545,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — Instagram, TikTok, and WeChat in-app browsers may capture the click and load the URL in WebView instead of routing to the OS. Use Universal-Link-aware redirect services to force OS handoff.",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":547},[548],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":549},[550,552,554,556],{"type":20,"text":551,"format":12,"detail":11,"mode":22,"style":10,"version":12},"iOS Safari intelligent tracking",{"type":20,"text":553,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — Safari now blocks some cross-domain redirects that classic deep-link SDKs relied on. Use Apple's ",{"type":20,"text":555,"format":143,"detail":11,"mode":22,"style":10,"version":12},"SKAdNetwork",{"type":20,"text":557,"format":11,"detail":11,"mode":22,"style":10,"version":12}," or postback-style attribution instead of cookie-based identification.",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":559},[560],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":561},[562,564,566,567],{"type":20,"text":563,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Custom-scheme rot",{"type":20,"text":565,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — ",{"type":20,"text":268,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":568,"format":11,"detail":11,"mode":22,"style":10,"version":12}," schemes still work but increasingly fail silently. Migrate everything to associated-domain links.",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":570},[571],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":572},[573,575],{"type":20,"text":574,"format":12,"detail":11,"mode":22,"style":10,"version":12},"No fallback path",{"type":20,"text":576,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — when the app is not installed and the user is not in a deep-link-aware browser, you need a web page that handles the same intent. Build the fallback first, not as an afterthought.",{"type":44,"value":189,"format":10,"indent":11,"version":12,"direction":13,"children":578},[579],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":580},[581,583],{"type":20,"text":582,"format":12,"detail":11,"mode":22,"style":10,"version":12},"SDK lock-in",{"type":20,"text":584,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — Branch, AppsFlyer OneLink, Adjust, and Kochava all do deep linking + attribution but with different SDK weights and contractual terms. Test fallback behavior before committing.",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":586},[587],{"type":20,"text":588,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Building a deep-link infrastructure that scales",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":590},[591],{"type":20,"text":592,"format":11,"detail":11,"mode":22,"style":10,"version":12},"The hard part of deep linking is not the OS plumbing — it is the operational layer:",{"type":39,"listType":161,"start":12,"tag":162,"format":10,"indent":11,"version":12,"direction":13,"children":594},[595,603,611,619,627],{"type":44,"value":12,"format":10,"indent":11,"version":12,"direction":13,"children":596},[597],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":598},[599,601],{"type":20,"text":600,"format":12,"detail":11,"mode":22,"style":10,"version":12},"A single canonical short link",{"type":20,"text":602,"format":11,"detail":11,"mode":22,"style":10,"version":12}," per destination, mapped to all three surfaces (iOS / Android / PWA + web)",{"type":44,"value":53,"format":10,"indent":11,"version":12,"direction":13,"children":604},[605],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":606},[607,609],{"type":20,"text":608,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Server-side routing",{"type":20,"text":610,"format":11,"detail":11,"mode":22,"style":10,"version":12}," so you can change destinations without re-issuing links",{"type":44,"value":62,"format":10,"indent":11,"version":12,"direction":13,"children":612},[613],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":614},[615,617],{"type":20,"text":616,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Attribution that survives the install funnel",{"type":20,"text":618,"format":11,"detail":11,"mode":22,"style":10,"version":12}," with campaign, channel, and variant pinned through to the first in-app event",{"type":44,"value":109,"format":10,"indent":11,"version":12,"direction":13,"children":620},[621],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":622},[623,625],{"type":20,"text":624,"format":12,"detail":11,"mode":22,"style":10,"version":12},"WhatsApp and ad-platform compatibility",{"type":20,"text":626,"format":11,"detail":11,"mode":22,"style":10,"version":12}," — short, branded URLs that pass WhatsApp link preview, Meta Ads safety checks, and Google Ads policy review",{"type":44,"value":189,"format":10,"indent":11,"version":12,"direction":13,"children":628},[629],{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":630},[631,633],{"type":20,"text":632,"format":12,"detail":11,"mode":22,"style":10,"version":12},"A/B variants on the same link",{"type":20,"text":634,"format":11,"detail":11,"mode":22,"style":10,"version":12}," so you can test landing screens without rebuilding campaigns",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":636},[637,646],{"type":638,"fields":639,"format":10,"indent":11,"version":62,"direction":13,"children":643},"link",{"url":640,"newTab":641,"linkType":642},"https://deepclick.com/",false,"custom",[644],{"type":20,"text":645,"format":11,"detail":11,"mode":22,"style":10,"version":12},"DeepClick",{"type":20,"text":647,"format":11,"detail":11,"mode":22,"style":10,"version":12}," provides this layer: branded short links that route between native app, installed PWA, and web fallback automatically, with end-to-end attribution back to Meta Ads, Google Ads, and AppsFlyer / Adjust. For teams running paid acquisition into PWAs or hybrid app/PWA experiences, this is usually the missing piece between \"we have Universal Links set up\" and \"we can actually attribute and scale.\"",{"type":16,"tag":17,"format":10,"indent":11,"version":12,"direction":13,"children":649},[650],{"type":20,"text":651,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Frequently asked questions",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":653},[654],{"type":20,"text":655,"format":11,"detail":11,"mode":22,"style":10,"version":12},"What is the difference between a deep link and a URL?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":657},[658],{"type":20,"text":659,"format":11,"detail":11,"mode":22,"style":10,"version":12},"A regular URL points to a web page. A deep link encodes a destination inside an app, PWA, or specific web-page state, and resolves to the best available surface (installed app, PWA, or web) based on the user's device and what they have installed.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":661},[662],{"type":20,"text":663,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Do deep links work without the app installed?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":665},[666,668,670],{"type":20,"text":667,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Standard deep links don't — they fail or fall back to the web. ",{"type":20,"text":669,"format":12,"detail":11,"mode":22,"style":10,"version":12},"Deferred",{"type":20,"text":671,"format":11,"detail":11,"mode":22,"style":10,"version":12}," deep links do: they survive the app install and resume the original intent after first launch.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":673},[674],{"type":20,"text":675,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Are deep links still relevant in 2026 with PWAs?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":677},[678,680,681],{"type":20,"text":679,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Yes, and they're more important. PWAs add a third surface alongside iOS and Android apps, so a deep-link strategy has to route the user to the right one. A single canonical ",{"type":20,"text":439,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":682,"format":11,"detail":11,"mode":22,"style":10,"version":12}," URL is the cleanest approach.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":684},[685],{"type":20,"text":686,"format":11,"detail":11,"mode":22,"style":10,"version":12},"How are iOS Universal Links different from Android App Links?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":688},[689,691,692,694,696,698,700],{"type":20,"text":690,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Mechanically very similar — both use ",{"type":20,"text":439,"format":143,"detail":11,"mode":22,"style":10,"version":12},{"type":20,"text":693,"format":11,"detail":11,"mode":22,"style":10,"version":12}," URLs verified via a well-known JSON file. iOS re-verifies on every install/update via ",{"type":20,"text":695,"format":143,"detail":11,"mode":22,"style":10,"version":12},"apple-app-site-association",{"type":20,"text":697,"format":11,"detail":11,"mode":22,"style":10,"version":12},"; Android verifies once at install via ",{"type":20,"text":699,"format":143,"detail":11,"mode":22,"style":10,"version":12},"assetlinks.json",{"type":20,"text":701,"format":11,"detail":11,"mode":22,"style":10,"version":12},". Fallback behavior also differs: iOS opens Safari, Android shows a chooser.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":703},[704],{"type":20,"text":705,"format":11,"detail":11,"mode":22,"style":10,"version":12},"What's the best deep-linking SDK?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":707},[708],{"type":20,"text":709,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Branch, AppsFlyer OneLink, Adjust, and Kochava all support deep linking + attribution. Choose based on existing attribution-platform fit, SDK weight, and how aggressively the SDK fights in-app browser hijacking on Instagram / TikTok / WeChat.",{"type":16,"tag":122,"format":10,"indent":11,"version":12,"direction":13,"children":711},[712],{"type":20,"text":713,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Can I use deep links in WhatsApp?",{"type":24,"format":10,"indent":11,"version":12,"direction":13,"children":715},[716],{"type":20,"text":717,"format":11,"detail":11,"mode":22,"style":10,"version":12},"Yes. Use a branded short link in your WhatsApp template; WhatsApp will render a preview card, and the tap routes via Universal Links / App Links to the native app or PWA. Naked URLs work but have lower click-through rates than branded short links.",{"id":719,"alt":720,"updatedAt":721,"createdAt":721,"url":722,"thumbnailURL":723,"filename":724,"mimeType":725,"filesize":726,"width":727,"height":728},295,"Deep Linking 路由可视化：URL 节点分流至 App / PWA / Web 三种落地载体","2026-06-09T06:49:58.969Z","https://cms-r2.deepclick.com/hero-b-dba4dde41c1f.png",null,"hero-b-dba4dde41c1f.png","image/png",1946114,1536,1024,{"title":730,"description":731,"image":732},"Deep Linking Guide: Universal Links, App Links & PWAs","Deep linking guide for 2026: standard vs deferred vs contextual deep links, iOS Universal Links, Android App Links, PWA scope & marketing attribution.",{"id":719,"alt":720,"updatedAt":721,"createdAt":721,"url":722,"thumbnailURL":723,"filename":724,"mimeType":725,"filesize":726,"width":727,"height":728},"published","deep-linking-guide",{"id":53,"name":645,"avatar":736,"updatedAt":742,"createdAt":743},{"id":737,"alt":645,"updatedAt":738,"createdAt":738,"url":739,"thumbnailURL":723,"filename":740,"mimeType":725,"filesize":741,"width":728,"height":728},25,"2026-04-22T08:09:22.606Z","https://cms-r2.deepclick.com/头像-白.png","头像-白.png",26626,"2026-04-22T08:09:35.299Z","2026-04-22T06:42:49.116Z",{"id":62,"titleZh":745,"titleEn":746,"slug":747,"order":53,"updatedAt":748,"createdAt":748},"行业信息","Industry Info","industry-info","2026-04-22T03:32:29.529Z","2026-06-09T06:51:18.299Z","2026-06-09T07:03:00.728Z","2026-06-09T06:51:30.184Z","\u003Cdiv class=\"payload-richtext\">\u003Ch2>What is deep linking?\u003C/h2>\u003Cp>\u003Cstrong>Deep linking\u003C/strong> is the practice of using a URL to send a user directly to a specific screen, content piece, or state inside a mobile app, progressive web app (PWA), or website — instead of dropping them on the homepage. A deep link encodes both the destination identifier (a product ID, conversation, article) and any context the app needs to render that exact view.\u003C/p>\u003Cp>In 2026, deep linking spans three platforms simultaneously: native iOS apps via Universal Links, Android apps via App Links, and PWAs via web manifest scope and URL handlers. A single deep-link strategy has to cover all three.\u003C/p>\u003Cp>The three most common implementations:\u003C/p>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>Standard deep link\u003C/strong> — opens the app at a specific page if the app is already installed\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>Deferred deep link\u003C/strong> — survives an app install: routes the user to the same in-app destination after they download the app for the first time\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Contextual deep link\u003C/strong> — carries metadata (campaign source, referrer, custom payload) that lets the destination screen personalize the experience\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>Deep link vs regular URL: why it matters\u003C/h2>\u003Cp>A regular URL points to a web page. A deep link points to an experience that may live on three different surfaces (app / PWA / web) and needs to pick the right one based on what the user has installed and which device they are on.\u003C/p>\u003Cp>The business impact:\u003C/p>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>Higher conversion\u003C/strong> — users dropped onto the homepage of a 50-screen app convert at one-third the rate of users routed straight to the relevant screen\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>Attribution\u003C/strong> — deep links carry campaign IDs through the install funnel, so you can attribute installs to specific ads, emails, or social posts\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Retention\u003C/strong> — re-engagement campaigns (push, email, SMS) that open the relevant in-app screen retain 2–3x better than ones that open the homepage\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>Cross-channel continuity\u003C/strong> — a user clicking a WhatsApp message, an Instagram ad, or a Google search result lands at the same in-app destination regardless of channel\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>The three types of deep links\u003C/h2>\u003Ch3>Standard deep link\u003C/h3>\u003Cp>A \u003Cstrong>standard deep link\u003C/strong> routes a user to an in-app destination \u003Cem>only if\u003C/em> the app is already installed. If not, the link 404s or falls back to a web page. Useful for re-engagement campaigns aimed at your existing user base.\u003C/p>\u003Cp>Example: \u003Ccode>myapp://product/123\u003C/code> or \u003Ccode>https://myapp.com/product/123\u003C/code> (when configured for Universal Links / App Links).\u003C/p>\u003Ch3>Deferred deep link\u003C/h3>\u003Cp>A \u003Cstrong>deferred deep link\u003C/strong> survives an app install. The flow:\u003C/p>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>User clicks a link, doesn&#39;t have the app installed\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>Redirected to App Store or Google Play\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>Installs and opens the app for the first time\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>SDK fetches the original deep-link context from a deep-linking server\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cp>User is routed to the originally intended in-app screen, \u003Cstrong>not\u003C/strong> the generic onboarding flow\u003C/p>\u003C/li>\u003C/ol>\u003Cp>This is the deep-link type that drives most paid-acquisition ROI — without it, every install starts from the homepage and conversion drops by 40–60%.\u003C/p>\u003Ch3>Contextual deep link\u003C/h3>\u003Cp>A \u003Cstrong>contextual deep link\u003C/strong> carries arbitrary payload alongside the destination — campaign source, referral code, A/B variant, customer name, gift token, and so on. The destination screen reads the payload and personalizes. Most modern deep-linking SDKs (Branch, AppsFlyer OneLink, Adjust, Kochava) treat contextual deep linking as the default mode.\u003C/p>\u003Cp>Common payload patterns:\u003C/p>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Ccode>campaign_id\u003C/code> for attribution\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Ccode>referrer_user_id\u003C/code> for invite flows\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Ccode>coupon_code\u003C/code> for one-tap discount apply\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Ccode>variant\u003C/code> for landing-page A/B tests\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cp>\u003Ccode>next_screen\u003C/code> for multi-step funnels\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>iOS Universal Links vs Android App Links\u003C/h2>\u003Cp>Both platforms moved away from custom URL schemes (\u003Ccode>myapp://\u003C/code>) to associated-domain links (\u003Ccode>https://myapp.com/...\u003C/code>). The mechanism is similar in spirit but the implementation details differ.\u003C/p>\u003Ch3>How iOS Universal Links work\u003C/h3>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>Your app declares an \u003Cstrong>Associated Domain\u003C/strong> (\u003Ccode>applinks:myapp.com\u003C/code>) in its entitlements\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>You host a file at \u003Ccode>https://myapp.com/.well-known/apple-app-site-association\u003C/code> (AASA) listing which paths route to which app and team ID\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>When iOS sees a tap on \u003Ccode>https://myapp.com/product/123\u003C/code> and the app is installed, it intercepts the URL and opens the app at the matching route\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>If the app is not installed, the browser opens the same URL — so the same link serves both web and app users\u003C/p>\u003C/li>\u003C/ol>\u003Ch3>How Android App Links work\u003C/h3>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>Your app declares intent filters in \u003Ccode>AndroidManifest.xml\u003C/code> for \u003Ccode>https://myapp.com/...\u003C/code> with \u003Ccode>android:autoVerify=&quot;true&quot;\u003C/code>\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>You host \u003Ccode>https://myapp.com/.well-known/assetlinks.json\u003C/code> listing the app&#39;s package name and SHA-256 certificate fingerprint\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>Android verifies link ownership at install time\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>Subsequent taps on verified URLs open the app directly, with no disambiguation prompt\u003C/p>\u003C/li>\u003C/ol>\u003Ch3>Key differences\u003C/h3>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>Verification cadence\u003C/strong> — iOS re-fetches AASA on every install and update; Android verifies once at install. Update your AASA cautiously — CDN caches can take 24–48 hours to refresh.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>Fallback behavior\u003C/strong> — iOS opens the URL in Safari if the app is not installed. Android shows a chooser dialog when \u003Ccode>autoVerify\u003C/code> fails.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Custom-scheme support\u003C/strong> — both platforms still accept \u003Ccode>myapp://\u003C/code> for backwards compatibility, but Apple discourages it and Android no longer guarantees launch.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>Cross-app linking\u003C/strong> — iOS Universal Links work from Safari, Mail, Messages, and WhatsApp without issue. Android App Links work from most sources, but in-app browsers (Instagram, TikTok) sometimes capture the click and stay in-WebView — a recurring source of &quot;the link didn&#39;t open the app&quot; complaints.\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>Deep linking in the PWA era\u003C/h2>\u003Cp>PWAs are treated like web pages by deep-link infrastructure, with one important twist: once the user has installed the PWA to the home screen, taps on URLs within the PWA&#39;s \u003Cstrong>scope\u003C/strong> (defined in \u003Ccode>manifest.json\u003C/code>) open the installed PWA instead of the browser.\u003C/p>\u003Cp>What this means for deep linking in 2026:\u003C/p>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>PWA-friendly deep links\u003C/strong> must be \u003Ccode>https://\u003C/code> URLs that match the PWA&#39;s scope — custom schemes don&#39;t apply to PWAs\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>URL handlers\u003C/strong> (a manifest field) let a PWA register to handle URLs from \u003Cem>other\u003C/em> origins, but adoption is still uneven across browsers\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Web Share Target\u003C/strong> lets a PWA appear as a share destination in OS share sheets — adjacent to deep linking, useful for re-engagement\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>No deferred install\u003C/strong> — there is no PWA equivalent of &quot;the app store installed it, now restore context.&quot; PWA install is instant from the same URL the user is on, so context is preserved by default\u003C/p>\u003C/li>\u003C/ul>\u003Cp>For brands shipping both a native app AND a PWA, the right pattern is a single canonical \u003Ccode>https://\u003C/code> URL that resolves to the best surface available: installed PWA &gt; native app &gt; web page.\u003C/p>\u003Ch2>Marketing use cases for deep linking\u003C/h2>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>Click-to-install attribution\u003C/strong> — deep links carry campaign IDs through the install funnel. Without them, you can&#39;t tell which ad drove which install at user level.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>Email and SMS re-engagement\u003C/strong> — open links straight into the abandoned cart, the unread message, or the renewal screen\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Social and influencer campaigns\u003C/strong> — Instagram and TikTok in-app browsers often hijack URLs; a deep link with proper App Links / Universal Links setup escapes the WebView and opens the real app\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>Cross-device handoffs\u003C/strong> — user starts a checkout on mobile web, deep link them to the same cart on the iOS app\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cp>\u003Cstrong>WhatsApp and click-to-WhatsApp ads\u003C/strong> — pair WhatsApp templates with deep links to your PWA or app so the user lands inside the experience, not on a generic landing page\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"6\"\n        >\u003Cp>\u003Cstrong>A/B testing\u003C/strong> — different campaign variants route to different landing screens via contextual deep-link payload\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>Common pitfalls\u003C/h2>\u003Cul class=\"list-bullet\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>In-app browser hijacking\u003C/strong> — Instagram, TikTok, and WeChat in-app browsers may capture the click and load the URL in WebView instead of routing to the OS. Use Universal-Link-aware redirect services to force OS handoff.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>iOS Safari intelligent tracking\u003C/strong> — Safari now blocks some cross-domain redirects that classic deep-link SDKs relied on. Use Apple&#39;s \u003Ccode>SKAdNetwork\u003C/code> or postback-style attribution instead of cookie-based identification.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Custom-scheme rot\u003C/strong> — \u003Ccode>myapp://\u003C/code> schemes still work but increasingly fail silently. Migrate everything to associated-domain links.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>No fallback path\u003C/strong> — when the app is not installed and the user is not in a deep-link-aware browser, you need a web page that handles the same intent. Build the fallback first, not as an afterthought.\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cp>\u003Cstrong>SDK lock-in\u003C/strong> — Branch, AppsFlyer OneLink, Adjust, and Kochava all do deep linking + attribution but with different SDK weights and contractual terms. Test fallback behavior before committing.\u003C/p>\u003C/li>\u003C/ul>\u003Ch2>Building a deep-link infrastructure that scales\u003C/h2>\u003Cp>The hard part of deep linking is not the OS plumbing — it is the operational layer:\u003C/p>\u003Col class=\"list-number\">\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"1\"\n        >\u003Cp>\u003Cstrong>A single canonical short link\u003C/strong> per destination, mapped to all three surfaces (iOS / Android / PWA + web)\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"2\"\n        >\u003Cp>\u003Cstrong>Server-side routing\u003C/strong> so you can change destinations without re-issuing links\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"3\"\n        >\u003Cp>\u003Cstrong>Attribution that survives the install funnel\u003C/strong> with campaign, channel, and variant pinned through to the first in-app event\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"4\"\n        >\u003Cp>\u003Cstrong>WhatsApp and ad-platform compatibility\u003C/strong> — short, branded URLs that pass WhatsApp link preview, Meta Ads safety checks, and Google Ads policy review\u003C/p>\u003C/li>\u003Cli\n          class=\"\"\n          style=\"\"\n          value=\"5\"\n        >\u003Cp>\u003Cstrong>A/B variants on the same link\u003C/strong> so you can test landing screens without rebuilding campaigns\u003C/p>\u003C/li>\u003C/ol>\u003Cp>\u003Ca href=\"https://deepclick.com/\">DeepClick\u003C/a> provides this layer: branded short links that route between native app, installed PWA, and web fallback automatically, with end-to-end attribution back to Meta Ads, Google Ads, and AppsFlyer / Adjust. For teams running paid acquisition into PWAs or hybrid app/PWA experiences, this is usually the missing piece between &quot;we have Universal Links set up&quot; and &quot;we can actually attribute and scale.&quot;\u003C/p>\u003Ch2>Frequently asked questions\u003C/h2>\u003Ch3>What is the difference between a deep link and a URL?\u003C/h3>\u003Cp>A regular URL points to a web page. A deep link encodes a destination inside an app, PWA, or specific web-page state, and resolves to the best available surface (installed app, PWA, or web) based on the user&#39;s device and what they have installed.\u003C/p>\u003Ch3>Do deep links work without the app installed?\u003C/h3>\u003Cp>Standard deep links don&#39;t — they fail or fall back to the web. \u003Cstrong>Deferred\u003C/strong> deep links do: they survive the app install and resume the original intent after first launch.\u003C/p>\u003Ch3>Are deep links still relevant in 2026 with PWAs?\u003C/h3>\u003Cp>Yes, and they&#39;re more important. PWAs add a third surface alongside iOS and Android apps, so a deep-link strategy has to route the user to the right one. A single canonical \u003Ccode>https://\u003C/code> URL is the cleanest approach.\u003C/p>\u003Ch3>How are iOS Universal Links different from Android App Links?\u003C/h3>\u003Cp>Mechanically very similar — both use \u003Ccode>https://\u003C/code> URLs verified via a well-known JSON file. iOS re-verifies on every install/update via \u003Ccode>apple-app-site-association\u003C/code>; Android verifies once at install via \u003Ccode>assetlinks.json\u003C/code>. Fallback behavior also differs: iOS opens Safari, Android shows a chooser.\u003C/p>\u003Ch3>What&#39;s the best deep-linking SDK?\u003C/h3>\u003Cp>Branch, AppsFlyer OneLink, Adjust, and Kochava all support deep linking + attribution. Choose based on existing attribution-platform fit, SDK weight, and how aggressively the SDK fights in-app browser hijacking on Instagram / TikTok / WeChat.\u003C/p>\u003Ch3>Can I use deep links in WhatsApp?\u003C/h3>\u003Cp>Yes. Use a branded short link in your WhatsApp template; WhatsApp will render a preview card, and the tap routes via Universal Links / App Links to the native app or PWA. Naked URLs work but have lower click-through rates than branded short links.\u003C/p>\u003C/div>","https://deepclick.com/resources/blog/deep-linking-guide",{"en":734},1780988738136]