Skip to main content

Iterable

Radar can send custom events and user data to Iterable.

Use the Iterable integration to send location-triggered and location-targeted messages to increase engagement and conversion.

Configuration#

On the Iterable API Keys page, create and copy a Mobile API key.

Then, on the Radar Integrations page under Iterable, set Enabled to Yes and paste your key. Note that you can set separate keys for the Test and Live environments.

Whenever events are generated, Radar will send custom events and user data to Iterable.

User IDs must be aligned between Iterable and Radar for the integration to function properly. To do this, make sure you set the Radar user ID to match the Iterable user ID. For example, on iOS:

IterableAPI.userId = userIdRadar.setUserId(userId)let dataField = ["userId": userId]IterableAPI.updateUser(dataField, mergeNestedObjects: false)

Example use cases#

Learn how to create powerful location-based messaging campaigns using Radar and Iterable.

Send a personalized push notification when user is near a store#

You'll need access to both Radar and Iterable to build this messaging campaign. In this campaign, we'll set up a simple push notification based on a Radar geofence entry event.

Configure geofences in Radar#

  1. First, ensure your Geofences are configured in Radar. For a "nearby" use case, we typically suggest something like a 500 meter radius. You may also want to take advantage of isochrone (time-based) geofences, which would allow you to define, for example, a geofence with boundaries set to all points within a 10 minute walk from your target location.
  2. Note the tag for the nearby geofences you've set up in step one. You can find your geofence tags in Radar by viewing your geofences.

