Skip to main content

Braze Integration

With the combination of Braze’s leading mobile engagement platform and Bluedot Innovation’s best in class location technology, mobile engagement is taken to the next level. Combine the power of Braze with the precision and scalability of Bluedot’s location services to accelerate growth, drive loyalty engagement and revenue in your app and beyond.

Bluedot’s location marketing platform delivers a solution 20x more accurate, with negligible battery drain, unlimited locations and best in class privacy making it the only option that can deliver location-based 1:1 segmentation no matter how large your audience is.

Connectivity is at the heart of this new chapter for mobile. But it’s more than just the ability to engage. It’s also about connecting to mobile users with discernment and insight. That’s what mobile engagement is about, and it’s exciting what we can now do.

Integration architecture diagram

The is an SDK-to-SDK integration and you’ll need to install both the Bluedot Point SDK and Braze Appboy SDK. Location events generated by the Bluedot Point SDK will be passed to the AppBoy SDK as Custom Events (Android | iOS) and Braze will handle the User Segmentation based on your Braze Campaign configuration, and sending notifications to your users.

Bluedot setup

Creating a new Project

Creating a Project is your first step. All your Zones and all geofeatures exist within a Project. More information on adding and managing Bluedot Canvas project can be found here.

Adding a Zone

You’ll need to create a Zone before you can start adding in specific Geofeatures. Each Zone can have one or many Geofeatures – that’s up to you and your use-case. More information on adding and managing Zones can be found here.

Braze setup

Add an App

If you have just registered for a Braze account select the Add your app button. If you have an existing account then either choose the app you wish to use, or select the New app button in the upper right corner of the dashboard to create a new one. More information on setting up an App can be found here.

Set up push in your App

  • Add the Google Cloud Messaging (GCM) API key in the Quickstart Guide Android tab. It is located at the end of the screen. For further information refer to Braze Android Documentation
  • Add the Apple Push Notification Service (APNs) Certificate in the Quickstart Guide iOS tab. It is located at the end of the screen. For further information refer to Braze iOS Documentation

It is vital to set up the APNs certificate for iOS and GCM API Key for Android platforms, to utilize the push based automated messages in Braze engagement platform.

More information

More information on adding and updating your Braze App can be found here.

Integration setup in the app

The application needs to be configured to send custom events to Braze when a Bluedot entry or exit trigger occurs.


The Android/Java implementation for passing up entry events is as follows, using the onZoneEntryEvent callback:

override fun onZoneEntryEvent(entryEvent: ZoneEntryEvent, context: Context) {
println("Zone ${entryEvent.zoneInfo.zoneName}, fence ${} entered at: ${Date()}")

val eventProperties = AppboyProperties()
eventProperties.addProperty("zone_id", entryEvent.zoneInfo.zoneId)
eventProperties.addProperty("zone_name", entryEvent.zoneInfo.zoneName)
eventProperties.addProperty("latitude", entryEvent.locationInfo.latitude)
eventProperties.addProperty("longitude", entryEvent.locationInfo.longitude)

entryEvent.zoneInfo.getCustomData()?.forEach { data ->
eventProperties.addProperty(data.key, data.value)

Appboy.getInstance(context).logCustomEvent(customEventEntry, eventProperties)

To pass up Bluedot exit triggers, a similar code should be added for the onZoneExitEvent callback.

override fun onZoneExitEvent(exitEvent: ZoneExitEvent, context: Context) {
println("Zone ${exitEvent.zoneInfo.zoneName}, fence ${} exited at: ${Date()}")

val eventProperties = AppboyProperties()
eventProperties.addProperty("zone_id", exitEvent.zoneInfo.zoneId)
eventProperties.addProperty("zone_name", exitEvent.zoneInfo.zoneName)
eventProperties.addProperty("dwellTime", exitEvent.dwellTime)

exitEvent.zoneInfo.getCustomData()?.forEach { data ->
eventProperties.addProperty(data.key, data.value)

Appboy.getInstance(context).logCustomEvent(customEventExit, eventProperties)


The Swift implementation for passing up entry events is as follows, using the didEnterZone callback:

func didEnterZone(_ enterEvent: BDZoneEntryEvent) {
// Name the custom event let customEventName = "bluedot_entry"

// Map the Location and Bluedot Zone attributes into a properties dictionary

var properties = [
        "zone_id": "\(!)",
        "zone_name": "\(!)",
        "latitude": "\(enterEvent.location.latitude)",
        "longitude": "\(enterEvent.location.longitude)",
        "speed": "\(enterEvent.location.speed)",
        "bearing": "\(enterEvent.location.bearing)",
        "timestamp": "\(enterEvent.location.timestamp!)"

// Map the Custom Data attributes into properties

if let customData =, !customData.isEmpty {
        customData.forEach { data in properties["\(data.key)"] = "\(data.value)"}

// Log the Custom Event in Appboy
Appboy.sharedInstance()?.logCustomEvent(customEventName, withProperties: properties )

To pass up Bluedot exit triggers, a similar code should be added for the didExitZone callback.

Integration examples

Android –

iOS –