Overview¶
With Pointr, the foundation of our analytics package is around events, so let’s define an event:
An event is anything that a user actively does; it is how your customers are interacting with our platform. This could be searching, wayfinding, or even just browsing the map.
Before we dive into the events, here is a reminder: if you have not already seen the base data we capture for every event, please refer to the analytics overview section.
On to the exciting part, our events and the data captured are as follows:
Persistent Data Points¶
Configuration¶
Configuration values are sent with every event and consist of the following data points:
Field | Description | Example |
---|---|---|
platform | Whether the user is on Web, Mobile or Express | Mobile |
appid | What app the user is coming from | com.pointrlabs.sample |
clientid | The id of the client | 29e8e3b7-303-4C45-89FD-EE57606BD5D7 |
useragent | More detailed version the user is coming from | MobileSDK/8.9.0 |
osVersion | OS version of the user | IOS 17.0.1 |
phoneMake | Make of the phone | apple |
phoneModel | Model of the phone | iPhone 13 |
baseURL | The url the user is coming from | http://massport-v8-qa-api.pointr.cloud/ |
country | The users country | USA |
language | The language of the users device | en |
What does it look like?¶
{
"configuration" : {
"platform": "mobile",
"appId": "com.pointrlabs.sample",
"clientId": "29e8e3b7-30a3-4c45-89fd-ee57607bd5d7",
"userAgent": "MobileSDK/8.9.0",
"osVersion": "IOS 17.0.1",
"phoneMake": "Apple",
"phoneModel": "iPhone 13",
"baseURL": "https://client_pointr_cloud_api_url/",
"country": "USA",
"language": "en"
}
Current Location¶
Location is captured whenever available for all events, the only exception is if a user is off-site we never record the location as we at Pointr respect our users privacy.
Field | Description | Example |
---|---|---|
onsite | Whether the user is on site or not | True (boolean) |
locationType | What kind of technology was used for location | “Ble” (string) |
sid | Site internal ID | 1 (numeric) |
bid | Building internal ID | 1 (numeric) |
lvl | Level index | 1 (numeric) |
lat | Latitude of the user | 0.5443 (decimal) |
lon | Longitude of the user | 0.544354 (decimal) |
What does it look like?¶
{
"currentLocation": {
"onsite": true,
"locationType": "ble",
"sid": 2,
"bid": 4,
"lvl": 0,
"lat": 0.54443,
"lon": 0.5443543
}
Events Overview¶
Usage Analytics¶
Start SDK¶
Event | Additional Parameters | When |
---|---|---|
start-sdk | - | Anytime the Mobile or the Web SDK is started, start-sdk action is sent. Note that for web, after start-sdk, a map is always displayed whereas for mobile, the client app that is implementing the mobile sdk does not have to initialize mapwidget to show the map. This event is only to keep track of Pointr SDKs being initialized to be utilized in client apps. Note: Start SDK means the SDK has been started. As the app developer controls the UI of the app, this might or might not mean the end user has started using the SDK. |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": null,
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "start-sdk"
}
Use SDK¶
Event | Additional Parameters | When |
---|---|---|
use-sdk | action-status - “session-start” - “session-end” - “activation” ‘mobileSessionTimeoutInSec’ | The first time a device interacts with the Pointr SDK an “activation “event is sent, after that a “start-session” is sent once per unique ‘sessionid’ “session-end” is being deprecated ‘mobileSessionTimeoutInSec’ refers to the inactive time from when a session times out and a new one begins |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "use-sdk",
"actionStatus": "session-start",
"params": {
"mobileSessionTimeoutInSec": 1800
},
}
Quick Accesss¶
Event | Additional Parameters | When |
---|---|---|
quick-access * | action-status - “selected” - “expanded” resultCount (Numeric) category (String) | Any time quick access is interacted with - “selected” triggers when the menu is brought into focus - “expanded” triggers when a user drills into a category |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "quick-access",
"actionStatus": "selected",
"resultCount": 12,
"category": "dining",
}
Geofence¶
Event | Additional Parameters | When |
---|---|---|
geofence * | action-status - “entered” - “exited” geofence consists of: name (string) type (string) fid (guid) eid (guid) centerLat (decimal) centerLon (decimal) coordinates (collection of locations) | Any time a geofence is entered / exited |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "geofence",
"actionStatus": "entered",
"params": {
"geofence": {
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
29.036130959724893,
41.088997465407964
],
[
29.036013781253416,
41.08899312665177
],
[
29.03589773132073,
41.088980152169526
]
]
]
},
"name": "LevelGeofence1",
"type": "level",
"fid": "8cb7ef64-fa87-4fbc-b8a4-f21caf61dbe9",
"eid": "MyLevelGeofence1",
"centerLat": 22.302084532295925,
"centerLon": 114.16707177123519
}
},
}
Change Language¶
Event | Additional Parameters | When |
---|---|---|
change-language | lan (string) | Whenever the language is changed lan refers to the new selected language |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "change-language",
"params": {
"lan": "gr"
},
}
Rate Experience¶
Event | Additional Parameters | When |
---|---|---|
rate-experience | rating: - ”good” - ”bad” Feedback (string) | Anytime rate my experience is responded to by an end user across all of our SDKs we record the response. Note for positive feedback we record “good”, for negative feedback we record “bad” and the feedback itself |
Example JSON:
"action": "rate-experience",
"params":
{
"rating":good" || "bad",
"feedback": " "
},
Map-Interaction Analytics¶
Display Map¶
Event | Additional Parameters | When |
---|---|---|
display-map | - | Whenever the display map is called in the API regardless of if it is shown or not |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
}
Map Interaction¶
Event | Additional Parameters | When |
---|---|---|
map-interaction | duration (numeric) mobileMapSessionTimeoutInSec (numeric) | Whenever the map is interacted with (pinch, zoom, pan etc) mobileMapSessionTimeoutInSec refers to the configured inactivity timeout before an interaction event ends. |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "map-interaction",
"params": {
"duration": 382,
"mobileMapSessionTimeoutInSec": 30
},
}
Wayfinding Analytics¶
Get Directions¶
Event | Additional Parameters | When |
---|---|---|
get-directions * | action-status - “successful” - “unsuccessful” startPoi[1] or startLocation[2] destinationPoi[1] or destinationLocation[2] A POI is defined as: fid (guid) name (string) typeCode (string) centerLon (decimal) centerLat (decimal) A Location is defined as: sid (numeric) bid (numeric) lvl (index) lon (decimal) lat (decimal) features (Collection of locations) error (string) | Whenever a user initiates static wayfinding this is triggered “Unsucessful” refers to a case where a path cannot be calculated |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "get-directions",
"actionStatus": "unsuccessful",
"params": {
"error": "Cannot find a path to destination Poi",
"destinationPoi": {
"fid": "9f4c5dc1-dcab-e8c5-e509-000000927805",
"name": "Men’s Restroom",
"typeCode": "facility-services",
"centerLat": -0.16249744,
"centerLon": 51.4993839
},
"destinationLocation": null,
"startPoi": null,
"startLocation": {
"sid": 2,
"bid": 4,
"lvl": 0,
"lat": 0.54443,
"lon": 0.5443543
}
},
}
Wayfind¶
Event | Additional Parameters | When |
---|---|---|
wayfind * | action-status - “started” - “completed” - “failedToInitialize” - “failedToComplete” - “canceled” startPoi[1] or startLocation[2] destinationPoi[1] or destinationLocation[2] A Poi is defined as: ‘fid’ (guid) ‘name’ (string) ‘typeCode’ (string) ‘centerLon’ (decimal) ‘centerLat’ (decimal) A Location is defined as: ‘sid’ (numeric) ‘bid’ (numeric) ‘lvl’ (index) ‘lon’ (decimal) ‘lat’ (decimal) ‘features’ (Collection of locations) ‘duration’ (numeric) ‘error’ (string) | Whenever a user initiates dynamic wayfinding this is triggered - failedToInitialize is when a path is unable to be calculated - failedToComplete is anytime wayfinding was not completed or canceled, this can happen if the user abruptly closes the app with no background permissions |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "wayfind",
"actionStatus": "started",
"params": {
"duration": 246,
"destinationPoi": {
"fid": "9f4c5dc1-dcab-e8c5-e509-000000927805",
"name": "Men’s Restroom",
"typeCode": "facility-services",
"centerLat": -0.16249744,
"centerLon": 51.4993839
},
"destinationLocation": null,
"startPoi": null,
"startLocation": {
"sid": 2,
"bid": 4,
"lvl": 0,
"lat": 0.54443,
"lon": 0.5443543
},
"directions": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "628f365a-c6e7-4e2a-a83f-c96b235e3936",
"geometry": {
"type": "Point",
"coordinates": [
-71.0195821,
42.3692433
]
},
"properties": {
"fid": "b22c9b0a-64cc-418c-bb5b-eb6bfd719db4",
"eid": "",
"typeCode": "direction",
"lvl": 1,
"bid": 9,
"sid": 2,
"distanceInMiles": 0.00676053948700428,
"orientation": 1.1229331493377686,
"durationInSeconds": 10.880037307739258,
"distanceInMeters": 10.880037307739258,
"nodeTypeCode": "",
"message": "Turn Right",
"distanceInFeet": 35.69566345214844
}
},
{
"type": "Feature",
"id": "884797fa-87ff-4bbf-b4e1-485871b286a1",
"geometry": {
"type": "Point",
"coordinates": [
-71.0195554,
42.3692781
]
}
}
Search Analytics¶
Search¶
Event | Additional Parameters | When |
---|---|---|
search * | searchTerm (string) resultCount (numeric) | Any time a search is performed through the SDK |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "search",
"searchTerm": "burger",
"resultCount": 2,
}
POI Analytics¶
POI Interaction¶
Event | Additional Parameters | When |
---|---|---|
poi-interaction * | action-status - “selected” - “details” originates (string) fid (guid) name (string) typeCode (string) centerLon (decimal) centerLat (decimal) |
Example JSON:
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "poi-interaction",
"actionStatus": "selected",
"originates": "map-click",
"poiInteracted": {
"fid": "9f4c5dc1-dcab-e8c5-e509-000000927805",
"name": "Men’s Restroom",
"typeCode": "facility-services",
"centerLat": -0.16249744,
"centerLon": 51.4993839
}
}
Banner Analytics¶
Banner Interaction¶
Event | Additional Parameters | When |
---|---|---|
banner-interaction * | action-status - “clicked” - “dismissed” appName (string) | Any time in Pointr Express when the install banner pops up and is interacted with, this includes: - Clicking on the banner to install the full experience. - Dismissing the banner. |
{
"deviceId": "05d9e18a-595d-4f9f-83d6-80527823a17f",
"sessionId": "16b4cacb-20aa-41fb-a841-0c0483c117fd",
"timestamp": 1697784992,
"analyticsVersion": “8.11”
"configuration" : {
// See configuration section
},
"currentLocation": {
// See current location section
},
"action": "banner-interaction",
"actionStatus": "clicked",
"params": {
"appName": "Client-IOS-v8.23"
},
}
*Available soon