Create a new Journey in Iterable#

  1. In Iterable, navigate to Journeys and click + New journey. For more on Journeys in Iterable, please refer to Iterable's documentation.
  2. New Journeys in Iterable have a "start" node by default. Double click this node and change the Received Api Trigger dropdown value to Triggered Custom Event. Under Event name, start typing Radar and you should see a list of available events begin to auto-populate. Select radarGeofenceEntered.
  3. Change the Use Filter option to Yes.
  4. Where it says Select a property, start typing RadarGeofence and look for the radarGeofenceEntered.geofenceTag property. Set this property to contain (use Iterable's Contains operator) the tag you set up in step one and verified in step two.
  5. Click Update Node.
  6. Add a new node via Iterable's drag and drop functionality. For this example, drag in the Send Push node, then connect the Start node with the Send Push node.

Set up a push notification template in Iterable#

  1. Now, we'll need to create an Iterable Template to create a personalized push to be used for this campaign. Navigate to Content -> Templates, and click + New template -> Push -> Create template (giving it a name as needed).
  2. We're going to customize the title of the Template using data from Radar so your message can say "You're near {{Store name}}", with {{Store name}} representing the name of the nearby store whose geofence the user has entered. In the Title text box, enter {{radarGeofenceEntered.geofenceDescription}}. This syntax is called Handlebar notation. You can read more about it in Iterable's documentation.
  3. Add in a Push message, then click Save Template.
  4. Back in the Journey, double click on the Send mobile push node and change the template to the one you just created.

Test your campaign#

To test this campaign, you can either trigger the Journey on a test app by moving physically into the geofence, or you can take advantage of the Radar simulator. The simulator allows you to simulate a specific user as if they were moving throughout the world.

Navigate to the Users page in Radar and select a user who exists in Iterable and is linked via Radar user id. Then, click the Simulate button at the top of the page. Click around on the map and enter a geofence which will trigger the campaign you built in the steps above. If hooked up correctly, you should receive the relevant notification on your device.

Filter users in an Iterable Journey whose last known location is X minutes away from a store#

You'll need access to both Radar and Iterable to build this messaging campaign. In this example, we'll set up a push campaign that is sent to users who have opened an email associated with a specific Iterable campaign and are within 10 minutes drive of a store. We can add isochrone (time-based) geofences (via import, the UI, or the API) in Radar to support this use case.

Configure geofences in Radar#

  1. First, let's configure Geofences in Radar. Read more about creating geofences here. Set up isochrone geofences with a 10 minute drive time.
  2. Note the tag for the 10 minute drive geofences you've set up in step one. You can find your geofence tags in Radar by viewing your geofences.

Create a new Journey in Iterable#

  1. In Iterable, navigate to Journeys and click + New journey. For more on Journeys in Iterable, please refer to Iterable's documentation.
  2. Iterable will start your Journey with a "start" node by default. Double click this node and change the Received Api Trigger dropdown value to Opened An Email. Select the campaign and filter as desired. Click Update Node.
  3. Now, we'll add a new node that filters this initial trigger down based on Radar data. Under Filters on the left sidebar of Iterable's Journey builder, drag Fields Match in below the Start node.
  4. Double click on this new Filter users node. Where it says Choose a property, select Contact Property. Type in radarGeofenceTags, and set it to contain (use Iterable's Contains operator) the tag you set up in step one and verified in step two. Click Update Node.
  5. Connect the Start node with the Filter users node.

Set up a push notification template in Iterable#

  1. Now, we'll need to create an Iterable Template to create a personalized push to be used for this campaign. Navigate to Content -> Templates, and click + New template -> Push -> Create template (giving it a name as needed).
  2. Add in a Push message, then click Save Template.
  3. Back in the Journey, drag a Send Push action into the Journey builder. Double click on the Send mobile push node and change the template to the one you just created. Finally, drag from the Yes option under the Filter users node to the Send Push node to finish the Journey connection.

Test your campaign#

To test this campaign, you can either trigger the Journey on a test app by moving physically into the geofence, or you can take advantage of the Radar simulator. The simulator allows you to simulate a specific user as if they were moving throughout the world.

Navigate to the Users page in Radar and select a user who exists in Iterable and is linked via Radar user id. Then, click the Simulate button at the top of the page. Click around on the map and enter a geofence which will trigger the campaign you built in the steps above. If hooked up correctly, you should receive the relevant notification on your device.

User mapping#

Note that Radar uses the special string "(null)" to represent null user data field values.

Radar User FieldIterable User Data FieldTypeExample ValueContext Type
userIduserIdstring"1"
location.coordinates[0]radar_geo_location.lonnumber-76.350663
location.coordinates[1]radar_geo_location.latnumber39.525665
locationAuthorizationradarLocationAuthorizationstring"GRANTED_FOREGROUND"
locationAccuracyAuthorizationradarLocationAccuracyAuthorizationstring"FULL"
_idradarIdstring"5b2c0906f5874b001aecfd8d"
updatedAtradarUpdatedAttimestamp"2018-06-22T15:23:39.000Z"
segments[*].externalIdradarSegmentExternalIdsarray[string]["starbucks-visitors"]
topChains[*].slugradarTopChainSlugsarray[string]["starbucks", "walmart"]
topChains[*].externalIdradarTopChainExternalIdsarray[string]["123", "456"]
geofences[*]._idradarGeofenceIdsarray[string]["5b2c0906f5874b001aecfd8e"]Geofences
geofences[*].descriptionradarGeofenceDescriptionsarray[string]["Store #123"]Geofences
geofences[*].tagradarGeofenceTagsarray[string]["store"]Geofences
geofences[*].externalIdradarGeofenceExternalIdsarray[string]["123"]Geofences
place._idradarPlaceIdstring"59302bcf8f27e8a156bd4f91"Places
place.nameradarPlaceNamestring"Starbucks"Places
place.categoriesradarPlaceCategoriesarray[string]["food-beverage", "cafe", "coffee-shop"]Places
place.chain.slugradarPlaceChainSlugstring"starbucks"Places
place.chain.nameradarPlaceChainNamestring"Starbucks"Places
country.coderadarRegionCountryCodestring"US"Regions
country.nameradarRegionCountryNamestring"United States"Regions
state.coderadarRegionStateCodestring"MD"Regions
state.nameradarRegionStateNamestring"Maryland"Regions
dma.coderadarRegionDMACodestring"26"Regions
dma.nameradarRegionDMANamestring"Baltimore"Regions
postalCode.coderadarRegionPostalCodestring"21014"Regions
trip.externalIdradarTripExternalIdstring"299"Trip Tracking
trip.destinationGeofenceTagradarTripDestinationGeofenceTagstring"store"Trip Tracking
trip.destinationGeofenceExternalIdradarTripDestinationGeofenceExternalIdstring"123"Trip Tracking
beacons[*]._idradarBeaconIdsarray[string]["5b2c0906f5874b001aecfd8f"]Beacons
beacons[*].descriptionradarBeaconDescriptionsarray[string]["Store #123 - Drive-Thru"]Beacons
beacons[*].tagradarBeaconTagsarray[string]["drive-thru"]Beacons
beacons[*].externalIdradarBeaconExternalIdsarray[string]["123"]Beacons

Event mapping#

Radar EventContext TypeIterable Event
user.entered_geofenceGeofencesradarGeofenceEntered
user.exited_geofenceGeofencesradarGeofenceExited
user.dwelled_in_geofenceGeofencesradarDwelledInGeofence
user.entered_placePlacesradarPlaceEntered
user.exited_placePlacesradarPlaceExited
user.entered_region_countryRegionsradarCountryEntered
user.exited_region_countryRegionsradarCountryExited
user.entered_region_stateRegionsradarStateEntered
user.exited_region_stateRegionsradarStateExited
user.entered_region_dmaRegionsradarDMAEntered
user.exited_region_dmaRegionsradarDMAExited
user.started_tripTrip TrackingradarTripStarted
user.updated_tripTrip TrackingradarTripUpdated
user.approaching_trip_destinationTrip TrackingradarApproachingTripDestination
user.arrived_at_trip_destinationTrip TrackingradarArrivedTripDestination
user.stopped_tripTrip TrackingradarTripStopped
user.entered_beaconBeaconsradarBeaconEntered
user.exited_beaconBeaconsradarBeaconExited

radarGeofenceEntered#

Radar Event FieldIterable Event Data FieldTypeExample
geofence._idgeofenceIdstring"5b2c0906f5874b001aecfd8e"
geofence.descriptiongeofenceDescriptionstring"Store #123"
geofence.taggeofenceTagstring"store"
geofence.externalIdgeofenceExternalIdstring"123"
geofence.metadata[{key}]geofenceMetadata{key}{type}{value}
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarGeofenceExited#

Radar Event FieldIterable Event Data FieldTypeExample
geofence._idgeofenceIdstring"5b2c0906f5874b001aecfd8e"
geofence.descriptiongeofenceDescriptionstring"Store #123"
geofence.taggeofenceTagstring"store"
geofence.externalIdgeofenceExternalIdstring"123"
geofence.metadata[{key}]geofenceMetadata{key}{type}{value}
confidenceconfidencestring"high"
durationdurationnumber (minutes)42.1
foregroundforegroundbooleantrue

radarDwelledInGeofence#

Radar Event FieldIterable Event Data FieldTypeExample
geofence._idgeofenceIdstring"5b2c0906f5874b001aecfd8e"
geofence.descriptiongeofenceDescriptionstring"Store #123"
geofence.taggeofenceTagstring"store"
geofence.externalIdgeofenceExternalIdstring"123"
geofence.metadata[{key}]geofenceMetadata{key}{type}{value}
confidenceconfidencestring"high"
durationdurationnumber (minutes)5
foregroundforegroundbooleantrue

radarPlaceEntered#

Radar Event FieldIterable Event Data FieldTypeExample
place._idplaceIdstring"59302bcf8f27e8a156bd4f91"
place.nameplaceNamestring"Starbucks"
place.chain.slugplaceChainSlugstring"starbucks"
place.chain.nameplaceChainNamestring"Starbucks"
place.categoriesplaceCategoriesarray[string]["food-beverage", "cafe", "coffee-shop"]
place.chain.externalIdplaceChainExternalIdstring"123"
place.chain.metadata[{key}]placeChainMetadata{key}{type}{value}
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarPlaceExited#

Radar Event FieldIterable Event Data FieldTypeExample
place._idplaceIdstring"59302bcf8f27e8a156bd4f91"
place.nameplaceNamestring"Starbucks"
place.chain.slugplaceChainSlugstring"starbucks"
place.chain.nameplaceChainNamestring"Starbucks"
place.categoriesplaceCategoriesarray[string]["food-beverage", "cafe", "coffee-shop"]
place.chain.externalIdplaceChainExternalIdstring"123"
place.chain.metadata[{key}]placeChainMetadata{key}{type}{value}
confidenceconfidencestring"high"
durationdurationnumber (minutes)42.1
foregroundforegroundbooleantrue

radarCountryEntered#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"US"
region.nameregionNamestring"United States"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarCountryExited#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"US"
region.nameregionNamestring"United States"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarStateEntered#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"MD"
region.nameregionNamestring"Maryland"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarStateExited#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"MD"
region.nameregionNamestring"Maryland"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarDMAEntered#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"26"
region.nameregionNamestring"Baltimore"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarDMAExited#

Radar Event FieldIterable Event Data FieldTypeExample Value
region.coderegionCodestring"26"
region.nameregionNamestring"Baltimore"
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarTripStarted#

Radar Event AttributeIterable Event Data FieldTypeExample Value
trip.externalIdtripExternalIdstring"299"
trip.metadata[{key}]tripMetadata{key}{type}{value}
trip.destinationGeofenceTagdestinationGeofenceTagstring"store"
trip.destinationGeofenceExternalIddestinationGeofenceExternalIdstring"123"
foregroundforegroundbooleantrue

radarApproachingTripDestination#

Radar Event AttributeIterable Event Data FieldTypeExample Value
trip.externalIdtripExternalIdstring"299"
trip.metadata[{key}]tripMetadata{key}{type}{value}
trip.destinationGeofenceTagdestinationGeofenceTagstring"store"
trip.destinationGeofenceExternalIddestinationGeofenceExternalIdstring"123"
foregroundforegroundbooleantrue

radarArrivedTripDestination#

Radar Event AttributeIterable Event Data FieldTypeExample Value
trip.externalIdtripExternalIdstring"299"
trip.metadata[{key}]tripMetadata{key}{type}{value}
trip.destinationGeofenceTagdestinationGeofenceTagstring"store"
trip.destinationGeofenceExternalIddestinationGeofenceExternalIdstring"123"
foregroundforegroundbooleantrue

radarTripStopped#

Radar Event AttributeIterable Event Data FieldTypeExample Value
trip.externalIdtripExternalIdstring"299"
trip.metadata[{key}]tripMetadata{key}{type}{value}
trip.destinationGeofenceTagdestinationGeofenceTagstring"store"
trip.destinationGeofenceExternalIddestinationGeofenceExternalIdstring"123"
foregroundforegroundbooleantrue

radarBeaconEntered#

Radar Event AttributeIterable Event Data FieldTypeExample Value
beacon._idbeaconIdstring"5b2c0906f5874b001aecfd8f"
beacon.descriptionbeaconDescriptionstring"Store #123 - Drive-Thru"
beacon.tagbeaconTagstring"drive-thru"
beacon.externalIdbeaconExternalIdstring"123"
beacon.metadata[{key}]beaconMetadata{key}{type}{value}
confidenceconfidencestring"high"
foregroundforegroundbooleantrue

radarBeaconExited#

Radar Event AttributeIterable Event Data FieldTypeExample Value
beacon._idbeaconIdstring"5b2c0906f5874b001aecfd8f"
beacon.descriptionbeaconDescriptionstring"Store #123 - Drive-Thru"
beacon.tagbeaconTagstring"drive-thru"
beacon.externalIdbeaconExternalIdstring"123"
beacon.metadata[{key}]beaconMetadata{key}{type}{value}
confidenceconfidencestring"high"
durationdurationnumber (minutes)1.42
foregroundforegroundbooleantrue