Places behavior reference

The Places extension provides three different point of interest (POI) states that can be interacted with using rules. This document explains general Places behavior, what states are available, and how states change through different scenarios.

Terms

For definitions of key terms, see Places Terminology.

Library rank

A library rank, also referred to as weight, is the priority assigned to a library when multiple libraries are in use. A smaller rank value (for example, 1) indicates a higher priority, while a larger rank value (for example, 4) indicates a lower priority. This ranking is one of the factors used to determine which library’s points of interest (POIs) take precedence when overlaps occur.

Membership time to live

Membership time to live specifies how long POI states (Current POI, Last Entered POI, Last Exited POI) remain valid. This duration applies globally to all POIs and has a default value of one hour. The duration is refreshed in the following cases:

To modify this value, use the places.membershipttl key. For additional details, see Places configuration.

Places states

There are three primary Places states: Current POI, Last Entered POI, and Last Exited POI. These states are also stored in device persistence and carry across app sessions. In an Adobe Data Collection tags mobile property, rules can define Places conditions based on these states. Scenarios illustrating how these states change are provided in the Scenarios section.

Current POI

When multiple POIs are simultaneously in the entered state, they are evaluated in the following order of precedence:

  1. Library rank: Lower rank values represent higher priority.

  2. Radius: The POI with the smaller radius is prioritized.

  3. Most recent entry signal or closest POI: The evaluation depends on the API used:

Entered state

A POI is in the entered state when either:

POIs remain in the entered state across app sessions until one of the following occurs:

Even with a correct geofence and Places API implementation, device operating systems may not provide geofence exit signals for various reasons, which can impact the final Places state.

Last entered POI

The last entered POI represents the POI that was most recently entered, which is identified by receiving an entry signal. The expiration time for this value is determined by the membership time to live.

Last exited POI

The last exited POI represents the POI that was most recently exited, which is identified by receiving an exit signal. The expiration time for this value is determined by the membership time to live.

Scenarios

These scenarios assume that Places has been implemented to receive geofence entry and exit events from the mobile device operating system. In all cases, a Places event and a Places XDM Edge event are dispatched for the signal and POI provided to the processRegionEvent API on iOS or the processGeofence and processGeofenceEvent APIs on Android.

The bolded POIs under each state indicate when a state is updated due to the location event at each step.

Initial app state

The app starts in a clean state with no previous Places events or persistent storage values.

Scenario: Non-intersecting points

Enter POI A

The user has entered the radius for POI A:

Places states after entering POI A in a non-intersecting scenario

Exit POI A

The user has exited the radius for POI A:

Places states after exiting POI A in a non-intersecting scenario

Enter POI B

The user has entered the radius for POI B:

Places states after entering POI B in a non-intersecting scenario

Scenario: Intersecting points

Enter POI A

The user has entered the radius for POI A:

Places states after entering POI A in an intersecting scenario

Enter POI B

The user has entered the radius for POI B:

Places states after entering POI B in an intersecting scenario

Exit POI A

The user has exited the radius for POI A:

Places states after exiting POI A in an intersecting scenario