Branch
Datafly Signal sends in-app events from the Datafly mobile SDKs to the Branch Events API v2 as Branch standard events (and custom events for leads), with the device identifiers, event data and content items.
Prerequisites
Find your Branch key
Your live Branch key (key_live_...) is under Account Settings > Profile in the Branch dashboard. The Events API authenticates with it in the request body.
Integrate the Branch SDK
Branch attributes S2S events to installs its SDK measured. Send the same user ID to Branch (setIdentity) and to Signal (identify) so developer_identity matches.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
branch_key | Yes | Your Branch live key. Found in Account Settings > Profile in the Branch dashboard. |
branch_secret | No | Not used by the Events API (it authenticates with the Branch key in the request body). Leave blank. |
Management UI Setup
- Go to Integrations > Add Integration > Branch.
- Choose a preset: Default (
default), Retail (ecommerce), Travel (travel), Media (media), Insurance (insurance). - Fill in the fields above and click Save.
Request format
A purchase from an Android app:
POST https://api2.branch.io/v2/event/standard
{"branch_key":"key_live_abc","content_items":[{"$price":120,"$product_brand":"NorthEdge","$product_name":"Parka","$quantity":2,"$sku":"SKU_1"},{"$price":19.99,"$product_name":"Gloves","$quantity":1,"$sku":"SKU_2"}],"event_data":{"coupon":"SAVE10","currency":"GBP","revenue":259.99,"shipping":10,"tax":43.33,"transaction_id":"ORD-1001"},"name":"PURCHASE","user_data":{"aaid":"9c9a82fb-d5de-4cd1-90c3-527441c11828","brand":"Google","developer_identity":"crm-user-9","dma_ad_personalization":true,"dma_ad_user_data":true,"dma_eea":false,"environment":"FULL_APP","ip":"203.0.113.9","language":"en-GB","limit_ad_tracking":false,"model":"Pixel 8","os":"Android","os_version":"14","user_agent":"Dalvik/2.1.0 (Linux; U; Android 14; Pixel 8)"}}Lead and quote events are custom events and go to /v2/event/custom.
Event Mapping
| Signal event | Vendor event | Presets |
|---|---|---|
sign_up | COMPLETE_REGISTRATION | Default, Retail, Travel, Media, Insurance |
login | LOGIN | Default, Retail, Travel, Media, Insurance |
view_item | VIEW_ITEM | Default, Retail, Travel, Insurance |
search | SEARCH | Default, Retail, Travel, Media |
add_to_cart | ADD_TO_CART | Default, Retail |
begin_checkout | INITIATE_PURCHASE | Default, Retail, Travel, Insurance |
purchase | PURCHASE | Default, Retail, Travel, Insurance |
generate_lead | generate_lead | Default, Insurance |
trial_started | START_TRIAL | Default, Media |
subscription_started | SUBSCRIBE | Default, Media |
view_item_list | VIEW_ITEMS | Retail |
add_to_wishlist | ADD_TO_WISHLIST | Retail |
view_cart | VIEW_CART | Retail |
add_payment_info | ADD_PAYMENT_INFO | Retail |
booking_completed | PURCHASE | Travel |
content_viewed | VIEW_ITEM | Media |
quote_completed | quote_completed | Insurance |
Identity
Branch needs developer_identity, or os with idfa/idfv (iOS) or aaid (Android). Signal sends the advertising ID by platform, the IDFV on iOS and your user ID as developer_identity; app events with none of them, and every web event, are not sent. No personal data is sent (Branch documents no hashed identifier fields).
Consent
user_data.dma_eea is true for visitors in the EEA (from geo); dma_ad_personalization and dma_ad_user_data carry marketing consent, as Branch asks for EEA users. Assign a consent category to the integration in Signal to gate delivery altogether.
Troubleshooting
| Problem | Solution |
|---|---|
| Events rejected with 400 | Check the Branch key, and that events carry a device identifier or user ID. |
| Late events missing | Branch accepts events in real time only; it does not ingest back-dated events, so events delayed by retries may not count. |
Blueprint
The Branch blueprint version is 0.3.0. It was last reviewed against the vendor’s documentation on 2026-09-23.