Skip to content

Audit Log

The Audit Log App lets you gather deep Session insights in order to fully understand it. For example, Where did the user navigate to?, How long did he stay on that page?, Were forms changed?, Were buttons clicked?, Were tabs opened and or closed? All these types of events will be collected as a human-readable JSON log on a data endpoint of your choice.

As standard, the Audit Logs contain below information for each Session:

  • Session start info: session_created, session_end
  • Invitation Sent: invitation_sent
  • Participant joined/left the Session: participant_joined, participant_left
  • User opened new tab: tab_created
  • User switched an active tab: switch_active_tab
  • Tab Paused / Resumed: tab_pause, tab_resume
  • User shared a document: document_share
  • User annotated a document: document_edit
  • User downloaded a file: file_download
  • User navigated to a URL: navigate, tab_relocate_start
  • User changed a form / input field: input_change
  • Form submission by a user: submit
  • User clicks: click
  • Session ended by User (time and duration): session_end
  • Host Request: host_request
  • Host Changed: host_change
  • Control transfer to participant: control_switch_request, control_switch, control_gained,
  • Request granted Or control given/taken: tab_control, tab_control_request
  • Chat Message Received: chat
  • Video Started: video_chat_enabled
  • Video Archived: video_chat_archiving_started
  • WebRTC Stream Exception: webrtc_stream_exception
  • WebRTC Stream Ended by User: webrtc_stream_ended_by_user
  • Screenshot Generated: screenshot_generated
  • Feature Upgrade Request: feature_upgrade_request
  • Custom Log Message: client_log

By default the Audit Log App records every event. Open Audit log events in the app settings to pick the exact event types you want — for example follower_joined, tab_relocate_start and submit, so the log shows who joined, where they went and what they submitted, and nothing else. Events are grouped, so you can tick or untick a whole group at a time, and Select all returns to recording everything.

The selectable event types are:

GroupEvent types
Sessionsession_created, session_end, pause_started, pause_ended, tab_pause, tab_resume, client_log, feature_upgrade_request
Participantsleader_joined, leader_left, follower_joined, follower_left, host_change, host_request, invitation_sent
Navigationnavigate, switch_active_tab, tab_relocate_start, navigation_redirect, navigation_blocked
Page interactionclick, input_change, submit
Control switchingcontrol_gained, control_switch, control_switch_request, tab_control, tab_control_request
Files and documentsdocument_share, document_edit, file_download
Recording and screenshotsrecording_started, recording_ended, screenshot_generated
Automationautomation_request, automation_response
Chatchat
Video chatvideo_chat_enabled, video_chat_archiving_started, webrtc_stream_ended_by_user, webrtc_stream_exception, videochat_audio_device_not_found, videochat_audio_device_selected, videochat_audio_device_selection_error, videochat_audio_device_type_error, videochat_camera_enabled, videochat_camera_facing_mode_set, videochat_camera_toggled, videochat_custom_video_filter_applied, videochat_custom_video_filter_apply_error, videochat_custom_video_filter_not_registered, videochat_custom_video_filter_registered, videochat_devices_fetch_error, videochat_devices_fetched, videochat_devices_permissions_error, videochat_devices_updated, videochat_filter_applied, videochat_filter_clear_error, videochat_filter_disabled, videochat_filter_removed, videochat_mic_enabled, videochat_microphone_toggled, videochat_mute_all, videochat_mute_all_error, videochat_mute_user, videochat_mute_user_error, videochat_provider_initialized, videochat_publisher_init_error, videochat_publisher_initialized, videochat_publisher_media_stopped, videochat_publisher_publish_error, videochat_publisher_published, videochat_publisher_stream_created, videochat_publisher_stream_destroyed, videochat_publisher_unpublished, videochat_session_connected, videochat_session_connection_error, videochat_subscriber_connected, videochat_subscriber_destroyed, videochat_subscriber_disconnected, videochat_subscriber_init_error, videochat_subscriber_initialized, videochat_subscriber_video_disable_warning, videochat_subscriber_video_disable_warning_lifted, videochat_subscriber_video_disabled, videochat_subscriber_video_enabled, videochat_subscribers_refreshed_after_reconnect, videochat_video_capture_pin_error, videochat_video_capture_pinned, videochat_video_device_not_found, videochat_video_device_selected, videochat_video_device_selection_error, videochat_video_device_type_error, videochat_video_dimensions_set, videochat_video_resolution_set, videochat_videochat_prompt_publisher_option_set

