Logging Custom Events

Prev Next
Post
/event/custom

This endpoint is used to log custom events.

Important considerations

  • Real-time only: Events must be sent in real time as they occur. Branch does not support backtracking or historical event ingestion. Events with timestamps in the past will not be backfilled into reports.
  • SKAdNetwork (SKAN): SKAN must be handled natively by your app, not via the Branch SDK. Branch returns SKAN-relevant fields (such as coarse_key and update_conversion_value) in the API response so your app can update its conversion value accordingly. See the SKAdNetwork guide for details.
Header parameters
Content-Type
string

Recommended. The media type of the request body. Should be application/json.

Accept
string

Recommended. The media type the client expects in the response. Should be application/json.

X-IP-Override
string

Optional. Override the IP address Branch uses for the event (for example, when forwarding events server-to-server from your own backend).

Two requirements must be met for this header to function:

  1. Your app ID must be allowlisted by Branch. The header is ignored until allowlisting is enabled. Open a support request to have your app ID allowlisted before sending this header in production.
  2. You must also include user_data.ip in the request body with the same IP value. Sending the header alone is not sufficient — the body field is what Branch persists for attribution.
Body parameters
Expand All
object
branch_key
string Required

The Branch Key of the originating app obtained in your Account Settings

Examplekey_live_xxxx
name
string Required

The name of the event to log. Can be a string of custom event name. For instance "picture swiped".

ExampleCustomEventTest
user_data
object (user_data_standard)

Information about the user and the device the event occurred on.

Required identifiers: You must include at least one of the following in user_data:

  • developer_identity, or
  • browser_fingerprint_id, or
  • os=iOS AND idfa, or
  • os=iOS AND idfv, or
  • os=Android AND android_id, or
  • os=Android AND aaid
os
string

One of the following operating system e.g. Android, iOS,MAC_OS,LINUX,WINDOWS etc.

ExampleAndroid
os_version
string

The version of the operating system. Strongly recommended for all paid traffic to ensure accurate attribution. Required for Facebook campaigns on iOS.

Example12.4.0
environment
string

usually FULL_APP

ExampleFULL_APP
aaid
string

The Android/Google advertising ID.

Exampleabcdabcd-0123-0123-00f0-000000000000
android_id
string

Android hardware ID

Examplea12300000000
idfa
string

iOS advertising ID

Example00000000-0000-0000-0000-000000000001
idfv
string

iOS vendor ID

Example00000000-0000-0000-0000-000000000002
anon_id
string

The Facebook anonymous user ID. Required when running Facebook campaigns using Aggregated Event Measurement (AEM) on iOS.

Examplefbanon_abc123def456
advertising_ids
object

Wrapper object for advertising identifiers. Use this in addition to the flat aaid, idfa, and idfv fields above to future-proof your integration for non-standard IDs (for example, OAID on Huawei devices). Additional advertising ID keys may be supported as new platforms emerge — contact Branch Support if you need to send an identifier that is not listed here.

oaid
string

Open Advertising ID, used on Huawei devices and other Android devices without Google Play Services.

Example00aa00a0-0000-0a00-a000-aaa0000a0aaa
google_analytics_id
string

The Google Analytics client ID, useful for cross-platform stitching with Google Analytics. Include where applicable to improve attribution coverage and downstream analytics.

ExampleGA1.2.123456789.1234567890
limit_ad_tracking
boolean

true if the partner has opted to not be tracked by advertisers

Examplefalse
user_agent
string

The user agent of the browser or app where the event occurred. Usually associated with a webview.

ExampleMozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko)
browser_fingerprint_id
string

Branch internal-only field for tracking browsers.

Example857675855146829999
http_origin
string

The current page url where Web SDK logged web session start.

Examplehttps://example.com/landing
http_referrer
string

The referral url that led to the current page where Web SDK logged web session start.

Examplehttps://referrer.example.com/path
developer_identity
string

The developer-specified identity for a user.

Exampleuser123
country
string

The country code of the user, usually based on device settings or user agent string.

ExampleUS
language
string

The language code of the user, usually based on device settings or user agent string.

Exampleen
ip
string

The IP address for the device where the event occurred. Required if using the X-IP-Override request header.

Example198.51.100.42
local_ip
string

Android only - local ip of the device

Example192.0.2.1
brand
string

The brand of the device

ExampleLGE
randomized_device_token
string

Branch internal-only field for tracking devices.

Example857675855146829998
app_version
string

The app version downloaded by the user.

Example1.0.0
model
string

The model of the device.

ExampleNexus 5X
screen_dpi
integer

The screen's DPI.

Example420
screen_height
integer

The screen's height.

Example1794
screen_width
integer

The screen's width.

Example1080
dma_eea
boolean

Whether European regulations, including the DMA, apply to this user and conversion. Required if EU regulations apply to this user. Failure to include user consent signals may result in attribution or campaign performance degradation.

Exampletrue
dma_ad_personalization
boolean

Whether end user has granted or denied ads personalization consent. Required if dma_eea is set to true (i.e., EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.

Exampletrue
dma_ad_user_data
boolean

Whether end user has granted or denied consent for 3P transmission of user level data for ads. Required if dma_eea is set to true (i.e., EU regulations apply to this user). Failure to include user consent signals may result in attribution or campaign performance degradation.

Exampletrue
custom_data
object

Additional custom key-value pairs that you want attached to the event. Values may be of any JSON type. Attached to events retrieved via Exports and sent via Webhooks.

meta_data
object

Additional metadata for the event.

event_data
object (event_data_standard)
transaction_id
string

The partner-specified transaction id for their internal use

Example00000000
revenue
number

The partner-specified reported revenue for the event.

Example1.5
currency
string

Currency that revenue, price, shipping, tax were originally reported in by the partner

ExampleUSD
shipping
number

Shipping cost associated with the transaction.

Example10.2
tax
number

Total tax associated with the transaction.

Example12.3
coupon
string

Transaction coupon redeemed with the transaction (e.g. "SPRING2017")

Examplecoupon
affiliation
string

Store or affiliation from which this transaction occurred (e.g. Google Store)

Exampletest_affiliation
description
string

Description associated with the event, not necessarily specific to any individual content items (see below)

ExampleEvent_description
search_query
string

Additional search queries.

ExampleTest Search query
Responses
200

Ok

object

Successful event ingestion. The response carries SKAdNetwork-relevant fields that the app can use to update its native SKAN conversion value.

ascending_only
boolean
Examplefalse
coarse_key
string
Examplehigh
locked
boolean
Examplefalse
update_conversion_value
integer
Example3
400

Authentication Failed

Result
"{\n    \"error\": {\n        \"message\": \"Authentication failed !\",\n        \"code\": 400\n    }\n}"
Expand All
object
error
object (inline_response_400_error)
message
string
ExampleAuthentication failed !
code
integer
Example400
429

Rate Limit Reached

Result
"{\n    \"error\": {\n        \"code\": 429,\n        \"message\": \"Rate limit reached.\"\n    }\n}"
Expand All
object
error
object (inline_response_400_error)
message
string
ExampleAuthentication failed !
code
integer
Example400