Skip to main content
Skip table of contents

Behavior Analysis


Germain UX offers different ways to analyze user behavior:

  • Functional-levels (Business Process or Story Beat).

  • Click-level.

  • User-level (Millisecond-precision session video recording/replay).

Business Process Insights

Business Process is a built-in mechanism that analyzes the critical Business Process(es) that you ask Germain to monitor. this is complementary to the Story Beat, in the sense that this is to help focus on the critical process(s) of your choice only. Here are more details on Germain UX’s Business Process Monitoring and Mining.

Click Flow

Click-level view helps understand what a user does from a click point-of-view.

Germain UX - Behavior.jpg

User behavior real-time monitoring and insights - Germain UX

Functional Flow a.k.a Story Beat

Story Beat is a built-in mechanism that automatically analyses what a user does, at the functional level (not click level in this case). Story Beat helps you understand the process a user goes through while using an application. Here there is no option for you to dictate what functional process is being monitored, as every functions are being monitored, whichever they are.

Story Beat view:

Germain UX - Story beat.png

Story Beat view - Germain UX


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"


  • 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.


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).

Session Recording and Replay

Germain UX records “videos” of each user/visitor browsing an application, video which you can then replay.

These videos are:

  • Millisecond-precise of what a user “sees” or “does” on an application.

  • 100% searchable (business and metadata)

  • Friction Impact at scale i.e. so you can search at once across all the recorded sessions, and assess the number of user/session affected by a specific friction.

Example of a Session Replay for a Shopify eCommerce:

Germain UX - User Replay - allbirds.png

Session Replay for a Shopify eCommerce - Germain UX

Another example of a Session Replay:

Germain UX - session replay.png

Session Replay for an eCommerce - Germain UX

More details Germain’s Real User Session Monitoring and Session Replay, in real-time.

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.