The Koupon Platform provides three types of geo-location features — geo-fencing, geo-gating, and geo-targeting. Each feature is different and used in different use cases. It’s important to understand how each works and when to use them to deliver targeted mobile offers. Before we begin, here are some high-level definitions:

  • Geo-Fencing — an imaginary border around a physical space that can cause a mobile device to “wake up” and take some sort of action. Geo-Fences are also used to monitor location patterns of customers without necessarily taking any actions.
  • Geo-Gating — a feature that allows retailers to limit the presentation of a barcode to customers within a specified distance from a store. For example, a retailer may not allow its customers to see the Barcode Page unless they are 1 mile from a store. (Note: Geo-Gating doesn’t prevent a customer from seeing an offer, just from accessing its Barcode page. More about the different steps of the flow here.)
  • Geo-Targeting — a setting that allows Accounts to limit the overall display of an offer to a customer depending on their location. For example, a retailer may only sell a product at certain stores, so using geo-targeting offers for that product could only be seen if a customer is within 60 miles of an appropriate store.

How Location is Determined

Generally speaking, a smartphone’s location can be determined using two broad methods — 1) determining the exact position of the phone using its GPS chip or 2) providing an estimate of the smartphone’s location based on a series of signals and sensors.

Using the phone’s GPS chip is the most accurate but it consumes a high level of the phone’s battery. As a best practice, each method should be used as the use case demands. For example, a map application will likely use the GPS chip, whereas an app that is passively monitoring a user’s location to deliver offers might use a location estimate to collect location data without a significant impact to the phone’s battery life.

Most third party location services and SDKs use proprietary algorithms to determine a user’s location while consuming as little battery power as possible. If the app requests a location estimate, the OS will use things like cell tower triangulation, wifi network names, accelerometers, and other tools that are already on or have cheap energy costs to make a lower accuracy “ballpark” fix about where the user is. A change to a phone’s position, commonly called a significant change causes the phone to form a new estimate about its location. A user’s location is estimated and then provided to apps (only those that have location access) whenever they need the location.

Each mobile platform (iOS and Android) provide tools that enable developers to derive location at different levels of accuracy.

Using Location with the Koupon Platform

For Web Channels

Koupon-supported web channels, including the Offer Viewer can use location for geo-targeting and geo-gating (geo-fencing is only supported in native apps). Because this experience occurs in a mobile web browser, Koupon receives the customer’s location as determined by the browser or the phone’s operating system. It should also be noted that a customer must allow the browser to access his or her location in order for the web experience to obtain location information.

Because a web browser’s location settings can’t be controlled by the developer, its location could be slightly less accurate than a location derived from a native app. Developers and marketers should keep this in mind when using geo-location features for mobile web offers.

For App Channels

Both iOS and Android mobile app platforms provide more flexibility and accuracy in determining a user’s location.

iOS Mobile App

Any app linked to Apple’s Core Location framework can derive a user’s location if the user opts into location services for that app. The Core Location framework can be used in two main ways — Standard Location and Significant Change.

Standard Location allows the developer to configure the granularity of the location request, thus it can provide the most accurate determination. However a high level of location fidelity often requires using the device’s GPS hardware which has a negative impact on its battery life, and Standard Location can only be used if the app is running in the foreground.

Significant Change on the other hand is a “good enough” approach that delivers a relatively accurate user location without consuming too much battery life, and it can be used when the app isn’t open. Significant Change uses the aforementioned location estimate approach which incorporates wifi, cell towers, and movement to update location.

One final point — each time a device’s location is updated (whether it’s through Standard Location or Significant Change) any app can receive an update about the user’s current location.

Android Mobile App

The Android platform works similarly to iOS in that developers can obtain a device’s location using different methods. This section assumes that a developer is using the Google Play services location APIs.
Android location functionality is powered by the Fused Location Provider which is a location management tool that provides location based on a developer’s needs. The Fused Location Provider is designed to be easy to use and power efficient while providing a highly accurate device location. This service powers a few different API calls — Last Known Location and Location Updates.

Last Known Location is a call made to obtain the last known location of a device, but it is commonly used to obtain the current location of a user. This call can be made in one of two ways — Coarse Location or Fine Location. Coarse Location promises accuracy of a location within one city block, but uses less battery to do so. Fine Location is more precise but uses more battery life. Similar to iOS, the Last Known Location is available for all apps regardless of which event may resulted in the location request.

Location Updates are used when an app needs recurring location updates on an ongoing basis. Using Location Updates is considered a more direct approach than Last Known Location. Unlike, with Last Known Location, developers can set Location Update or Location Request parameters such as the update interval, priority, and accuracy.

Third Party Services

Gimbal technology is incorporated into the default Koupon SDK package to provide accurate and efficient geo-fence. More on geofences in the following section.

About Geofences

Geo-fences can be used to accomplish two things —  1) collect information about user location patterns and 2) alert the user of relevant and nearby content through a Push Notification, SMS text, or by making an offer viewable to a customer.

Think of geo-fences as an imaginary border around a physical space such as a store. When a mobile device enters that pre-defined space, it becomes aware that its in the region and can “wake up” and take some type of action. It is possible for both iOS and Android to “wake up” an app from both the background and terminated state. With Android, background location is on for any app with location enabled. For iOS, users are asked to enable background location in addition to enabling location for basic app functionality.

On the Koupon Platform geo-fences are recognized using enter and exit events. When a customer is initially located within a geo-fence, he or she has “entered” the geo-fence. When the customer leaves the area, he or she has “exited” the geo-fence. These events are important as marketers use Koupon to take actions based on geo-fence activity. For example, a marketer might want to deliver a targeted offer to a customer 2 days after a customer has exited one of a retailer’s store geofences.

Our SDK works with our geo-fence provider Gimbal to provide a list of fence locations near a smartphone, and then monitors the proximity to the closest fences. As the proximity calculation occurs, the SDK will tell the app that something interesting happened, like entering or exiting a geo-fence. When something interesting does happen, this information is sent to the Koupon Platform to see if an action needs to be taken.