On this page
A Branch.io deep link should open your app when installed and route to the store only when it is not. When the link goes to the store every time, Branch's match logic failed to detect the installed app. Six common causes, in priority order.
Fix steps
Confirm the Branch SDK is initialized in your app and the link domain matches your Branch dashboard. The SDK must call
Branch.getAutoInstance(this).initSession(...)(Android) orBranch.getInstance().initSession(...)(iOS) at app launch. Check that the link domain matches the Live key domain configured in the Branch dashboard.Verify universal links / App Links are set up correctly. Branch relies on the underlying OS deep-link system. If AASA (iOS) or assetlinks.json (Android) is broken, Branch falls back to a JS redirect that always hits the store. See universal links and App Links for the underlying checks.
Check the link origin. Branch links opened from inside Instagram, TikTok, Threads, or Messenger frequently fail to handoff to the app because the in-app webview does not respect the universal-link / App-Link association. The link falls through to Branch's web fallback, which routes to the store.
Inspect Branch dashboard logs. Branch's dashboard logs every click and the match decision. Filter to the test click and check whether Branch saw the install (
identity_idpopulated) or treated the user as fresh (identity_idnull). A fresh-user result means Branch could not identify the device — usually a webview issue.Test on a clean, fresh-install device first. A device that has the app installed but was never opened post-install has no Branch identity. The first launch must complete normally before deferred-deep-linking works.
Check the matchDuration setting. Branch's default match window is 7,200 seconds (2 hours). A click followed by an install outside that window will not match. Adjust in the dashboard if you expect longer install delays.
If the Branch link consistently fails inside Instagram and TikTok but works from Safari and Chrome, the issue is the in-app browser, not Branch. A redirect layer in front of Branch that bounces out of the webview before reaching the Branch link resolves it.
Still not working?
Branch is being deprecated for some legacy customers as Firebase Dynamic Links winds down and customers migrate. If you are evaluating alternatives, route the in-app-browser escape step yourself and pass through to the install/open destination directly.
Want the full diagnosis? See Branch.io alternatives and the in-app browser problem.
Related help
Need a deep-link layer that works inside Instagram and TikTok? Start free on linkboo →