Add Location Intelligence to your mobile products


Engine is a lightweight mobile SDK also available as a set of libraries that enables you to understand where your users go in the real world. Create personalized experiences and gain valuable insights about your users. Engine enables your mobile products to:

Map User Journey by looking at visits and activities (driving, cycling, walking).

Attach a device location AT or NEAR businesses or places of interest. Learn more.

Trigger events (app actions) when a device enters a location-based Circumstance, using targeting rules defined in the Garage web UI or programmatically. Learn more.

More Detail

Engine has four main components:

  • a client-side cache of Factual’s Global Places data populated using map tiles fetched when devices enter new areas
  • a machine learning based system for “attaching” devices to Factual places probabilistically, by matching the local cache of places data against a number of features from the device, device history, and map meta-data
  • a monitoring process for circumstance detection
  • a remote configuration system for receiving targeting campaign from The Garage UI

Factual Global Places

Engine can return a list of candidates for the user’s current location. You can use this list to drive a check-in interface, or to passively tag events or media with a place.

For each candidate, you will receive:

  • Place name
  • Place categories
  • Lat/Lng of the place
  • Distance in meters from the device
  • A place-attachment threshold (how confident Engine is that you are at the place).

For both Android and iOS, the place candidate call is non-blocking. You must register a callback method to handle the response.

Event Triggering

Through configuration in The Garage UI, you define Circumstances in Engine that combine place-attachment with selected conditions.

A Circumstance can combine any of the below conditions:

Condition Definition
at Any location(s) that Engine is confident that you are currently at. For example at Starbucks or at a concert venue.
near Any locations within approximately 200 meters of of the device’s current location that must be present. For example, near a bar.
date/time parting Days or time brackets the Circumstance should be limited to. For example M-F, 6am-9am
hours of operation Based on hours of operation data in Factual’s Global Places Data, Circumstances can be filtered against currently open/closed businesses. For example, near a store that is open right now.

Engine will monitor in the background for the device entering any of the specified Circumstances. Upon a positive hit, Engine will invoke a callback function called an Action Handler that you define to perform whatever action you desire.

Because Circumstances can be defined in the Garage UI, a convention is required for relating each Circumstance to an action handler. This is done through an action id. For example:

Circumstance Action Id Example Action Handler
User is at a competing coffee shop near one of your own. send‑free‑coffee‑coupon Your handler makes a request to the cloud to generate a discount coupon, and uses a push notification to offer it to the user.
User is at an office near your coffee shop on the weekend send‑free‑coffee‑coupon Same as above
User is currently at your coffee shop check‑and‑configure Your handler checks to see if the user has an existing coupon, and (if so) pops up a dialog asking if they want to make use of it.

As in the example above, multiple Circumstances can be tied to the same action.

Get Started

  • Installation instructions and example code for both of these features are available for iOS and Android.