All events are pushed to the global window.dataLayer if it exists.

You can inspect the events in the browser console or by using dedicated analytics debugging tools.

App Loaded
Fired when application finished loading
{
  event: "oa3de_app_loaded",
  data: {}
}
App Config Loaded
Fired when application configuration has been loaded
{
  event: "oa3de_app_config_loaded",
  data: {
    resource: Resource
  }
}
App Interaction Start
Fired when user first interacts with the application
{
  event: "oa3de_app_interaction_start",
  data: {}
}
App Overlay Open
Fired when application overlay is opened on mobile
{
  event: "oa3de_app_overlay_open",
  data: {
    auto: boolean,
    origin: AEEventOrigin
  }
}
App Overlay Close
Fired when application overlay is closed
{
  event: "oa3de_app_overlay_close",
  data: {}
}
App Mobile Open
Fired when application is opened from mobile placeholder
{
  event: "oa3de_app_mobile_open",
  data: {
    auto: boolean
  }
}
App Mobile Close
Fired when application is closed on mobile (back to placeholder)
{
  event: "oa3de_app_mobile_close",
  data: {}
}
App Toggle Sidebar
Fired when user toggles the sidebar visibility
{
  event: "oa3de_app_toggle_sidebar",
  data: {
    media: 
     | "Dollhouse"
     | "TopView"
     | "Tour"
     | "Balcony"
     | "BuildingView"
     | "Elevation"
     | "ExternalUrl"
     | "ExternalUrls",
    collapsed: boolean,
    origin: AEEventOrigin
  }
}
Website closed
Fired when website is closed
{
  event: "oa3de_app_website_close",
  data: {}
}
Custom App Action Event
Fired when a custom analytics event is triggered via app action
{
  event: "oa3de_app_action_custom_event",
  data: {
    eventId: string,
    eventData: JsonObject,
    origin: AEEventOrigin
  }
}
App Action Hook
Fired when an app-action-hook action is triggered
{
  event: "oa3de_app_action_hook",
  data: {
    actionId: string,
    data: JsonObject,
    origin: AEEventOrigin
  }
}
Compare Add
Fired when a unit is added to the comparison list
{
  event: "oa3de_compare_add",
  data: {
    unitAdded: Unit,
    unitsInCompare: Unit[],
    origin: AEEventOrigin
  }
}
Compare Remove
Fired when a unit is removed from the comparison list
{
  event: "oa3de_compare_remove",
  data: {
    unitRemoved: Unit,
    unitsInCompare: Unit[],
    origin: AEEventOrigin
  }
}
Compare Clear
Fired when all units are removed from the comparison list
{
  event: "oa3de_compare_clear",
  data: {
    unitsRemoved: Unit[],
    origin: AEEventOrigin
  }
}
Config Loaded
Fired when configuration has been successfully loaded
{
  event: "oa3de_config_loaded",
  data: {
    configId: string
  }
}
Config Load Error
Fired when configuration loading fails
{
  event: "oa3de_config_load_error",
  data: {
    configId: string,
    msg: string
  }
}
Contact Form Open
Fired when contact form is opened
{
  event: "oa3de_contact_form_open",
  data: {
    units: Unit[],
    origin: AEEventOrigin,
    formId: string
  }
}
Contact Form Make Inquiry
Fired when user submits an inquiry through the contact form
{
  event: "oa3de_contact_form_make_inquiry",
  data: {
    units: Unit[],
    rfpId: string
  }
}
Contact Form Data Touched
Fired when user starts filling out the contact form
{
  event: "oa3de_contact_form_data_touched",
  data: {
    units: Unit[],
    rfpId: string
  }
}
Contact Form Data Validated
Fired when contact form data passes validation
{
  event: "oa3de_contact_form_data_validated",
  data: {
    units: Unit[],
    rfpId: string
  }
}
Header Share Open
Fired when share dialog is opened from header
{
  event: "oa3de_header_share_open",
  data: {
    openMode: 
     | "native"
     | "popup",
    origin: AEEventOrigin
  }
}
Header Share Popup Select Option
Fired when user selects an option in the share popup
{
  event: "oa3de_header_share_popup_select_option",
  data: {
    option: 
     | "copy-link"
     | "send-email"
  }
}
Header Share Popup Close Without Select Option
Fired when share popup is closed without selecting an option
{
  event: "oa3de_header_share_popup_close_without_select_option",
  data: {
    origin: AEEventOrigin
  }
}
Investments Map Click Group
Fired when user clicks on a group of investments on the map
{
  event: "oa3de_investments_map_click_group",
  data: {
    targetInvestments: 
     | {
          type: iframe;
          targetUrl: string;
        }
     | {
          type: url;
          targetUrl: string;
        }
     | {
          type: investmentId;
          targetInvestment: string;
        },
    origin: AEEventOrigin
  }
}
Load Times Viewer 360
Fired when 360 viewer finishes loading with timing metrics
{
  event: "oa3de_load_times_viewer360",
  data: {
    type: 
     | "unknown"
     | "ttdh"
     | "building-viewer",
    resourceId: string,
    loadStartTS: number,
    firstFrame: 
     | number
     | null,
    keyFrame: 
     | number
     | null,
    view360: 
     | number
     | null,
    view360_p30: 
     | number
     | null,
    view360_p60: 
     | number
     | null,
    view360_p90: 
     | number
     | null,
    hqFrame: 
     | number
     | null
  }
}
Technical Card Open
Fired when technical card is opened for a unit
{
  event: "oa3de_technical_card_open",
  data: {
    unit: Unit,
    target: 
     | "overlay"
     | "new-tab",
    origin: AEEventOrigin
  }
}
Tour Set Camera
Fired when user sets a camera position in the tour
{
  event: "oa3de_tour_set_camera",
  data: {
    tourContextId: string,
    tourId: string,
    cameraId: number,
    cameraIsExterior: boolean,
    origin: 
     | "top-view"
     | "tour-link"
     | "switch-to-exterior"
     | "switch-to-interior"
  }
}
Tour Loaded Camera
Fired when a camera is loaded in the tour
{
  event: "oa3de_tour_loaded_camera",
  data: {
    tourContextId: string,
    tourId: string,
    cameraId: number,
    cameraIsExterior: boolean
  }
}
Tour Loaded Config
Fired when tour configuration is loaded
{
  event: "oa3de_tour_loaded_tour_config",
  data: {
    tourContextId: string,
    tourId: string,
    tourStyleName: string
  }
}
Tour First Interaction
Fired when user first interacts with the tour
{
  event: "oa3de_tour_first_interaction",
  data: {}
}
Tour Change Style
Fired when user changes the tour style
{
  event: "oa3de_tour_change_style",
  data: {
    tourContextId: string,
    style: string
  }
}
TTDH Loaded Config
Fired when turntable dollhouse configuration is loaded
{
  event: "oa3de_ttdh_loaded_config",
  data: {
    ttdhId: string
  }
}
TTDH Set Floor
Fired when user selects a floor in the turntable dollhouse
{
  event: "oa3de_ttdh_set_floor",
  data: {
    floor: number
  }
}
TTDH First Interaction
Fired when user first interacts with the turntable dollhouse
{
  event: "oa3de_ttdh_first_interaction",
  data: {}
}
Unit Open
Fired when a unit is opened
{
  event: "oa3de_unit_open",
  data: {
    unit: Unit,
    previousUnitId: string,
    origin: AEEventOrigin
  }
}
Unit Open External
Fired when a unit is opened in an external view
{
  event: "oa3de_unit_open_external",
  data: {
    unit: Unit,
    previousUnitId: string,
    origin: AEEventOrigin
  }
}
Unit Open URL Button
Fired when user clicks a URL button in unit view
{
  event: "oa3de_unit_open_url_button",
  data: {
    unit: Unit,
    origin: AEEventOrigin,
    link: string
  }
}
Unit App Action Button
Fired when user clicks an app action button in unit view
{
  event: "oa3de_unit_app_action_button",
  data: {
    unit: Unit,
    origin: AEEventOrigin,
    appActionId: string,
    custom: boolean
  }
}
Unit Select Media
Fired when user selects media type for a unit
{
  event: "oa3de_unit_select_media",
  data: {
    option: 
     | "Dollhouse"
     | "TopView"
     | "Tour"
     | "Balcony"
     | "BuildingView"
     | "Elevation"
     | "ExternalUrl"
     | "ExternalUrls",
    media: 
     | Type_ComponentUnitCompareMediaNavItem
     | null,
    origin: AEEventOrigin
  }
}
Unit Details Click On Custom Banner
Fired when user clicks on a custom banner in unit details
{
  event: "oa3de_unit_details_click_on_custom_banner",
  data: {
    action: 
     | {
          action: open-url;
          url: string;
          sameTab: boolean;
        }
     | {
          action: open-unit;
          unitId: string;
        }
     | {
          action: execute-action;
          actionId: string;
        },
    text: string,
    origin: AEEventOrigin
  }
}
Unit List Switch Layout
Fired when user switches the unit list layout between table and cards view
{
  event: "oa3de_unit_list_switch_layout",
  data: {
    layout: 
     | "table"
     | "cards"
  }
}
Unit List Sort
Fired when user sorts the unit list
{
  event: "oa3de_unit_list_sort",
  data: {
    sortByName: string,
    sortByConfig: Type_ComponentUnitListOrderSection[]
  }
}
Unit List Filter Init
Fired when unit list filters are initialized
{
  event: "oa3de_unit_list_filter_init",
  data: {
    filterState: AEUnitListFilter_FilterStateMap,
    filters: AEUnitListFilter_FilterMap
  }
}
Unit List Filter Change
Fired when user changes unit list filters
{
  event: "oa3de_unit_list_filter_change",
  data: {
    filterState: AEUnitListFilter_FilterStateMap,
    filters: AEUnitListFilter_FilterMap,
    filterStateChanged: AEUnitListFilter_FilterStateMap,
    filtersChanged: AEUnitListFilter_FilterMap,
    changedPaths: string[]
  }
}
Unit List Filter Reset
Fired when user resets the unit list filters
{
  event: "oa3de_unit_list_filter_reset",
  data: {
    filterState: AEUnitListFilter_FilterStateMap,
    filters: AEUnitListFilter_FilterMap
  }
}
Viewport Init View
Fired when viewport view is initialized
{
  event: "oa3de_viewport_init_view",
  data: {
    viewId: number,
    scene: number
  }
}
Viewport Change View
Fired when user changes the viewport view
{
  event: "oa3de_viewport_change_view",
  data: {
    viewId: number,
    scene: number,
    origin: AEEventOrigin
  }
}
Viewport Init Scene
Fired when viewport scene is initialized
{
  event: "oa3de_viewport_init_scene",
  data: {
    viewId: number,
    scene: number
  }
}
Viewport Switch Scene
Fired when user switches to a different scene in the viewport
{
  event: "oa3de_viewport_switch_scene",
  data: {
    viewId: number,
    scene: number,
    origin: AEEventOrigin
  }
}
Viewport Switch Fullscreen
Fired when user toggles fullscreen mode in the viewport
{
  event: "oa3de_viewport_switch_fullscreen",
  data: {
    enabled: boolean
  }
}
Viewport Switch Frames Visibility
Fired when user toggles frame visibility in the viewport
{
  event: "oa3de_viewport_switch_frame_visibility",
  data: {
    enabled: boolean
  }
}
Viewport Take View Screenshot
Fired when user takes a screenshot of the current viewport view
{
  event: "oa3de_viewport_take_view_screenshot",
  data: {
    resolution: [number, number],
    rotation: number,
    viewId: number,
    viewSceneId: string,
    zoom: [object Object]
  }
}
Viewport Open Exterior Tour
Fired when user opens the exterior tour in the viewport
{
  event: "oa3de_viewport_open_exterior_tour",
  data: {
    origin: AEEventOrigin
  }
}
Viewport Rotation Button Press
Fired when user pressed and holds a rotation button in the viewport
{
  event: "oa3de_viewport_rotation_button_press",
  data: {
    start: number,
    end: number,
    delta: number,
    deltaR: number,
    origin: AEEventOrigin
  }
}
Viewport Rotation Button Click
Fired when user clicks a rotation button in the viewport
{
  event: "oa3de_viewport_rotation_button_click",
  data: {
    start: number,
    end: number,
    delta: number,
    deltaR: number,
    origin: AEEventOrigin
  }
}
Viewport Rotation Drag
Fired when user rotates the viewport by dragging
{
  event: "oa3de_viewport_rotation_drag",
  data: {
    start: number,
    end: number,
    origin: AEEventOrigin,
    startTS: number,
    endTS: number
  }
}
type Unit = {
  id: string;
  type?: number | string;
  customCrmId?: string; // unit id in client crm
  name: string;
  media?: Type_UnitMedia[];
  custom?: JsonObject;
  history?: UnitHistory;
  dynamic?: JsonObject;
};

