> ## Documentation Index
> Fetch the complete documentation index at: https://docs.germainux.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Story Beat

> Instead of making teams interpret every click, scroll, or field change, GermainUX Story Beat organizes those signals into meaningful intervals of activity.

Service
`Analytics`

Availability
2014.1 or later

> **[Story Beat on a Flow](#story-beat-on-a-flow)**
>
> Sequence of user activities

> **[Wait, Orient and Act](#wait-orient-and-act)**
>
> Time split across three phases

> **[Hierarchical Labels](#hierarchical-labels)**
>
> Five levels of descriptions

> **[Analyze Friction with Story Beat](#analyze-friction-with-story-beat)**
>
> Spot where users struggle

## Overview

**Story Beat** automatically converts low-level user activity into functional descriptions of what a user was doing in an application.

Instead of requiring teams to interpret every click, mouse movement, scroll or field change individually, Story Beat organizes those signals into meaningful intervals of activity. This reduces noise and makes user journeys, business workflows and periods of lost productivity easier to understand.

Depending on the monitored application, Story Beat can use application-specific context. For example, Shopify Pixel data can provide additional insight into product browsing, cart activity and checkout behavior.

## What Story Beat Helps You Understand

Story Beat can help answer questions such as:

* What was the user trying to accomplish?
* Which functional steps did the user perform?
* How much time was spent waiting, orienting and acting?
* Where did the user become idle, delayed or blocked?
* Which steps were repeated or abandoned?
* Where did technology performance interrupt the workflow?
* How did activity across multiple pages or browser tabs contribute to the journey?

## From Click-Level Activity to Functional Insight

Story Beat analyzes activity at several levels of abstraction.

| Level | Example |
| - | - |
| Raw interaction | Clicked a size selector |
| Functional action | Selecting a shoe size |
| Task | Reviewing product options |
| Journey stage | Comparing products |
| User intent | Rebuying a larger size of a previously returned shoe |

Higher-level labels depend on the context available from the application and the clarity of the user's behavior. Not every Story Beat will contain all levels.

## Story Beat on a Flow

In a Flow visualization, Story Beats show the sequence of functional activities performed by users or sessions.

This view can help teams:

* Identify the most common paths through an application
* See where users branch into alternative activities
* Locate repeated, slow or abandoned steps
* Compare successful and unsuccessful journeys
* Understand which activities occur before a conversion, error or drop-off

More details on [Flow Visualization and Journey](https://docs.germainux.com/main/customer-journey.md).

## Story Beat on a Focused Flow

A limits the analysis to a selected journey, workflow, population or outcome. Story Beats then describe the functional activities occurring within that scope.

For example, a Focused Flow can analyze only:

* Users who abandoned checkout
* Employees who failed to complete a CRM workflow
* Sessions containing a specific error
* Customers who successfully converted
* Users who followed an unexpected path

This reduces unrelated activity and helps teams understand why the selected journey succeeded or failed.

## Story Beat Categories

Story Beat assigns user-session time to four activity categories:

| Category | Meaning | Examples |
| - | - | - |
| **Browse** | The user explores or reviews information without triggering a primary action. | Reading, scrolling or moving the pointer while reviewing content |
| **Trigger** | The user initiates an action. | Selecting a link, button or other actionable element |
| **Edit** | The user enters or changes information. | Typing in a field, selecting an option or changing a checkbox |
| **Idle** | No user interaction is detected during the interval. | Pausing, leaving the application unattended or waiting without interacting |

Together, these categories account for the analyzed session time.

## Wait, Orient and Act

Each Story Beat can divide its duration into three phases:

| Phase | Description | Example |
| - | - | - |
| **Wait** | Time during which network activity, scripting or rendering prevents or delays the next user action. | Waiting for a page, panel or result to load |
| **Orient** | Time during which the user prepares for the next action. | Finding the next control, reviewing the screen, scrolling or moving the pointer toward a target |
| **Act** | Time assigned to the primary activity represented by the Story Beat category. | Browsing content, triggering an action, editing a value or remaining idle |

Conceptually, each beat is represented as:

| Beat category | Wait | Orient | Act |
| - | - | - | - |
| Browse | Technology delay | Preparation | Browsing activity |
| Trigger | Technology delay | Preparation | Triggering activity |
| Edit | Technology delay | Preparation | Editing activity |
| Idle | Technology delay, when present | Transition or preparation, when detected | Idle interval |

This breakdown helps distinguish time lost to technology from time spent understanding the interface or completing the task.

## Story Beat Attributes

| Attribute | Type | Description |
| - | - | - |
| `timestamp` | Date and time | Start of the interval represented by the Story Beat |
| `waitDuration` | Seconds | Time blocked or delayed by page activity such as network requests, JavaScript execution or rendering |
| `orientDuration` | Seconds | Time spent preparing for the next action, which can include reviewing, scrolling or moving the pointer |
| `actionDuration` | Seconds | Time assigned to the Story Beat's primary activity category |
| `actionCategory` | String | Activity category: `browse`, `trigger`, `edit` or `idle` |
| `labelHint` | Object | Context collected to help the backend assign functional labels |
| `label1`–`label5` | String | Hierarchical descriptions of the user's activity, from most granular to highest-level intent |

Attribute names and availability may vary by monitored technology and data model.

## Action Categories

| Value | Description |
| - | - |
| `edit` | The user interacts with an input control, such as a text box, list, checkbox or other editable field. |
| `trigger` | The user selects a link, button or other control that initiates an action. |
| `browse` | The user primarily reviews content, scrolls or moves the pointer. |
| `idle` | No user interaction is detected during the interval. |

## Label Hints

`labelHint` contains application and interaction context used to create meaningful Story Beat labels.

All Story Beats can include:

| Attribute | Type | Description |
| - | - | - |
| `uiHierarchy` | `String[]` | Current application navigation or view hierarchy at the beginning of the interval |
| `actionTargets` | `String[]` | Hierarchical description of the elements involved in the action, ordered from general to specific |

An action target can contain values such as:

```text theme={null}
[appletName, formName, fieldName]
[tabName, tableName, buttonLabel]
```

The corresponding HTML tag can be appended to each target when available.

## Hierarchical Labels

Story Beat can assign up to five levels of functional description:

| Label | Purpose | Example |
| - | - | - |
| `label1` | Most granular description of the immediate activity | Picking a shoe size |
| `label2` | Groups related low-level actions into a small task | Reviewing size options |
| `label3` | Describes a broader functional activity | Comparing details across two products |
| `label4` | Groups activities into a journey stage | Evaluating replacement products |
| `label5` | Highest-level description of likely intent | Rebuying a larger size of the same shoe just returned |

The number and meaning of populated labels depend on the monitored application and available context.

## Processing Pipeline

Story Beat is generated through the following process:

| Step | Description |
| - | - |
| **Capture activity:** | GermainUX records the relevant user, application and technology signals. |
| **Create intervals:** | Adjacent activity is divided into Story Beat intervals. |
| **Assign categories:** | Each interval is classified as Browse, Trigger, Edit or Idle. |
| **Calculate phases:** | Time is divided into Wait, Orient and Act where the required signals are available. |
| **Generate label hints:** | Application-specific logic populates `uiHierarchy`, `actionTargets` and other contextual clues. |
| **Consolidate activity:** | Story Beats from multiple browser tabs are combined into a user-level stream. |
| **Assign hierarchical labels:** | Backend logic populates `label1` through `label5` according to the available heuristics and context. |
| **Backfill intent:** | Higher-level labels can be updated when the user's intent becomes clearer later in the journey. |
| **Group for visualization:** | Portlets group adjacent Story Beats when they share the same labels at the selected hierarchy level. |

## Application-Specific Behavior

The captured attributes, labeling heuristics and processing pipeline can vary by monitored technology.

Examples include:

* Microsoft applications
* Oracle Siebel CRM
* Salesforce (CRM, Experience Cloud, etc)
* SAP (Commerce Cloud, etc)
* Shopify
* WordPress
* Other supported or custom applications

Application-specific context generally produces more meaningful labels than generic browser activity alone.

## Analyze Friction with Story Beat

Story Beat can be combined with other GermainUX analytics to identify:

* Excessive Wait time caused by slow technology
* Excessive Orient time caused by confusing navigation or design
* Repeated Trigger or Edit actions
* Unexpected Idle time during a workflow
* Journey branches associated with drop-off
* Differences between successful and unsuccessful users
* Time lost across a business process

Teams can drill from aggregate Story Beat patterns into individual sessions and use Session Replay or technical traces to understand what happened.

## Get Help

> **[Contact GermainUX Support](https://docs.germainux.com/main/support.md)**
>
> The Germain Team can help you set this up.

> **Can't find what you need?**
>
> Search all GermainUX docs with **Ctrl + K**, or use the feedback buttons at the bottom of this page to tell us what is missing.

The content of this document is proprietary to GERMAIN SOFTWARE.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.