The Iterable integration is available on the Enterprise plan.
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: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
- 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.
- 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
- In Iterable, navigate to Journeys and click + New journey. For more on Journeys in Iterable, please refer to Iterable’s documentation.
- 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.
- Change the Use Filter option to Yes.
- 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.
- Click Update Node.
- 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
- 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).
- 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. - Add in a Push message, then click Save Template.
- 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
- First, let’s configure Geofences in Radar. Read more about creating geofences here. Set up isochrone geofences with a 10 minute drive time.
- 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
- In Iterable, navigate to Journeys and click + New journey. For more on Journeys in Iterable, please refer to Iterable’s documentation.
- 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.
- 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.
- 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.
- Connect the Start node with the Filter users node.
Set up a push notification template in Iterable
- 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).
- Add in a Push message, then click Save Template.
- 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 Field | Iterable User Data Field | Type | Example Value | Context Type |
---|---|---|---|---|
userId | userId | string | "1" | |
location.coordinates[0] | radar_geo_location.lon | number | -76.350663 | |
location.coordinates[1] | radar_geo_location.lat | number | 39.525665 | |
locationAuthorization | radarLocationAuthorization | string | "GRANTED_FOREGROUND" | |
locationAccuracyAuthorization | radarLocationAccuracyAuthorization | string | "FULL" | |
_id | radarId | string | "5b2c0906f5874b001aecfd8d" | |
updatedAt | radarUpdatedAt | timestamp | "2018-06-22T15:23:39.000Z" | |
segments[*].externalId | radarSegmentExternalIds | array[string] | ["starbucks-visitors"] | |
topChains[*].slug | radarTopChainSlugs | array[string] | ["starbucks", "walmart"] | |
topChains[*].externalId | radarTopChainExternalIds | array[string] | ["123", "456"] | |
geofences[*]._id | radarGeofenceIds | array[string] | ["5b2c0906f5874b001aecfd8e"] | Geofences |
geofences[*].description | radarGeofenceDescriptions | array[string] | ["Store #123"] | Geofences |
geofences[*].tag | radarGeofenceTags | array[string] | ["store"] | Geofences |
geofences[*].externalId | radarGeofenceExternalIds | array[string] | ["123"] | Geofences |
place._id | radarPlaceId | string | "59302bcf8f27e8a156bd4f91" | Places |
place.name | radarPlaceName | string | "Starbucks" | Places |
place.categories | radarPlaceCategories | array[string] | ["food-beverage", "cafe", "coffee-shop"] | Places |
place.chain.slug | radarPlaceChainSlug | string | "starbucks" | Places |
place.chain.name | radarPlaceChainName | string | "Starbucks" | Places |
country.code | radarRegionCountryCode | string | "US" | Regions |
country.name | radarRegionCountryName | string | "United States" | Regions |
state.code | radarRegionStateCode | string | "MD" | Regions |
state.name | radarRegionStateName | string | "Maryland" | Regions |
dma.code | radarRegionDMACode | string | "26" | Regions |
dma.name | radarRegionDMAName | string | "Baltimore" | Regions |
postalCode.code | radarRegionPostalCode | string | "21014" | Regions |
trip.externalId | radarTripExternalId | string | "299" | Trip Tracking |
trip.destinationGeofenceTag | radarTripDestinationGeofenceTag | string | "store" | Trip Tracking |
trip.destinationGeofenceExternalId | radarTripDestinationGeofenceExternalId | string | "123" | Trip Tracking |
beacons[*]._id | radarBeaconIds | array[string] | ["5b2c0906f5874b001aecfd8f"] | Beacons |
beacons[*].description | radarBeaconDescriptions | array[string] | ["Store #123 - Drive-Thru"] | Beacons |
beacons[*].tag | radarBeaconTags | array[string] | ["drive-thru"] | Beacons |
beacons[*].externalId | radarBeaconExternalIds | array[string] | ["123"] | Beacons |
Event mapping
Radar Event | Context Type | Iterable Event |
---|---|---|
user.entered_geofence | Geofences | radarGeofenceEntered |
user.exited_geofence | Geofences | radarGeofenceExited |
user.dwelled_in_geofence | Geofences | radarDwelledInGeofence |
user.entered_place | Places | radarPlaceEntered |
user.exited_place | Places | radarPlaceExited |
user.entered_region_country | Regions | radarCountryEntered |
user.exited_region_country | Regions | radarCountryExited |
user.entered_region_state | Regions | radarStateEntered |
user.exited_region_state | Regions | radarStateExited |
user.entered_region_dma | Regions | radarDMAEntered |
user.exited_region_dma | Regions | radarDMAExited |
user.started_trip | Trip Tracking | radarTripStarted |
user.updated_trip | Trip Tracking | radarTripUpdated |
user.approaching_trip_destination | Trip Tracking | radarApproachingTripDestination |
user.arrived_at_trip_destination | Trip Tracking | radarArrivedTripDestination |
user.stopped_trip | Trip Tracking | radarTripStopped |
user.entered_beacon | Beacons | radarBeaconEntered |
user.exited_beacon | Beacons | radarBeaconExited |
radarGeofenceEntered
Radar Event Field | Iterable Event Data Field | Type | Example |
---|---|---|---|
geofence._id | geofenceId | string | "5b2c0906f5874b001aecfd8e" |
geofence.description | geofenceDescription | string | "Store #123" |
geofence.tag | geofenceTag | string | "store" |
geofence.externalId | geofenceExternalId | string | "123" |
geofence.metadata[{key}] | geofenceMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarGeofenceExited
Radar Event Field | Iterable Event Data Field | Type | Example |
---|---|---|---|
geofence._id | geofenceId | string | "5b2c0906f5874b001aecfd8e" |
geofence.description | geofenceDescription | string | "Store #123" |
geofence.tag | geofenceTag | string | "store" |
geofence.externalId | geofenceExternalId | string | "123" |
geofence.metadata[{key}] | geofenceMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
duration | duration | number (minutes) | 42.1 |
foreground | foreground | boolean | true |
radarDwelledInGeofence
Radar Event Field | Iterable Event Data Field | Type | Example |
---|---|---|---|
geofence._id | geofenceId | string | "5b2c0906f5874b001aecfd8e" |
geofence.description | geofenceDescription | string | "Store #123" |
geofence.tag | geofenceTag | string | "store" |
geofence.externalId | geofenceExternalId | string | "123" |
geofence.metadata[{key}] | geofenceMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
duration | duration | number (minutes) | 5 |
foreground | foreground | boolean | true |
radarPlaceEntered
Radar Event Field | Iterable Event Data Field | Type | Example |
---|---|---|---|
place._id | placeId | string | "59302bcf8f27e8a156bd4f91" |
place.name | placeName | string | "Starbucks" |
place.chain.slug | placeChainSlug | string | "starbucks" |
place.chain.name | placeChainName | string | "Starbucks" |
place.categories | placeCategories | array[string] | ["food-beverage", "cafe", "coffee-shop"] |
place.chain.externalId | placeChainExternalId | string | "123" |
place.chain.metadata[{key}] | placeChainMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarPlaceExited
Radar Event Field | Iterable Event Data Field | Type | Example |
---|---|---|---|
place._id | placeId | string | "59302bcf8f27e8a156bd4f91" |
place.name | placeName | string | "Starbucks" |
place.chain.slug | placeChainSlug | string | "starbucks" |
place.chain.name | placeChainName | string | "Starbucks" |
place.categories | placeCategories | array[string] | ["food-beverage", "cafe", "coffee-shop"] |
place.chain.externalId | placeChainExternalId | string | "123" |
place.chain.metadata[{key}] | placeChainMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
duration | duration | number (minutes) | 42.1 |
foreground | foreground | boolean | true |
radarCountryEntered
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "US" |
region.name | regionName | string | "United States" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarCountryExited
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "US" |
region.name | regionName | string | "United States" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarStateEntered
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "MD" |
region.name | regionName | string | "Maryland" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarStateExited
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "MD" |
region.name | regionName | string | "Maryland" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarDMAEntered
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "26" |
region.name | regionName | string | "Baltimore" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarDMAExited
Radar Event Field | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
region.code | regionCode | string | "26" |
region.name | regionName | string | "Baltimore" |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarTripStarted
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
trip.externalId | tripExternalId | string | "299" |
trip.metadata[{key}] | tripMetadata{key} | type | {value} |
trip.destinationGeofenceTag | destinationGeofenceTag | string | "store" |
trip.destinationGeofenceExternalId | destinationGeofenceExternalId | string | "123" |
foreground | foreground | boolean | true |
radarApproachingTripDestination
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
trip.externalId | tripExternalId | string | "299" |
trip.metadata[{key}] | tripMetadata{key} | type | {value} |
trip.destinationGeofenceTag | destinationGeofenceTag | string | "store" |
trip.destinationGeofenceExternalId | destinationGeofenceExternalId | string | "123" |
foreground | foreground | boolean | true |
radarArrivedTripDestination
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
trip.externalId | tripExternalId | string | "299" |
trip.metadata[{key}] | tripMetadata{key} | type | {value} |
trip.destinationGeofenceTag | destinationGeofenceTag | string | "store" |
trip.destinationGeofenceExternalId | destinationGeofenceExternalId | string | "123" |
foreground | foreground | boolean | true |
radarTripStopped
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
trip.externalId | tripExternalId | string | "299" |
trip.metadata[{key}] | tripMetadata{key} | type | {value} |
trip.destinationGeofenceTag | destinationGeofenceTag | string | "store" |
trip.destinationGeofenceExternalId | destinationGeofenceExternalId | string | "123" |
foreground | foreground | boolean | true |
radarBeaconEntered
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
beacon._id | beaconId | string | "5b2c0906f5874b001aecfd8f" |
beacon.description | beaconDescription | string | "Store #123 - Drive-Thru" |
beacon.tag | beaconTag | string | "drive-thru" |
beacon.externalId | beaconExternalId | string | "123" |
beacon.metadata[{key}] | beaconMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
foreground | foreground | boolean | true |
radarBeaconExited
Radar Event Attribute | Iterable Event Data Field | Type | Example Value |
---|---|---|---|
beacon._id | beaconId | string | "5b2c0906f5874b001aecfd8f" |
beacon.description | beaconDescription | string | "Store #123 - Drive-Thru" |
beacon.tag | beaconTag | string | "drive-thru" |
beacon.externalId | beaconExternalId | string | "123" |
beacon.metadata[{key}] | beaconMetadata{key} | type | {value} |
confidence | confidence | string | "high" |
duration | duration | number (minutes) | 1.42 |
foreground | foreground | boolean | true |