Radar can send events and tags to Airship .
Use the Airship integration to send location-triggered and location-targeted messages to increase engagement and conversion, measure the ROI of location-based messaging, and build location-based user segments.
Configuration# On the Airship Tokens page in Settings , create a token with the All Access role and copy the app key and access token. Under Partner Integrations , enable Radar to enable auto-population of custom event names and properties in the Airship Automation Composer.
Then, on the Radar Integrations page under Airship , set Enabled to Yes and paste your app key and access token. Note that you can set separate API keys for the Test and Live environments.
Whenever events are generated, Radar will send custom events and tags to Airship. Note that for tags to populate, you must manually create tag groups in Airship first.
If you are using Airship SDK 13.x
or earlier with Radar iOS SDK 3.0.4
or earlier or Radar Android SDK 3.0.6
or earlier, the Radar SDK will automatically collect Airship channel ID and Airship session ID. However, if you are using Airship SDK 14.0
or later with Radar iOS SDK 3.0.5
or later or Radar Android SDK 3.0.7
or later, you must set Radar metadata.airshipChannelId
and metadata.airshipSessionId
manually to collect Airship channel ID and Airship session ID.
Radar.setMetadata([ "airshipChannelId": Airship.channel.identifier, "airshipSessionId": Airship.analytics.sessionID ])
Copy val channelId = UAirship.shared().channel.id val sessionId = UAirship.shared().analytics.sessionId Radar.setMetadata(JSONObject().put("airshipChannelId",channelId).put("airshipSessionId",sessionId))
Copy It is recommended to set the Radar user metadata once the Airship channel ID becomes available. This can be performed via the addChannelListener
Airship methods .
Verify integration data delivery# To test that the integration is configured correctly and can deliver data, use the Simulator to generate events. Click View on an event row and scroll down to the Logs section on the details page to verify delivery. Perform a similar process via a test app build with Radar location tracking enabled by spoofing location or moving into the relevant boundary.
All integration delivery can be monitored via the integration's event logs by clicking View event logs on the Integrations page .
Example use cases# Send a personalized push notification when a user arrives at a store# Create Geofences in Radar with the geofence tag set to store
. The geofence tag will be used to trigger messages for the subset of geofence entries where this tag is present. Set up an Airship campaign triggered from the Radar geofence entry event, the radar_geofence_entered
custom event in Airship, and add property filtering where radar_geofence_tag
is store
. These same events can be used as part of an Airship campaign and the event properties can be used in message personalization with handlebars .
Message all users nearby a store# Create Geofences in Radar to represent nearby store boundaries with geofence tag set to nearby-store
. The geofence tag will be used to target messages for the subset of geofences where this tag is present. Set up an Airship campaign targeted with the radar_geofence_tags
tag group that Radar sends. This will be an array of all geofences the user is currently in, so set the tag to match the value of nearby-store
for the radar_geofence_tag
group. Additional attribute filtering can be performed for more complex targeting, including regional targeting.
In-app messaging# To trigger in-app messaging from detected user state on app open, custom events need to deliver through Airship's SDK rather than via Radar's server to server integration with Airship. To support this, implement custom logic in the SDK leveraging Radar's location update listener, on iOS or Android , to send foreground detections to Airship. The example code below assumes you are calling Radar.trackOnce()
on application launch. See the iOS and Android tracking references if needed.
import RadarSDK import AirshipKit
@main class AppDelegate: UIResponder, UIApplicationDelegate, RadarDelegate {
func didUpdateLocation(_ location: CLLocation, user: RadarUser) { if (user.foreground && user.source == RadarLocationSource.foregroundLocation) { if let place = user.place { let event = CustomEvent(name: "radar_fg_place_detected"); event.interactionType = "location" event.properties = [ "radar_place_name": place.name, "radar_place_categories": place.categories.joined(separator: ","), "radar_place_chain_slug": place.chain?.slug ?? "" ] event.track() } if let geofences = user.geofences { let event = CustomEvent(name: "radar_fg_geofences_detected"); event.interactionType = "location" event.properties = [ "radar_geofence_descriptions": geofences.compactMap({ $0.description }), "radar_geofence_tags": geofences.compactMap({ $0.tag }), "radar_geofence_external_ids": geofences.compactMap({ $0.externalId }) ] event.track() } } } }
Copy class MyRadarReceiver: RadarReceiver() { override fun onLocationUpdated(context: Context, location: Location, user: RadarUser) { if (user.foreground && user.source == RadarLocationSource.FOREGROUND_LOCATION) { var userGeofences = user.geofences var userPlace = user.place if (userGeofences != null && userGeofences.isNotEmpty()) { CustomEvent.newBuilder("radar_fg_geofences_entered") .addProperty("geofence_descriptions", userGeofences.map { it.description }.joinToString()) .addProperty("geofence_tags", userGeofences.map { it.tag }.joinToString()) .addProperty("geofence_external_ids", userGeofences.map { it.externalId }.joinToString()) .build() .track() } if (userPlace != null) { val chain: String = userPlace.chain?.slug ?: "" CustomEvent.newBuilder("radar_fg_place_entered") .addProperty("place_name", userPlace.name) .addProperty("place_chain", chain) .addProperty("categories", userPlace.categories.joinToString()) .build() .track() } } } }
Copy User mapping# Radar User Field Airship Tag Group Name Type Example Tag Context Type locationAuthorization
radar_location_authorization
string "GRANTED_FOREGROUND"
locationAccuracyAuthorization
radar_location_accuracy_authorization
string "FULL"
updatedAt
radar_updated_at
timestamp "2018-06-22T15:23:39.000Z"
segments[*].externalId
radar_segment_external_ids
array[string] ["starbucks-visitors"]
topChains[*].slug
radar_top_chain_slugs
array[string] ["starbucks"]
topChains[*].externalId
radar_top_chain_external_ids
array[string] ["123"]
geofences[*]._id
radar_geofence_ids
array[string] ["5b2c0906f5874b001aecfd8e"]
Geofences geofences[*].description
radar_geofence_descriptions
array[string] ["Store #123"]
Geofences geofences[*].tag
radar_geofence_tags
array[string] ["store"]
Geofences geofences[*].externalId
radar_geofence_external_ids
array[string] ["123"]
Geofences place._id
radar_place_id
string "59302bcf8f27e8a156bd4f91"
Places place.name
radar_place_name
string "Starbucks"
Places place.categories
radar_place_categories
string "coffee-shop"
Places place.chain.slug
radar_place_chain_slug
string "starbucks"
Places place.chain.name
radar_place_chain_name
string "Starbucks"
Places country.code
radar_region_country_code
string "US"
Regions country.name
radar_region_country_name
string "United States"
Regions state.code
radar_region_state_code
string "MD"
Regions state.name
radar_region_state_name
string "Maryland"
Regions dma.code
radar_region_dma_code
string "26"
Regions dma.name
radar_region_dma_name
string "Baltimore"
Regions postalCode.code
radar_region_postal_code
string "21014"
Regions trip.externalId
radar_trip_external_id
string "299"
Trip Tracking trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
Trip Tracking trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
Trip Tracking beacons[*]._id
radar_beacon_ids
array[string] ["5b2c0906f5874b001aecfd8f"]
Beacons beacons[*].description
radar_beacon_descriptions
array[string] ["Store #123 - Drive-Thru"]
Beacons beacons[*].tag
radar_beacon_tags
array[string] ["drive-thru"]
Beacons beacons[*].externalId
radar_beacon_external_ids
array[string] ["123"]
Beacons
Event mapping# Radar Event Context Type Airship Event user.entered_geofence
Geofences radar_geofence_entered
user.exited_geofence
Geofences radar_geofence_exited
user.dwelled_in_geofence
Geofences radar_dwelled_in_geofence
user.entered_place
Places radar_place_entered
user.exited_place
Places radar_place_exited
user.entered_region_country
Regions radar_country_entered
user.exited_region_country
Regions radar_country_exited
user.entered_region_state
Regions radar_state_entered
user.exited_region_state
Regions radar_state_exited
user.entered_region_dma
Regions radar_dma_entered
user.exited_region_dma
Regions radar_dma_exited
user.started_trip
Trip Tracking radar_started_trip
user.updated_trip
Trip Tracking radar_updated_trip
user.approaching_trip_destination
Trip Tracking radar_approaching_trip_destination
user.arrived_at_trip_destination
Trip Tracking radar_arrived_at_trip_destination
user.stopped_trip
Trip Tracking radar_stopped_trip
user.entered_beacon
Beacons radar_beacon_entered
user.exited_beacon
Beacons radar_beacon_exited
radar_geofence_entered# Radar Event Field Airship Event Property Type Example Value geofence._id
radar_geofence_id
string "5b2c0906f5874b001aecfd8e"
geofence.description
radar_geofence_description
string "Store #123"
geofence.tag
radar_geofence_tag
string "store"
geofence.externalId
radar_geofence_external_id
string "123"
geofence.metadata[{key}]
radar_geofence_metadata_{key}
{type} {value}
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_geofence_exited# Radar Event Field Airship Event Property Type Example Value geofence._id
radar_geofence_id
string "5b2c0906f5874b001aecfd8e"
geofence.description
radar_geofence_description
string "Store #123"
geofence.tag
radar_geofence_tag
string "store"
geofence.externalId
radar_geofence_external_id
string "123"
geofence.metadata[{key}]
radar_geofence_metadata_{key}
{type} {value}
confidence
radar_confidence
string "high"
duration
radar_duration
number (minutes) 42.1
foreground
radar_foreground
boolean true
radar_dwelled_in_geofence# Radar Event Field Airship Event Property Type Example Value geofence._id
radar_geofence_id
string "5b2c0906f5874b001aecfd8e"
geofence.description
radar_geofence_description
string "Store #123"
geofence.tag
radar_geofence_tag
string "store"
geofence.externalId
radar_geofence_external_id
string "123"
geofence.metadata[{key}]
radar_geofence_metadata_{key}
{type} {value}
confidence
radar_confidence
string "high"
duration
radar_duration
number (minutes) 5
foreground
radar_foreground
boolean true
radar_place_entered# Radar Event Field Airship Event Property Type Example Value place._id
radar_place_id
string "59302bcf8f27e8a156bd4f91"
place.name
radar_place_name
string "Starbucks"
place.chain.slug
radar_place_chain_slug
string "starbucks"
place.chain.name
radar_place_chain_name
string "Starbucks"
place.chain.metadata[{key}]
radar_place_chain_metadata_{key}
{type} {value}
place.categories
radar_place_categories
string (comma-separated) "food-beverage,cafe,coffee-shop"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_place_exited# Radar Event Field Airship Event Property Type Example Value place._id
radar_place_id
string "59302bcf8f27e8a156bd4f91"
place.name
radar_place_name
string "Starbucks"
place.chain.slug
radar_place_chain_id
string "starbucks"
place.chain.name
radar_place_chain_name
string "Starbucks"
place.chain.metadata[{key}]
radar_place_chain_metadata_{key}
{type} {value}
place.categories
radar_place_categories
string (comma-separated) "food-beverage,cafe,coffee-shop"
confidence
radar_confidence
string "high"
duration
radar_duration
number (minutes) 42.1
foreground
radar_foreground
boolean true
radar_country_entered# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "US"
region.name
radar_region_name
string "United States"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_country_exited# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "US"
region.name
radar_region_name
string "United States"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_state_entered# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "MD"
region.name
radar_region_name
string "Maryland"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_state_exited# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "MD"
region.name
radar_region_name
string "Maryland"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_dma_entered# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "26"
region.name
radar_region_name
string "Baltimore"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_dma_exited# Radar Event Attribute Airship Event Property Type Example Value region.code
radar_region_code
string "26"
region.name
radar_region_name
string "Baltimore"
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_started_trip# Radar Event Attribute Airship Event Property Type Example Value trip.externalId
radar_trip_external_id
string "299"
trip.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
foreground
radar_foreground
boolean true
radar_updated_trip# Radar Event Attribute Airship Event Property Type Example Value trip.externalId
radar_trip_external_id
string "299"
trip.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
foreground
radar_foreground
boolean true
radar_approaching_trip_destination# Radar Event Attribute Airship Event Property Type Example Value trip.externalId
radar_trip_external_id
string "299"
trip.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
foreground
radar_foreground
boolean true
radar_arrived_at_trip_destination# Radar Event Attribute Airship Event Property Type Example Value trip.externalId
radar_trip_external_id
string "299"
trip.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
foreground
radar_foreground
boolean true
radar_stopped_trip# Radar Event Attribute Airship Event Property Type Example Value trip.externalId
radar_trip_external_id
string "299"
trip.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
trip.destinationGeofenceTag
radar_trip_destination_geofence_tag
string "store"
trip.destinationGeofenceExternalId
radar_trip_destination_geofence_external_id
string "123"
foreground
radar_foreground
boolean true
radar_beacon_entered# Radar Event Attribute Airship Event Property Type Example Value beacon._id
radar_beacon_id
string "5b2c0906f5874b001aecfd8f"
beacon.description
radar_beacon_description
string "Store #123 - Drive-Thru"
beacon.tag
radar_beacon_tag
string "drive-thru"
beacon.externalId
radar_beacon_external_id
string "123"
beacon.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
confidence
radar_confidence
string "high"
foreground
radar_foreground
boolean true
radar_beacon_exited# Radar Event Attribute Airship Event Property Type Example Value beacon._id
radar_beacon_id
string "5b2c0906f5874b001aecfd8f"
beacon.description
radar_beacon_description
string "Store #123 - Drive-Thru"
beacon.tag
radar_beacon_tag
string "drive-thru"
beacon.externalId
radar_beacon_external_id
string "123"
beacon.metadata[{key}]
radar_trip_metadata_{key}
{type} {value}
confidence
radar_confidence
string "high"
duration
radar_duration
number (minutes) 1.42
foreground
radar_foreground
boolean true