Skip to main content
Version: v2

Overview

Fullstory uses a single "event-centric" schema to model the data that passes through Fullstory's systems. This schema is designed to be flexible and extensible, allowing for additions to this model without having to perform expensive migrations. In this model, the *_type suffixed fields indicate the shape of the *_properties objects.

Identifiers

The three identifiers that are used to associate events are:

  • device_id
  • session_id
  • view_id

If you are using Fullstory with session replay, you can use these identifiers construct a URL to the session. For example, if your Organization ID is ORG_ID and are using Fullstory's North America data center, the URL to a session would be https://app.fullstory.com/ui/ORG_ID/session/<device_id>:<session_id>.

Viewing the session requires that the session is still within your organization's retention period and that the session was not sampled.

In some cases, session_id and view_id may not be present in the event. This usually indicates that the event was sent using the server API and was not associated with a session.

Source Info

Every event contains contextual information about where that event came from and how the event was passed into Fullstory. The source_type indicates where the event came from and the source_properties field contains additional information about the event source.


Base Event Model

The following table describes the common fields present for events in each destination.

FieldTypeDescription
device_idint64The device ID indicates a unique recording device for the event. For web recording, the ID corresponds to a unique user cookie. For mobile recording, this corresponds to a single app/device combo. This field is always present.
session_idint64If present, unique id associating multiple events to the same session. This value combined with the device_id uniquely identifies a session. In other Fullstory APIs, this combined value is the full "session ID", and is constructed like device_id:session_id.
view_idint64If present, unique id associating multiple events to a single page, screen or tab. This value, combined with device_id and session_id uniquely identifies the view. For web recording, this corresponds to a single page load. For mobile recording, this corresponds to a continuous period of recording.
event_timetimestampThe time in UTC that the event occurred. Format is RFC 3339 to millisecond precision (e.g. 2006-01-02T15:04:05.000000Z).
event_typestringThe type of the event.
event_propertiesobjectAn object containing the data for corresponding to the event_type.
source_typestringThe Source Type of the event.
source_propertiesobjectThe Source Properties corresponding to the source_type.

Events

An event is the core data model in Fullstory. Each event can describe one of a few distinct classes of information:

  • Direct user interactions: An action that a user took. Examples include click, change, and navigate.
  • System events: An event that was initiated by a browser, an API, or injected by the capture client. Examples include load, custom, and exception.
  • Interpreted or aggregate events: An event that was injected after capture by Fullstory's servers. Examples include form_abandon and mouse_thrash.

This section describes the possible event_types and the associated event_properties that are present in the event.

Common Event Properties

The following properties may be present in event_properties for all event types.

FieldTypeDescription
event_definition_idstringThe ID of the most specific matching user-configured Defined Event.
additional_event_definition_idsarray of stringsAdditional matching event definition IDs.

background

Indicates that the mobile app was backgrounded.


change

Indicates a change in the value of an input element such as a text input, checkbox, or radio button. Continuous updates are coalesced into a single change event. For example, if "f" -> "fo" -> "foo" is typed into an input element, the change event will only contain "foo".

PropertyTypeDescription
targetEventTarget objectThe target of the change event.
fs_suspicious_kindarray of enumsIndicates any suspicious activity detected in the change event.
Possible values:
- sql_injection: The activity appears to be a SQL injection attack.
- xss: The activity appears to be a cross-site scripting (XSS) attack.

click

Indicates a primary click (typically left-click) in web, or a tap in mobile. Triggers when a user clicks or taps on an element.

PropertyTypeDescription
targetEventTarget objectThe target of the click event.
fs_rage_countint64If greater than 0, indicates that the click was part of a rage click sequence. Learn more.
fs_dead_countint64This value will be 1 if the click did not have an effect on the page, thus is considered dead. Learn more.
fs_error_kindenumIf present, indicates an error click. Learn more.
Possible values:
- unknown: The reason for the error click was unknown.
- console: The source of the error was a console.error() message.
- exception: The source of the error was an exception.
is_click_longboolIf true, indicates that the click was a long click. Only available on mobile.
is_click_unhandledboolIf true, indicates that the click was unhandled. Only available on mobile.

