How We Work Together

Iterable is a powerful cross channel customer engagement suite that, when combined with Foursquare's Movement SDK, allows you to seamlessly communicate with your users and ensure they are getting a personalized and highly engaging experience. Foursquare will provide real-time event triggering based upon your users’ location in the physical world, allowing you to harness our powerful geotargeting capabilities and take action on multiple channels with Iterable.

Examples of What You Can Do

Integrating w/ Iterable introduces new location-based engagement, segmentation and personalization:

  • Target Customers when they're most likely to engage: Trigger targeted messages to users when they are most likely to engage with your brand, such as when they enter your store location or when they depart from a home or work location.
  • Re-capture lapsed customers or customers from competitors: Trigger targeted messages to users when they are in your competitors’ locations or send messages to customers who have strayed from your brand while they are at nearby locations.
  • Discover your customers’ personal preferences ‘in the background’: Segment your mobile users based on their real-world preferences. The SDK can reveal which of your users are coffee-lovers or sports-fans allowing you to engage on a deeper level. The SDK does this by tracking visit patterns to specific venue types and then by assigning ‘personas’ based on the meta-data associated with to those venues.

Example JSON Payloads

{
    "userId": "{String}",
    "context": {
        "traits": {},
        "localeactions": "en",
        "device": {
            "advertisingId": "{String}"
        }
    },
    "event": "placeHistorical",
    "properties": {
        "visitType": "historical",
        "probability": "{Double}",
        "confidence": "{String}",
        "lat": "{Double}",
        "lng": "{Double}",
        "locationType": "{String}",
        "visitId": "{String}",
        "timestamp": "{YYYY-MM-DDTHH:MM:SS.XXXZ}",
        "venueName": "{String}",
        "venueId": "{String}",
        "primaryCategoryName": "{String}",
        "primaryCategoryId": "{String}",
        "primaryChainName": "{String}",
        "primaryChainID": "{String}",
        "address": "{String}",
        "crossStreet": "{String}",
        "city": "{String}",
        "state": "{String}",
        "zipCode": "{String}",
        "country": "{String}",
        "supervenueId": "{String}",
        "supervenueName": "{String}",
        "supervenuePrimaryCategoryId": "{String}",
        "supervenuePrimaryCategoryName": "{String}",
        "supervenuePrimaryChainId": "{String}",
        "supervenuePrimaryChainName": "{String}"
    },
    "type": "track"
}
{
    "EventDefinitionKey": "pilgrimArrivalEntrySource",
    "ContactKey": "{String}",
    "Data": {
        "visitType": "departure",
        "confidence": "{ConfidenceLevel}",
        "lat": "{lat}",
        "lng": "{long}",
        "locationType": "venue",
        "visitId": "{VisitID}",
        "timestamp": "{Timestamp}",
        "venueName": "{VenueName}",
        "venueId": "{VenueID}",
        "primaryCategoryName": "{PrimaryCategoryName}",
        "primaryCategoryId": "{PrimaryCategoryID}",
        "address": "{Address}",
        "crossStreet": "{Cross Street}",
        "city": "{CityName}",
        "state": "{StateCode}",
        "zipCode": "{ZipCode}",
        "country": "{CountryCode}",
        "ContactKey": "{String}",
        "userId": "{String}"
    }
}
{
    "EventDefinitionKey": "pilgrimArrivalEntrySource",
    "ContactKey": "{String}",
    "Data": {
        "visitType": "arrival",
        "confidence": "{ConfidenceLevel}",
        "lat": "{lat}",
        "lng": "{long}",
        "locationType": "venue",
        "visitId": "{VisitID}",
        "timestamp": "{Timestamp}",
        "venueName": "{VenueName}",
        "venueId": "{VenueID}",
        "primaryCategoryName": "{PrimaryCategoryName}",
        "primaryCategoryId": "{PrimaryCategoryID}",
        "address": "{Address}",
        "crossStreet": "{Cross Street}",
        "city": "{CityName}",
        "state": "{StateCode}",
        "zipCode": "{ZipCode}",
        "country": "{CountryCode}",
        "ContactKey": "{String}",
        "userId": "{String}"
    }
}
{
    "EventDefinitionKey": "pilgrimArrivalEntrySource",
    "ContactKey": "{String}",
    "Data": {
        "geofenceEventType": "exit",
        "geofenceLat": "{Double}",
        "geofenceLng": "{Double}",
        "radius": "{Double}",
        "venueId": "{String}",
        "categoryIds": "{String}",
        "venueChainIds": "{String}",
        "partnerVenueId": "{String}",
        "eventLat": "{Double}",
        "eventLng": "{Double}",
        "geofenceId": "{String}",
        "geofenceName": "{String}",
        "geofenceProperties": {},
        "ContactKey": "{String}",
        "userId": "{String}"
    }
}
{
    "userId": "{String}",
    "eventName": "geofenceEnter",
    "createdAt": 1646691428,
    "dataFields": {
        "geofenceEventType": "entrance",
        "geofenceLat": "{Double}",
        "geofenceLng": "{Double}",
        "radius": "{Double}",
        "venueId": "{String}",
        "categoryIds": "{String}",
        "venueChainIds": "{String}",
        "partnerVenueId": "{String}",
        "eventLat": "{Double}",
        "eventLng": "{Double}",
        "geofenceId": "{String}",
        "geofenceName": "{String}"
    }
}
{
    "userId": "{String}",
    "eventName": "geofenceDwell",
    "createdAt": 1646691515,
    "dataFields": {
        "geofenceEventType": "dwell",
        "geofenceLat": "{Double}",
        "geofenceLng": "{Double}",
        "radius": "{Double}",
        "venueId": "{String}",
        "categoryIds": "{String}",
        "venueChainIds": "{String}",
        "partnerVenueId": "{String}",
        "eventLat": "{Double}",
        "eventLng": "{Double}",
        "geofenceId": "{String}",
        "geofenceName": "{String}"
    }
}

Integration Details

  1. Make sure the Movement SDK is properly setup. If you are also looking to utilize Iterable's In App Push Notification capability, you'll also need to get the Iterable SDK setup also.
  2. Make sure that you've set any user specific ID in using the setUserId method of UserInfo in the Movement SDK.
  3. Enter your Iterable API Key in to your app's Foursquare Developer Console.
  4. Once you have configured the Developer Console, the Movement SDK will automatically track location events and forward them to Iterable, allowing you to easily engage with your users.
  5. See the Iterable developer documentation for more details.