type AEAppActionAppElementSizeValues = {
    width: number;
    height: number;
    isSmall: boolean | null;
    windowWidth: number;
    windowHeight: number;
};

type AEUnitListFilter_FilterState_Range = {
    min: number | null;
    max: number | null;
};

type AEUnitListFilter_FilterState_SelectExact = {
    selected: 
      | number[] 
      | ((options: { values: (string | number)[] }[]) => number[] | undefined)
      | undefined
};

type AEUnitListFilter_FilterState_TextSearch = {
    textSearch: string;
};

type AEUnitListFilter_FilterState =
    | AEUnitListFilter_FilterState_Range
    | AEUnitListFilter_FilterState_SelectExact
    | AEUnitListFilter_FilterState_TextSearch;

type AEUnitListFilter_FilterStateMap = Record<string, AEUnitListFilter_FilterState>;
type AEUnitListFilter_FilterMap = Record<string, Type_UnitFilterType[]>;

type AELoadTimesViewer360Type = "ttdh" | "building-viewer" | "unknown";

type AETourSetCameraOrigin = "top-view" | "tour-link" | "switch-to-exterior" | "switch-to-interior";

type AEEventOrigin =
    | { type: "unit-list" }
    | { type: "unit-list-table" }
    | { type: "unit-list-cards" }
    | { type: "unit-details-similar"; unit: Unit }
    | { type: "unit-details"; unit: Unit }
    | { type: "compare-all" }
    | { type: "compare-sbs" }
    | { type: "view-frame-outline"; viewId: number; rotation: number; elementIndex: number; outlineIndex: number }
    | { type: "view-frame-card"; viewId: number; rotation: number; elementIndex: number }
    | { type: "rfp" }
    | { type: "other" }
    | { type: "poi" }
    | { type: "tour-pin"; viewId: number; rotation: number; tourPinId: number }
    | { type: "button" }
    | { type: "dynamic-island" }
    | { type: "gallery" }
    | { type: "location" }
    | { type: "poi-viewer" }
    | { type: "investments-map"; originInvestmentId: string; source: "list" | "map" };