iOS / Android
Link User Experience
Build quick links that should deep link (vs. open home screen)
Email the link to yourself
Do NOT paste the link in the browser bar
Ensure the email does not “wrap” the link (i.e., tracking or security domain)
Click link from a test device (not a simulator)
Ensure the app version tested uses the same API key as the link (test vs. live)
Click link in these scenarios
SDK Initialization
Enable debug mode for Branch SDK by calling the
setDebug()/enableLogging()
before the SDK is initialized. You can find examples in the above videos, and in our iOS or Android documentation.Launch your application, and view the debug logs in the log console (i.e. Logcat).
Verify that Branch SDK is initialized correctly, by making sure the SDK made a request to v1/open or v1/install endpoints:
Close the application and verify that the SDK sent a request to the v1/close endpoint.
Repeat steps 2-4 a couple of times to make sure the requests are sent on every action, and not just the first time you launch the application.
Create a Branch link through either of the available Branch methods, some of which are: Quick Links, API, or any of the SDK methods.
Use the following methods for iOS or Android to test the link, and make sure that it is all set up. Make sure to verify that link data is passed into the application every time, and your application is able to parse the data correctly via
initSession()
callback.
SDK Custom Event Logging
Non-referred event:
Verify that each event is sent to Branch by verifying the Logs (with debug/logging enabled, you should see a v2/event call) and Dashboard Liveview events.
If you are a Data Feeds user, you should see this event attributed in a Custom Event export.
If it is a commerce event - make sure all the commerce data is also passed to Branch through the same sources.
Referred event
Click on a link
If it is a commerce event - make sure all the commerce data is also passed to Branch through the same sources
Verify that each event is sent to Branch
SDK: Verify the Logs (by calling the setDebug()/enableLogging(), you should see a v2/event call) and
Data Feeds: You should see this event attributed with link ID in the last_attributed_touch_data_tilde_id data (Export API, CSVs, Webhooks)
Dashboard Liveview events: You should see the event triggered and the link in the Session Referring Link URL
Deferred Deep Linking
Connect a test device to your computer
Uninstall all app versions (test & prod) from device
Click a branch link in device
Let link redirect to the App Store, but do NOT download the app
Build app into the device via xcode|android studio
Ensure app build contains Branch SDK and the same API key as the link
MUST happen within 2 hours of clicking link (Branch matching window defaults to 2 hours)
Open app to initialize Branch SDK, which matches browser<>device pair with most recent click
If device clicked any branch link before, match is guaranteed --- If not, Branch will use fingerprinting to match
If Branch saw browser<>device pair install app in the past, +is_first_session parameter value will be “0”
To force +is_first_session to be “1” during testing, activate debug mode in the SDK
Web SDK
SDK Initialization
Ensure you aren’t running any Adblockers (some block the web SDK)
Ensure branch-latest.min.js is loaded in the network calls
Look for app.link request:
Ensure response is 200 OK
Ensure correct Branch key is in the branch_key param
Journeys
Confirm API key used in the web SDK aligns with API key used in-app
Validate Deep Link routing setup
If not using
$canonical_url
, confirm keys accounted for via banner template, .setBranchViewData, or MetatagsConfirm app recognizes app.link alternate domains
Activate banner and validate filters
Check URLs containing the web SDK, where banner should appear
Check URLs containing the web SDK, where banner should NOT appear
Load web pages with banners that will deep link (i.e., not the home screen), in these scenarios
iOS - Safari (app not installed)
iOS - Safari (app installed - cold start)
iOS - Safari (app installed - warm start)
iOS - Chrome (app not installed)
iOS - Chrome (app installed - cold start)
iOS - Chrome (app installed - warm start)
Android - Chrome (app not installed)
Android - Chrome (app installed - cold start)
Android - Chrome (app installed - warm start)
Best Practices
Test on actual devices, and utilize Test Mode to imitate fresh installs, otherwise - Branch will be able to identify that device previously had the application installed, and will not send the install event.
When testing on multiple devices at the same time - it is best to use different links, and not identify with the same ID. Otherwise, Branch will consider both devices to be used by the same user. In that case - links clicked on one device will be able to pass data to another device.
We also recommend testing on different networks, or on one device at a time to prevent flaky behavior.During testing, you may run into Error messages containing the following text, or its variation: “can't open the page because the address is invalid.” This is an indicator that you used to have your application installed, and used it recently. You then uninstalled the application and clicked on a Branch link.
This happens when our forced URI redirect mode tries to forcefully open the application via a URI scheme. When the application is not available on the device - it will result in the given error.
This scenario will almost never happen to regular users, as our research has shown, however it will greatly improve app opening through deep linking.
If you would rather be on a safe side - you may change the forcefulness of the mode at the top of your Link Settings page. We recommend keeping it at the intelligent mode setting.