Branch.io is a commercial deep linking and attribution platform that provides a unified link infrastructure for mobile applications on iOS and Android. According to Branch Documentation, the platform tracks the full user interaction cycle from link click to target action within the app. Deep linking in Branch.io works across all platforms with support for deferred deep linking and install attribution.
Key Takeaways
Branch.io is a platform that combines deep linking, mobile install attribution and marketing analytics in a single solution. It allows developers and marketers to create smart links that direct users to the app or web page depending on platform, install status and other parameters. Additionally, Branch automatically links each install to its source of origin.
The platform was founded in 2014 and is one of the leaders in the mobile measurement (MMP) market alongside AppsFlyer and Adjust. Branch's main advantage is the full integration of deep linking and attribution in one SDK, eliminating the need to use separate solutions for links and analytics.
Firebase Dynamic Links is a free service with basic functionality, while Branch.io is a commercial platform with advanced attribution supporting over 50 integrations with ad networks. Branch provides end-to-end analytics for every user touchpoint, including last-click, first-click and multi-touch attribution models.
Branch.io provides a wide range of tools for working with mobile links. Key capabilities include Deepview — a preview of app content in a web browser before installation, automatic generation of Universal Links for iOS and App Links for Android, and support for referral programs with rewards.
The platform also supports Journeys — a visual engagement funnel builder that shows users a banner inviting them to install the app when visiting a mobile website. Journeys can be configured without coding through the Branch web interface and support A/B testing of creatives.
| Feature | Description | Use Case |
|---|---|---|
| Deep Linking | Smart links with deferred support | Navigate to content |
| Attribution | Install and event attribution | Marketing analytics |
| Journeys | Web banners for install | User acquisition |
| Deepview | App preview in browser | Content demonstration |
| Segments | User segmentation | Personalization |
Install attribution in Branch works by linking the click identifier (click ID) with the device identifier upon first app launch. When a user clicks a Branch link, the system generates a unique identifier and stores it in the browser or system clipboard. After installation and first launch, the Branch SDK reads this identifier and links the install to the source of the click.
Branch supports attribution across various models. Last-click attribution determines the last click source before install as the cause. Multi-touch attribution distributes the install value among all user touchpoints according to specified weights. The platform also supports view-through attribution for ad impressions without a click.
Branch integrates with over 50 advertising platforms, including Facebook Ads, Google Ads, TikTok Ads and Snapchat. Each integration uses the native attribution mechanisms of the ad network for maximum accuracy. Configuration is done through the Branch Dashboard without the need to modify app code after the initial SDK integration.
Integrating Branch SDK into an iOS app starts with installing the package via CocoaPods, SPM or Carthage. After installation, the SDK must be initialized with the app key from the Branch Dashboard in the didFinishLaunchingWithOptions method of AppDelegate. The SDK automatically registers Universal Links for the Branch domain.
For deep links to work correctly, Associated Domains must be configured in Xcode Capabilities with an entry like applinks:bnc.lt. Branch also supports URL Scheme as a fallback in case Universal Links do not work on a specific iOS version. All incoming link handling happens automatically through the SDK without needing to write a custom handler.
Example of Branch SDK initialization in AppDelegate using Swift. The SDK starts a session at app launch and automatically processes all deep links.
import BranchSDK
class AppDelegate: UIResponder,
UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication
.LaunchOptionsKey: Any]?
) -> Bool {
Branch.getInstance()
.initSession(launchOptions: launchOptions)
return true
}
}
The initSession method starts a Branch session and automatically checks for an incoming deep link. The result is handled through the BranchDelegate or a completion handler. The Branch SDK automatically determines whether the link was opened from a cold start or from an already running app.
On Android, Branch integration starts by adding the dependency to build.gradle and specifying the app key in AndroidManifest.xml. Branch uses an Intent Filter to receive deep links, which is automatically added via the Gradle plugin at build time. The SDK also registers a BroadcastReceiver to obtain referral data after installation and supports automatic handling of the Install Referrer API for accurate source attribution.
For correct install attribution from Google Play, Branch uses the Install Referrer API, which provides information about the install source even if the user did not click a link. On devices without Google Play Services, a referral BroadcastReceiver is used.
Example of Branch SDK initialization in MainActivity using Kotlin with handling of incoming deep link data.
class MainActivity : AppCompatActivity() {
override fun onStart() {
super.onStart()
Branch.getInstance()
.initSession { params, error ->
if (error == null) {
val data = params.optString(
"$deeplink_path", ""
)
navigateToScreen(data)
}
}
}
}
The completion handler in the initSession method returns a JSONObject with deep link parameters and an error. The $deeplink_path parameter contains the target path, and the remaining parameters are passed in an arbitrary format defined when creating the link in the Branch Dashboard. Handling is performed in onStart for correct operation when restarting the Activity and when transitioning from another app.
Branch Dashboard provides visual reports on all key metrics: link clicks, installs, conversions, revenue and retention. Data is available in real-time with the ability to export to CSV and integrate with external analytics systems via API.
The platform supports custom Events that the app sends to Branch through the SDK. Each event can contain arbitrary metadata: purchase amount, product category, user level. Branch automatically links events to the install source, allowing ROI assessment for each marketing channel.
Branch Dashboard includes several preset reports — Summary, Sources, Cohorts and Funnels. Summary shows the overall picture of installs and clicks, Sources breaks down by channel, Cohorts tracks user retention by day, and Funnels builds conversion funnels based on specified events. All reports support filtering by date, platform, country and ad campaign.
For more detailed analysis, Branch provides the Export API, which allows exporting raw click and install data into custom analytics systems. The API supports filtering by time range, event type and source. Export is available in CSV and JSON formats with the ability to schedule automatic exports via webhook.
Segment Builder in Branch Dashboard allows creating dynamic user segments based on any set of events and attributes. For example, you can create a segment of users who installed the app from a specific ad campaign and made a purchase within 7 days. Segments update in real-time and are available for export or integration via API. Branch also supports anonymized aggregated exports — anonymized segment summaries for sending to ad networks and optimizing targeting.
Frequently Asked Questions
Branch offers a free tier with a limit on the number of events per month. For commercial use, paid plans are available with expanded attribution, unlimited events and priority support. Prices range from $500 to several thousand dollars per month.
The main difference is that Branch combines deep linking and attribution in one SDK, whereas AppsFlyer focuses only on attribution. Branch also provides Deepview and Journeys which are not available in AppsFlyer. The choice depends on project needs.
Yes, Branch provides SDKs for React Native, Flutter, Unity, Cordova and Xamarin. All cross-platform SDKs support the full feature set: deep linking, attribution, event analytics and Journeys.
Branch fully supports ATT on iOS 14+. The SDK requests tracking permission through the standard dialog. If the user declines, Branch uses SKAdNetwork for attribution without IDFA, preserving accuracy at the campaign level.
Yes, Branch links work correctly in web browsers. On desktop, the link opens the specified URL; on mobile devices, it opens the app or a fallback page. Branch also supports Quick Links for websites without SDK installation.
Summary
We will develop a mobile application turnkey
IT Sectr creates iOS and Android applications for startups and businesses since 2017. We will advise you and propose the best solution.
Read also