Skip to main content
Skip table of contents

Story Beat

Features

Story Beat is a built-in mechanism that automatically analyses what a user does, at the functional level (not click level in this case), and helps remove the noise of a journey.

Story Beat helps you understand the process a user goes through while using an application.

Various options are available and depend on the monitored application e.g. Shopify Pixel may be used to understand shopping experience specific to cart checkout;

Story Beat on a Flow

Germain UX - Story beat.png

Story Beat view - Germain UX

Attributes

Here are the attributes of a Story Beat.

  • timestamp: The start time of the time interval covered by this datapoint

  • waitDuration: Seconds spent blocked by page activity e.g. network, scripting, rendering

  • orientDuration: Seconds spent by the user preparing for the next action. Depending on the actionCategory, this typically includes time spent idle, scrolling, or moving mouse.

  • actionDuration: Seconds spent idling, browsing, triggering a link/button, or editing inputs, based on the actionCategory

  • actionCategory: 'idle' | 'browse' | 'trigger' | 'edit';

    • 'edit' indicates that the user's events during this interval included input controls such as text boxes, or check boxes.

    • 'trigger' indicates that the user's events during this interval include clicking on a link or a button.

    • 'browse' indicates that the user's events during this interval consisted mainly of mouse motions, or scrolling.

    • 'idle' indicates no user interaction during this interval

  • labelHint: a bundle of contextual information that helps the backend code fill in higher-level labels for this and neighboring beats. Two hints included on all beats are detailed below.

    • uiHierarchy: string[]; // Where is the application navigated to / what view is interactive, at the time of the start of the action portion of cycle.

    • actionTargets: string[]; // What on the page is being interacted with? Hierarchy of labels representing the containment path in order of general to specific e.g. [appletName, formName, fieldName], [tabName, tableName, buttonLabel]. Each action target will have the tag name of the corresponding HTML-element appended to it in parenthesis.

  • label1: The lowest-level (most granular) description of what the user was doing during this time interval e.g. "picking a shoe size"

  • label2: ...

  • label3: A mid-level description of what the user was doing during this time interval e.g. "Comparing details across two products"

  • label4: ...

  • label5: The highest-level description of what the user was doing during this time interval e.g. "Rebuying a larger size of the same shoe just returned"

Pipeline

  • labelHints get populated on the collection side by app-specific heuristics that we write (relatively straightforward to develop)

  • label1-5 get populated on the backend after story beats from all browser tabs are flattened into one user-level stream. We can only populate as many labels as we can come up with heuristics for. Depending on the concreteness of the domain and the richness of the clues we can gather, we may only be able to label 1 or 2 levels before it gets too fuzzy to determine what the user was thinking. The hope is that once you can see what the user ended up doing in the future, hindsight is much more clear and so the pipeline is designed around backfilling the labels.

  • portlets then group story beats into a hierarchy where adjacent datapoints are combined if they have the same label value, repeated at each layer label2,label3,etc.

Note: It is important to note that these attributes and pipeline get populated differently depending on the technology that is monitored (e.g. Microsoft, Shopify, Siebel, WordPress, etc).

Story Beat on a Focused Flow

Story Beat on a Focused Flow portlet:

image-20241004-140730.png

Story Beat on Focused Flow - Germain UX

Service: Analytics

Feature Availability: 8.6.0 or later

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.