Indicates that the user has given or revoked consent for capture. Fires with FS.consent() or FS('setIdentity', { consent }) or is added based on previous consent state. Learn more.

PropertyTypeDescription
is_consent_givenboolIf true, then a user has consented to capture elements that require consent.
consent_scopeenumThe scope of the provided consent.
Possible values:
- document: Document is the only possible value for consent scope.
consent_action_typeenumIndicates how this consent event was added during capture.
Possible values:
- report_consent: Consent was injected based on the current state of the user's consent.
- set_consent: Consent was set directly by the user or API.

console_message

Indicates a logging message. For web, this event is limited to errors via a console.error call. For mobile, this is a log from the Fullstory SDK.

PropertyTypeDescription
console_message_levelenumThe level that the console message was logged at.
Possible values:
- error
messagestringThe text of the console message.

copy

Indicates that the user copied highlighted text on the page.

PropertyTypeDescription
targetEventTarget objectThe target of the copy event. The text field indicates the copied text.

crash

Indicates that a mobile app has crashed.


cumulative_layout_shift

Indicates the CLS score for a page. This is calculated using the LayoutShift API and may not be available in all browsers. The score is calculated in accordance with the CLS definition.

PropertyTypeDescription
cumulative_layout_shiftdoubleThe Cumulative Layout Shift (CLS) score for the page.

custom

Indicates a user-defined event was fired with FS.event() or FS('trackEvent', {...}).

PropertyTypeDescription
event_namestringThe name of the custom event as provided by the API.
event_propertiesobjectAn object containing the parsed payload of the custom event.
fs_api_errorsarray of FsApiError objectsAny errors that occurred while processing the custom event.

element_seen

Indicates that a watched element has been rendered or has become visible in the viewport. There are three subtypes of this event: rendered, visible, and end. The visible subtype will be emitted when at least 25% of the element is visible in the viewport. The rendered subtype will be emitted if the element is rendered but not visible. The end subtype will be emitted when the element's lifecycle is complete and will contain the total time the element was rendered and visible.

PropertyTypeDescription
element_typeenumPossible values:
- rendered: Indicates that the watched element was rendered, but not visible in the viewport.
- visible: Indicates that the watched element was visible in the viewport.
- end: Indicates the end of the watched element's lifecycle.
element_render_duration_millisint64The amount of time that the element was rendered.
element_visible_duration_millisint64The amount of time that the element was visible.
element_start_typeenumThe type of the Watched Element at the element_start_time.
Possible values:
- rendered: Indicates that the watched element was rendered, but not visible in the viewport.
- visible: Indicates that the watched element was visible in the viewport.
- end: Indicates the end of the watched element's lifecycle.
element_start_timeint64The time at which the Watched Element was first rendered or made visible.
targetEventTarget objectThe watched element target.

exception

Indicates that an exception occurred. For web, this is a JavaScript exception. For mobile, this is a native exception.

PropertyTypeDescription
exception_source_filestringThe source file that produced the exception.
exception_countint32The number of times that this exception fired within a given window (useful for batching bursts of exceptions fired).
is_exception_handledboolWhether the exception is caught or not.
messagestringThe message associated with the exception.

first_input_delay

Indicates the delay between the first user input and when the browser responds. Triggers when PerformanceEventTiming is reported with type 'first-input' for the first time on a web page

PropertyTypeDescription
first_input_delay_millisint64The time from the first user input event to the browser's response.

force_restart

Indicates that the user restarted the app. Triggers when the time between the app being backgrounded and then started is short.

PropertyTypeDescription
elapsed_millisuint64The number of milliseconds between when the app was backgrounded and when it was started.

form_abandon

Indicates that a user started filling out a form but did not submit it.

