Appearance
Analytics Events
Pro & EnterpriseAnalytics requires a Pro or Enterprise subscription.
Compare plansDetailed reference for all trackable events and their parameters.
Event Types
Area Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
areaClick | area.click | id, name, floor |
areaHover | area.hover | id, name, floor |
areaFocus | area.select | id, name, floor |
areaBookmark | area.select | id, name, floor |
Marker Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
markerClick | marker.click | id, name, floor |
markerHover | marker.hover | id, name, floor |
markerInfoOpen | marker.select | id, name, floor |
Floor Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
floorChange | floor.switch | id, name, floor, fromFloor, toFloor |
floorZoomFocus | floor.select | id, name, floor |
floorLoad | floor.select | id, name, floor |
Search Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
searchQuery | search.query | query |
searchResultClick | search.select | query, id, name |
searchNoResults | search.query | query |
Wayfinding Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
routeRequest | wayfinding.route | id, name, floor, originId, originName, originLevelId, originType, destinationId, destinationName, destinationLevelId, destinationType |
Button Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
customButtonClick | button.click | id, name, floor, label, url |
Fires when a visitor taps the custom action button on an object card — the one conversion a map has. id / name / floor identify the place, label is the button text the visitor saw and url where it led.
Other Events
| Frontend Event | Backend Mapping | Allowed Parameters |
|---|---|---|
zoomIn | zoom.in | (none) |
zoomOut | zoom.out | (none) |
zoomChange | zoom.change | (none) |
panMove | zoom.change | (none) |
componentLoaded | general.componentLoaded | device, language |
componentUnmounted | general.componentUnmounted | (none) |
interactionTime | general.interactionTime | durationMs |
componentLoaded carries device (mobile, tablet or desktop, decided by the embed from the pointer type and screen size) and language (the browser's BCP 47 tag, reduced to its primary subtag on the server: de-CH → de). Anything else is stored as unknown. The page the map was embedded on is not a parameter: it is taken from the ?parent= hostname the iframe already forwards for domain checks, so it cannot be set from the body. These three, one per map open, feed the Devices, Browser languages and Embedding sites widgets. interactionTime.durationMs is the time the map's tab was visible — the embed stops the clock while the tab is hidden — capped at one hour per visit when averaged.
Submitting Events
Events are submitted via the public API:
http
POST /api/p/{project_id}/analytics/
Content-Type: application/json
{
"sessionId": "9f2c1c6f0b1d4e7a8c3b5d6e7f8a9b0c",
"events": [
{
"event": "areaClick",
"params": {
"id": "area-uuid",
"name": "Coffee Shop",
"floor": "floor-1"
},
"timestamp": "2024-04-12T14:30:00Z"
}
]
}Session id
sessionId is a random token the map draws once per page load and sends with every batch of that visit. It lets the dashboard tie a visit's events together — engaged sessions, the session funnel, routes that never reached their destination floor — and nothing more: it is kept in memory only (no cookie, no storage), so it cannot recognise a returning visitor, and a page restored from the back/forward cache starts a new one. Accepted values are 8–64 characters of A–Z a–z 0–9 _ -; anything else is stored as empty. Events without a session id are counted everywhere except in the per-session widgets.
Parameter Notes
nameis the entity title in the project's default language. Reports fall back to the current title stored on the area/marker when an event has noname.- For
floorChange,flooris the destination level (fromFloor/toFloorrecord the transition). Reports group floor events byfloor. - The zoom buttons emit
zoomIn/zoomOut; wheel and pinch zoom emitzoomChange. - For
routeRequest,originType/destinationTypeareareaormarker. The route report resolves each endpoint against both tables rather than trusting the type, so these are stored for consumers of the raw event log (/analytics/events/), which otherwise cannot tell an area id from a marker id. componentLoadedfires once the map is up and its configuration has loaded;componentUnmountedandinteractionTimefire when the visitor leaves — including when they simply close the tab, not only on an SPA unmount.areaFocusfires when a visitor selects an area from search, a deep link or the SDK.areaBookmarkshares the samearea.selectdefinition but is raised only by the editor, so embedded maps never send it.
Parameter Validation
- Only whitelisted parameters for each event type are accepted (see tables above)
- String values are truncated to 500 characters
- Only
string,integer, andfloatvalues are allowed - Unknown event types are silently ignored
SDK Events vs Analytics Events
Analytics events are tracked automatically by the embedded map. They are separate from SDK events (areaClick, markerClick, etc.) which are dispatched to your application code.