Through the REST and JavaScript APIs the same setting is the audit_log_events Session option, which takes a list of event type names.

These details meet the standards of scrutiny required by most enterprises. After all, these are as good as screen-recordings of a Session. Even better when we also consider the time-stamped (UTC) documentation of each event and negligible data storage costs compared to the other. Furthermore, another major difference is that audit logs filter out potentially sensitive data.

Audit logs can be delivered and stored in multiple ways, depending on your configuration:

  • Storage Application: Audit logs can be stored in a dedicated storage application for later retrieval and analysis.
  • Webhook Delivery: Audit logs can be sent to an external system via a webhook event: space.session.audit_logs_created.

Beyond the default events, you can introduce your own custom events to the audit log. These custom events are recorded under the client_log event type.

You can log custom events using one of two main approaches, depending on your integration: from the Widget API, or the Extension API.

Any sensitive information, regardless of it being part of a web-page (ex.-Banking account details, Patient health record) or inputs made by a user (ex.-Login credentials, Address) can easily be masked using our Field/Element Masking feature. This will then not only be masked for other participants in the Session, but also in the Audit logs.

Enable the Audit Log App in the Session Editor.

See here how to access the Audit Log of a Session:

Below you can see the details captured in the Audit log of this Session:

{
"session_logs": [
{
"type": "session_created",
"time": "2025-05-21T10:04:33.343737",
"details": {
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"start_url": "",
"ip": null,
"created_from": "console",
"options": {
"admission_enabled": false,
"orphan_redirect_url": "",
"block_until_agent_joins": true,
"branding_primary_color": "#e54747",
"branding_primary_text_color": "#ffffff",
"branding_secondary_color": "#6e2222",
"branding_secondary_text_color": "#ffffff",
"session_start_confirmation": false,
"chat_integration": "disabled",
"default_invitations_enabled": true,
"notifications_enabled": true,
"follower_redirect_url": "",
"headless": false,
"sync_participants": true,
"hide_element_by_selector": "",
"language": "en",
"leader_redirect_url": "",
"notification_position": "bottom-right",
"private_session": false,
"password_required": false,
"shake_to_start": false,
"soft_session_end": false,
"soft_end_filter": [],
"localhost_requests_allowed": false,
"white_label": false,
"video_archiving_enabled": false,
"session_autorestore_enabled": true,
"auto_start": false,
"hide_support_button_when_unavailable": false,
"hide_until_agent_joins": false,
"cookie_transfer_enabled": true,
"cookie_transfer_proxying": false,
"cookie_transfer_urls": [],
"cookie_transfer_scopes": [],
"enable_cookie_backtransfer": false,
"end_redirect_enabled": true,
"hide_support_button": false,
"embedded_sessions_only": false,
"support_button_position": "bottomleft",
"key_combo_to_start": true,
"theme_font_background": "#cc0000",
"theme_font_color": "#FFFFFF",
"theme_font_size": 14,
"s3_access_key": "**********",
"s3_access_secret": "**********",
"s3_endpoint_url": "https://s3.amazonaws.com",
"compress_ws_messages": true,
"encrypt_httponly_cookies": false,
"anyone_can_deactivate_space": false,
"host_switching_allowed": true,
"participants_can_request_to_interact": true,
"non_hosts_can_open_tabs": true,
"new_urls_allowed": true,
"follower_drawing_selector": "",
"download_trigger_enabled": true,
"invitations_allowed": true,
"pause_enabled": false,
"sounds_enabled": true,
"hide_cursors": false,
"start_with_invite_modal": false,
"end_of_session_popup_url": "",
"start_with_loading_screen": true,
"format_session_id": false,
"start_with_chat_open": false,
"hide_session_ui": false,
"keep_tabs_hidden": false,
"url_mangling": false,
"verbose_console": false,
"native_selects": true,
"native_dialogs_enabled": false,
"use_residential_proxy": false,
"csp_report_uri": "",
"startup_page_action": "new_tab_page",
"startup_page_list": [],
"allow_opening_urls_from_query_parameter": false,
"videochat_enabled": false,
"start_with_videochat_on": false,
"start_with_fullscreen_videochat": false,
"videochat_prompt": true,
"start_muted": false,
"anonymous_users_can_share_camera": true,
"default_videochat_fullscreen_mode": "grid",
"default_videochat_mode": "floating",
"videochat_framing": "cover",
"p2p_videochat_enabled": false,
"videochat_enhancements_enabled": false,
"automated_session_recording_enabled": false,
"s3_recordings_bucket": "",
"audit_logs_enabled": false,
"s3_audit_log_bucket": "",
"chat_enabled": false,
"chat_logs_enabled": false,
"filesharing_enabled": false,
"original_file_download_allowed": false,
"document_editor_enabled": true,
"document_viewer": "pdf",
"screensharing_enabled": false,
"automatic_screenshots_enabled": false,
"s3_screenshots_bucket": "",
"screenshots_on_annotation": false,
"screenshot_image_size": 800,
"screenshot_interval": 15,
"use_webrtc_for_screenshots": false,
"privacy_canvas": false,
"privacy_date": false,
"privacy_embed": false,
"privacy_ip_address": false,
"privacy_http_headers": false,
"privacy_beacon": false,
"privacy_devices": false,
"privacy_user_agent": false,
"selected_regions": [],
"selected_server_id": "",
"blocklist": [],
"allowlist": [],
"headers_json": [],
"private_proxies": "**********",
"enforce_private_proxies": false,
"branding_logo_link": "",
"branding_logo_url": "",
"dashboard_background_url": ""
},
"server_region": "de eu-de"
}
},
{
"time": "2025-05-21T10:04:34.176739907",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "follower_joined",
"details": {
"access_allowed": true,
"agent_passed": false,
"apply_url": "",
"authenticated": true,
"avatar": "https://www.gravatar.com/avatar/968b05096ec6f7321e9b6596c83a7a49.jpg?d=404&s=96",
"client_index": 1,
"color": "green",
"colorCode": "#84CC16",
"continuation_token": "",
"country_code": "",
"deviceType": "desktop",
"drawingSettings": {
"enabled": false,
"timeout": 3,
"width": 15
},
"email": "nicholas@surfly.com",
"first_agent": false,
"index": 1,
"ip": "",
"name": "Nicholas Piël",
"online": true,
"participant_num": 1,
"participant_prefix": "Participant",
"password_passed": false,
"queue_index": "",
"screenHeight": 1293,
"screenWidth": 1198,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
"user_id": 3,
"user_params": {},
"webrtcEnabled": true
}
},
{
"time": "2025-05-21T10:04:34.23917342",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "control_gained",
"details": {
"client_index": 1,
"username": "Nicholas Piël"
}
},
{
"time": "2025-05-21T10:07:30.447914792",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "navigate",
"details": {
"url": "https://lifequote.legalandgeneral.com/",
"username": "Nicholas Piël"
}
},
{
"time": "2025-05-21T10:07:31.779608884",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {},
"node_name": "option",
"parent_form_attributes": {},
"value": "",
"xpath": "/html/body/div/div/div/header/div/div/div/div[2]/div/div/div[2]/div/div/form/div/div[2]/div/div/div/select/option"
}
},
{
"time": "2025-05-21T10:07:31.893772278",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"is_masked": true,
"node_name": "option"
}
},
{
"time": "2025-05-21T10:07:31.894023417",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"is_masked": true,
"node_name": "option"
}
},
{
"time": "2025-05-21T10:07:31.894251424",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"is_masked": true,
"node_name": "option"
}
},
{
"time": "2025-05-21T10:07:31.894504328",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {
"id": "quoteEmails",
"name": "quoteEmails"
},
"node_name": "input",
"parent_form_attributes": {},
"value": "on",
"xpath": "//*[@id=\"quoteEmails\"]"
}
},
{
"time": "2025-05-21T10:07:33.675239473",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {
"class": "category-switch-handler",
"id": "ot-group-id-2",
"name": "ot-group-id-2"
},
"node_name": "input",
"value": "on",
"xpath": "//*[@id=\"ot-group-id-2\"]"
}
},
{
"time": "2025-05-21T10:07:33.675462822",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {
"class": "category-switch-handler",
"id": "ot-group-id-3",
"name": "ot-group-id-3"
},
"node_name": "input",
"value": "on",
"xpath": "//*[@id=\"ot-group-id-3\"]"
}
},
{
"time": "2025-05-21T10:07:33.675654049",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {
"class": "category-switch-handler",
"id": "ot-group-id-4",
"name": "ot-group-id-4"
},
"node_name": "input",
"value": "on",
"xpath": "//*[@id=\"ot-group-id-4\"]"
}
},
{
"time": "2025-05-21T10:07:33.675838785",
"session_id": "s20HsVxy3W1JTAuqWAzyTMwUww",
"type": "input_change",
"details": {
"attributes": {
"class": "category-filter-handler",
"id": "chkbox-id"
}
}
}
]
}