PropertyTypeDescription
targetEventTarget objectThe target indicates the form that was abandoned.

highlight

Indicates that a user highlighted text on the page.

PropertyTypeDescription
targetEventTarget objectThe target of the highlight event. The text field indicates the highlighted text.

identify

Indicates a user-defined event was fired with FS.identify(), FS('setIdentity', {...}), FS.setUserVars(), or FS('setProperties', { type: 'user', properties })`. Identify events are also injected by Fullstory at the beginning of a capture to provide a snapshot of the user's properties at the time the data was ingested.

PropertyTypeDescription
user_idstringThe unique ID for the user provided through the API.
user_emailstringIf present, the email address for the user.
user_display_namestringThe display name for the user as provided through the API. If none is provided, this will be generated by the Fullstory backend.
user_propertiesobjectAn object containing the parsed payload of the user properties provided through the API.
fs_api_errorsarray of FsApiError objectsAny errors that occurred while processing the user properties.

interaction_to_next_paint

Indicates the longest time between a user interaction and the next paint, ignoring outliers. This can used to assess a page's responsiveness to user input. This value is taken from PerformanceEventTiming when the entryType is event.

PropertyTypeDescription
interaction_to_next_paint_millisint64The time from the first user input event to the next paint event.
event_namestringThe name of the event that triggered the first user input as reported by the browser. Examples are: keydown and mouseover.

keyboard_close

Indicates that the mobile keyboard was closed. Mobile Apps only.


keyboard_open

Indicates that the mobile keyboard was opened. Mobile Apps only.


load

Captures various performance timings of a page load for a web browser. Triggers when the timings have been finalized. Web only.

PropertyTypeDescription
dom_content_time_millisint64The time it took for the document to be parsed and the DOM tree to be constructed.
first_paint_time_millisint64The time of the First Contentful Paint (FCP).
load_time_millisint64The time it took for the page to load completely.
largest_paint_time_millisint64The time of the Largest Contentful Paint (LCP).
time_to_interactive_millisint64The Time to Interactive (TTI) is the time it takes for the page to become fully interactive.
total_blocking_time_millisint64The Total Blocking Time (TBT) is the total amount of time that the page was blocked after the FCP.
time_to_first_byte_millisint64The Time to First Byte (TTFB) is the time it takes for the first byte of the response to be received.

low_memory

Indicates that capture was stopped due to low device memory. On Android, this is triggered when there is 10% or less RAM available. On iOS, this is triggered on this event.

PropertyTypeDescription
memory_availableint64The amount of memory available on the device at the time of the event.
memory_maximumint64The maximum amount of memory available on the device.

mouse_thrash

Indicates a series of rapid mouse movements within a short time frame.


Indicates a change in the URL of the page for web sources, and a change in the screen for mobile sources. Triggers when the URL or screen changes including the initial navigation.

PropertyTypeDescription
navigate_reasonenumPossible values:
- navigate: Navigation started by clicking a link, entering the URL in the browser's address bar, form submission, or initializing through a script operation other than reload and back_forward as listed below.
- reload: Navigation is through the browser's reload operation, location.reload(), or a Refresh pragma directive.
- back_forward: Navigation is through the browser's history traversal operation.
- prerender: Navigation is initiated by a prerender hint.
fs_suspicious_kindarray of enumsIndicates any suspicious activity detected in the navigate event.
Possible values:
- sql_injection: The activity appears to be a SQL injection attack.
- xss: The activity appears to be a cross-site scripting (XSS) attack.

page_properties

Indicates that the page properties were set with FS.setPageVars() or FS('setProperties', { type: 'page', properties }).

PropertyTypeDescription
page_namestringThe name of the page as provided through the API.
page_propertiesobjectAn object containing the parsed payload of the page properties provided through the API.
fs_api_errorsarray of FsApiError objectsAny errors that occurred while processing the page properties.

paste

Indicates that the user pasted text into an input field on the page.

PropertyTypeDescription
targetEventTarget objectThe target of the past event. The 'text' field indicates the pasted text.

pinch_gesture

Indicates that the user performed a pinch gesture with a touch device.

PropertyTypeDescription
pinch_gesture_typeenumPossible values:
- in: Indicates the pinch led to a scale in.
- out: Indicates the pinch led to a scale out.
pinch_visual_scale_changedoubleThe change in the visual viewport after a finger pinch. If the change > 1.0, it implies scale in. If the change < 1.0, it implies scale out. If the change is exactly 1.0, it means a failed finger pinch.
pinch_scaledoubleScale determines the overall page scale at the end of the pinch. It is the ratio of the layout viewport dimensions to visual viewport dimensions. When the page is scaled out to max, the scale is 1.0 and greater than 1.0 otherwise.

request

Indicates a network request that resulted in a 400 or 500 level status code.

PropertyTypeDescription
request_methodstringThe HTTP request method (GET, POST, etc).
request_urlUrl objectThe request URL.
request_statusint32The HTTP status code of the request.
request_duration_millisint64The duration of the request.

Sources

The "source" describes the context of the event. It includes information about where the event came from and how the event was passed into Fullstory. This includes information such as URL or of the event (or screen for Mobile Apps), device information, and capture information. This section describes the possible source_types and the associated source_properties that are present in the event.

Common Source Properties

The following properties may be present in source_properties for all source types.

FieldTypeDescription
entrypointstringIf present, indicates how the event was created, including from the Fullstory capture script. Some examples are: web client, setVars, event, and POST /v2/users. Support for this field not guaranteed across all capture clients.
originstringIf present, indicates where the event was generated. Some examples are: dom and server.
integrationstringIf present, indicates the integration that generated the event. For Fullstory built capture sources, this value will be fs. Examples include dlo, segment, and zendesk. Support for this field is not guaranteed across all integrations.
page_definition_idstringThe ID of the Page as defined in the Fullstory app.
locationLocation objectThe location associated with the capture of the event. Learn more.
deviceDevice objectInformation about the device associated with the event. For web events, similar information is available in the user_agent field.

mobile_app

Indicates that the event was sent to Fullstory through a Fullstory mobile SDK.

PropertyTypeDescription
app_screen_namestringThe name of the mobile app screen on which the event occurred.
build_variantstringAndroid build variant (e.g. debug, release).
app_idstringIdentifies a run of FSCLI during iOS native mobile builds.
app_namestringThe name of the mobile app that produced the event.
app_package_namestringCode-level package name of a mobile app, e.g. com.fullstory.sampleapp.latest.
app_versionstringMobile app version, e.g. 25.0.1.

server

Indicates that the event was sent to Fullstory through a server-side API.

PropertyTypeDescription
user_agentUserAgent object
urlUrl object
initial_referrerUrl object
app_screen_namestring
build_variantstring
app_idstring
app_namestring
app_package_namestring
app_versionstring

web

Indicates that the event was sent to Fullstory through the browser API.

PropertyTypeDescription
user_agentUserAgent objectThe user agent of the browser that generated the event.
urlUrl objectThe URL of the page when the event occurred.
initial_referrerUrl objectThe referrer from the the first navigation event in the "view".

Common Objects

This section describes the common objects that are used in the event_properties and source_properties objects.

EventTarget

PropertyTypeDescription
raw_selectorstringThe full selector path to the event's target element.
textstringThe relevant text of the event's target element, such as inner text for click events and values for input change events.
maskedboolIf true, indicates that the target text is empty because it was masked due to a privacy rule.
element_definition_idstringThe ID of the most specific, matching user-configured Named Element.
additional_element_definition_idsarray of stringsAdditional matching Named Element IDs.
element_propertiesobjectProperties extracted from configured attributes on the target element. Learn more.

Url

PropertyTypeDescription
full_urlstringA full URL including the protocol, host, path, query, and hash.
hoststringThe host portion of the URL. e.g. www.example.com.
pathstringThe path portion of the URL. e.g. /path/to/page.
queryobjectThe query portion of the URL, structured as an object where the key is the query parameter name and the value is a list of values for that parameter. For example, /path/to/page?foo=bar&baz=qux&baz=boop would be represented as { "foo": { "values": ["bar"] }, "baz": { "values": ["qux", "boop"] }}.
hash_pathstringThe hash path of the URL. e.g. #/path/to/page would be represented as /path/to/page.
hash_queryobjectThe hash query of the URL, structured as an object where the key is the query parameter name and the value is a list of values for that parameter. For example, #/path/to/page?foo=bar&baz=qux&baz=boop would be represented as { "foo": { "values": ["bar"] }, "baz": { "values": ["qux", "boop"] }}.

FsApiError

PropertyTypeDescription
reasonenumThe reason for the error.
Possible values:
- missing_type: Property missing type suffix.
- invalid_name: Invalid property name.
- id_immutable: Immutable id violation.
- id_invalid: Invalid id.
- name_too_long: Property name too long.
- value_too_big: Property value too big.
- too_big_to_parse: JSON too big to parse.
- expected_primitive: Property value should have been a primitive type.
- invalid_type: Property has invalid type suffix.
- invalid_json: Invalid JSON.
- invalid_value: Property value doesn't match expected type.
- invalid_event_name: Invalid custom event name.
- page_prop_max_per_page: Max properties per page
- page_name_changed: pageName changed without a change in the PageView
- unset_name_mismatch: the page name given in unset did not match the current page
- unmatched_unset: an unset was received while not in a page
- elem_prop_max_per_event: Max element properties per event
fieldstringIf present, the name/key of the field that is invalid.
valuestringIf present, the json representation of the invalid value.

UserAgent

PropertyTypeDescription
raw_user_agentstringAn unprocessed user agent string. This value is used to derive the following fields. There may be cases where this string is not in a known format, in which case the derived fields will be either Unknown or null.
devicestringIf present, the type of device. Example values include: Tablet, Mobile, Desktop, Robot.
operating_systemstringIf present, the operating system of the device. Example values include: Windows, OS X, iOS, Android, and Linux.
browserstringThe browser used by the device or Unknown. Example values include: Chrome, Safari, Firefox, Microsoft Edge, and Custom Agent.
browser_versionstringIf present, the version of the browser. This field will only be present if the version is of the format major.minor.build.patch where each subversion is optional (e.g. 10A is a valid version). Otherwise, this field will be null.

Location

PropertyTypeDescription
ip_addressstringIf present, the IP address at the start of the associated capture instance. That is, this will be the same for all events with the same device_id, session_id, and view_id.
countrystringIf present, the country associated with the IP address.
regionstringIf present, the name of the region associated with the IP address.
citystringIf present, the name of the city associated with the IP address.
lat_longstringIf present, the latitude and longitude associated with the IP address. The format is "latitude,longitude".

Device

PropertyTypeDescription
manufacturerstringIf present, the manufacturer of the device. Generally available for Mobile Apps, but may also be provided by the server API. Examples include: Apple, Samsung, Google, and Microsoft.
modelstringIf present, the model of the device. Generally available for Mobile Apps, but may also be provided by the server API. Examples include: iPhone12,5, Pixel 5, and Surface Pro 7 and SM-G950F.
operating_systemstringIf present, the operating system of the device. Generally available for Mobile Apps, but may also be provided by the server API.
os_versionstringIf present, the version of the operating system. Generally available for Mobile Apps, but may also be provided by the server API.
screen_heightint32Indicates the screen height of the device in pixels.
screen_widthint32Indicates the screen width of the device in pixels.
viewport_heightint32Indicates the height of the viewport in pixels at the time of the event. Generally available for web sources, but may also be provided by the server API.
viewport_widthint32Indicates the width of the viewport in pixels at the time of the event. Generally available for web sources, but may also be provided by the server API.