Branch Journeys Integration

Singular offers a unique integration with Branch Journeys to track web-to-app conversions accurately using deterministic attribution based on the device's Advertising ID.

If you're using Branch Journeys, it's important to enable this integration so that your web-to-app conversions are tracked correctly in Singular.

For information about deterministic and other attribution methods, see Introduction to Singular Attribution.

Integration Flow


  1. Branch processes a click from an organic channel, such as Email or Referral.
  2. When a new user opens the app for the first time, both Singular and Branch process this as a session coming from a new device, and start the attribution flow.
  3. Singular queues the attribution decision until we receive a Branch attribution claim. We receive the claims through webhooks that are configured on the Branch side. When Branch finalizes the attribution decision, it fires a webhook to Singular with the relevant attribution data (e.g., "The iOS device with IDFA=123e4567-e89b-12d3-a456-426655440000 has been attributed to the campaign named 'My Email Campaign'").
  4. Singular incorporates the Branch attribution data into the attribution decision process, along with any other touchpoints collected from both Branch and Singular.

Integration Benefits

Attribution providers typically use click forwarding to process Branch Journeys data. In click forwarding, the attribution provider gets mobile-web device clicks that Branch is tracking. However, this commonly leads to inaccurate attribution.

Singular's Branch Integration provides the following benefits over click forwarding:

  • Accurate device identification: Branch Journeys does utilize an Advertising ID, which it passes on to Singular through a webhook. Singular can then perform deterministic attribution.
  • No race conditions: Singular queues the attribution process until Branch reports its final decision, avoiding the risks of attributing before Branch data is received.
  • Alignment between Singular and Branch: When you use two products to track conversions, it's vital to keep device-level data consistent between the platforms. By using this integration, you ensure that every app install that Branch attributes to a web-to-app conversion is attributed the same way by Singular.

Setup Guide

1. Enable on the Singular Side

This integration is an advanced feature that has to be enabled by Singular's support team. If you are interested in using this integration, reach out to your Customer Success Manager.

2. Configure a Branch Webhook

  1. In the Branch Dashboard, go to Data Import & Export > Webhooks.
  2. Click Add New Webhook.
  3. Configure a webhook to the URL,
    using POST, every time the user triggers the INSTALL event.

3. Test the Integration

  1. Get a new device or reset the Advertising ID on your device. Use the Singular Device Assist app for iOS or Android to retrieve your device's Advertising ID.
  2. Click on a Branch Journey link. Install and open the app.
  3. Wait a few minutes and then open:

You should get a JSON response that looks like the following:

"app_long_name": "",
"app_name": "Your App",
"view_through_attribution": false,
"campaign_name": "Branch",
"network": "Branch",
  "additional_parameters": {
"pcn": "Branch Campaign Name"


How does the Branch integration affect attribution logic?

Branch Journeys touchpoints are considered as any other Device ID based clicks:

  • In the case where a Branch Journeys claim was the only available touchpoint, Singular would use that touchpoint's data for the attribution process.
  • In the case where there are multiple touchpoints, Singular will defer to the latest one based on its timestamp.
How will Branch attributions look in Singular reports?

Branch attributions will show under the Source "Branch" in Singular reports.

Will Singular attributions show up in Branch?

No, this integration only handles passing data from Branch into Singular.

Is there a timeout for how long Singular waits for a web-to-app claim from Branch?

Yes, Singular will wait up to 4 minutes, by default.