Skip to content

Analytics Events ​

Pro & EnterpriseAnalytics requires a Pro or Enterprise subscription.
Compare plans

Detailed reference for all trackable events and their parameters.

Event Types ​

Area Events ​

Frontend EventBackend MappingAllowed Parameters
areaClickarea.clickid, name, floor
areaHoverarea.hoverid, name, floor
areaFocusarea.selectid, name, floor
areaBookmarkarea.selectid, name, floor

Marker Events ​

Frontend EventBackend MappingAllowed Parameters
markerClickmarker.clickid, name, floor
markerHovermarker.hoverid, name, floor
markerInfoOpenmarker.selectid, name, floor

Floor Events ​

Frontend EventBackend MappingAllowed Parameters
floorChangefloor.switchid, name, floor, fromFloor, toFloor
floorZoomFocusfloor.selectid, name, floor
floorLoadfloor.selectid, name, floor

Search Events ​

Frontend EventBackend MappingAllowed Parameters
searchQuerysearch.queryquery
searchResultClicksearch.selectquery, id, name
searchNoResultssearch.queryquery

Wayfinding Events ​

Frontend EventBackend MappingAllowed Parameters
routeRequestwayfinding.routeid, name, floor, originId, originName, originLevelId, originType, destinationId, destinationName, destinationLevelId, destinationType

Button Events ​

Frontend EventBackend MappingAllowed Parameters
customButtonClickbutton.clickid, 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 EventBackend MappingAllowed Parameters
zoomInzoom.in(none)
zoomOutzoom.out(none)
zoomChangezoom.change(none)
panMovezoom.change(none)
componentLoadedgeneral.componentLoadeddevice, language
componentUnmountedgeneral.componentUnmounted(none)
interactionTimegeneral.interactionTimedurationMs

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 ​

  • name is 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 no name.
  • For floorChange, floor is the destination level (fromFloor/toFloor record the transition). Reports group floor events by floor.
  • The zoom buttons emit zoomIn / zoomOut; wheel and pinch zoom emit zoomChange.
  • For routeRequest, originType / destinationType are area or marker. 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.
  • componentLoaded fires once the map is up and its configuration has loaded; componentUnmounted and interactionTime fire when the visitor leaves — including when they simply close the tab, not only on an SPA unmount.
  • areaFocus fires when a visitor selects an area from search, a deep link or the SDK. areaBookmark shares the same area.select definition 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, and float values 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.

Layota Documentation