The integration between Singular and Braze enhances your marketing capabilities by incorporating mobile attribution data directly into your customer engagement platform. This seamless connection enables you to create more targeted and effective lifecycle marketing campaigns.
Important:
Ad Networks with data-sharing restrictions prevent postback transmission to third-party partners, overriding any configured postback settings. Please see more details here for media sources that have data-sharing restrictions with third parties.
Prerequisites
Requirement | Description |
iOS or Android app | This integration supports iOS and Android apps. Depending on your platform, code snippets may be required in your application. Details on these requirements can be found in step 1 of the integration process. |
Singular SDK and Braze SDK | In addition to the required Braze SDK, you must install the Singular SDK |
Integration
To complete the Braze integration you will need to update your Singular SDK integration and pass the Braze Device ID via Singular's Global Properties. See our SDK documentation regarding Global Properties (Android SDK documentation and iOS SDK documentation).
Step 1: Map user IDs
Android
If you have an Android app, you will need to include the following code snippet, which passes a unique Braze user ID to Singular.
// Retrieve the Braze deviceId
val brazeDeviceID = Braze.getInstance(context).deviceId
// Set the Singular Global Property in the Singular Config
val config = SingularConfig("SDK KEY", "SDK SECRET")
.withGlobalProperty("brazeDeviceID", brazeDeviceID, true)
// Retrieve the Braze deviceId
String brazeDeviceID = Braze.getInstance(context).getDeviceId();
// Set the Singular Global Property in the Singular Config
SingularConfig config = new SingularConfig("SDK KEY", "SDK SECRET")
.withGlobalProperty("brazeDeviceID", brazeDeviceID, true);
iOS
Important:
Prior to February 2023, our Singular attribution integration used the IDFV as the primary identifier to match iOS attribution data. It is not necessary for Braze customers using Objective-C to fetch the Braze device_id and sent to Singular upon install as there will be no disruption of service.
For those using the Swift SDK v5.7.0+, if you wish to continue using IDFV as the mutual identifier, you must ensure that the useUUIDAsDeviceId field is set to false so there is no disruption of the integration.
If set to true, you must implement the iOS device ID mapping for Swift in order to pass the Braze device_id to Singular upon app install in order for Braze to appropriately match iOS attributions.
// Retrieve the Braze deviceId
let brazeDeviceId = AppDelegate.braze?.deviceId
// Set the Singular Global Property in the Singular Config
config.setGlobalProperty("brazeDeviceId", withValue: brazeDeviceId, overrideExisting: true)
// Retrieve the Braze deviceId
NSString *brazeDeviceId = ((AppDelegate *)[UIApplication sharedApplication].delegate).braze.deviceId;
// Set the Singular Global Property in the Singular Config
[config setGlobalProperty:@"brazeDeviceId" withValue:brazeDeviceId overrideExisting:YES];
Step 2: Get the Braze data import key
In Braze, navigate to Partner Integrations > Technology Partners and select Singular.
Note: If you are using the older navigation, you can find Technology Partners under Integrations.
Here, you will find the REST endpoint and generate your Braze data import key. After the key is generated, you can create a new key or invalidate an existing one.
You will need to provide the data import key and REST endpoint to your Singular account manager to complete the integration.
Step 3: Enable the Braze Postback
In Singular navigate to Attribution > Partner Configuration from the left menu.
-
Click the "Add Partner" button and search for "Braze".
-
Select your App
-
Enter the Braze data import key received from the previous step
-
Select the Braze Domain name
-
Click Save
Step 4: Confirm the integration
Once Braze receives attribution data from Singular, the status connection indicator on the Singular technology partners page in Braze will change from “Not Connected” to “Connected”. A timestamp of the last successful request will also be included.
Note that this will not happen until we receive data about an attributed install. Organic installs, which should be excluded from the Singular postback, are ignored by our API and are not counted when determining if a successful connection was established.