# Logging Attributes

When a user experiences a simulation, their data is recorded in our data logging pipeline. This document describes the structure of the data.&#x20;

## Definitions

The following terminology will be important for describing the structure of the logged data.&#x20;

* **Events** represent some logged occurrence at any point in time during a simulation. These events can be both user generated (e.g. "user grabs an object"), or system generated (e.g. "system loads a simulation"). Events are timestamped to the millisecond.&#x20;
* **User** is the one who experiences the simulation. Depending on how they access the simulation, their userID may be registered differently.
* **Session** begins when the user access the application and ends when the user leaves the application. A unique sessionID is generated per session.
* **Run** begins when the user loads a simulation and ends when the user leaves the simulation.&#x20;
* **Attributes** are key-values associated with specific events. For example, a "grab" event will have an attribute "targetObject" to indicate that a user "grabbed the targetObject'.

## List of Events and Associated Attributes

Below describe the list of events and the associated attributes that can appear in your Insights dashboard.&#x20;

<table data-full-width="false"><thead><tr><th width="226">Event Name</th><th width="237">Description</th><th>Important Attributes</th></tr></thead><tbody><tr><td>simulation_load</td><td>Simulation has completed loading</td><td><br></td></tr><tr><td>simulation_started</td><td>User has began the simulation </td><td><br></td></tr><tr><td>simulation_completed</td><td>User has completed the simulation</td><td><strong>timeToComplete</strong> (seconds)</td></tr><tr><td>trigger_event_Collide</td><td>Trigger has been activated involving two objects colliding with each other</td><td><p><strong>collided1</strong>: name of object that was collided</p><p><strong>collided2</strong>: name of object that was collided with</p></td></tr><tr><td>trigger_event_Grab</td><td>Trigger has been activated by grabbing an object</td><td><strong>grabName</strong>: name of object that was grabbed</td></tr><tr><td>trigger_event_Proximity</td><td>Trigger has been activated by moving onto a target position</td><td><p><strong>locationName</strong>: name of the target location</p><p><strong>radius</strong>: distance away from the center of target</p></td></tr><tr><td>trigger_event_Snap</td><td>Trigger has been activated by snapping an object into another</td><td><p><strong>snapHitboxName</strong>: name of the object that will hold the snapped object</p><p><strong>snapObject</strong>: name of the snapped object</p></td></tr><tr><td>trigger_event_SpeechReceived</td><td>Trigger has been activated by user speaking</td><td><br></td></tr><tr><td>trigger_event_Ungrab</td><td>Trigger has been activated by releasing a grabbed object</td><td>ungrabName: name of object that was released</td></tr><tr><td>trigger_event_Unsnap</td><td>Trigger has been activated by removing an object from a snapped position</td><td><p><strong>snapHitboxName</strong>: name of the object that held the snapped object</p><p><strong>snapObject</strong>: name of the removed snapped object</p></td></tr><tr><td>trigger_event_Use</td><td>Trigger has been activated by using an object</td><td><strong>useHitboxName</strong>: name of the object that was used</td></tr><tr><td>trigger_event_UseRelease</td><td>Trigger has been activated when no longer using the object</td><td><strong>useReleaseTargetName</strong>: name of the object that was used</td></tr><tr><td>state_machine_always_running_trigger_transition</td><td>Trigger (usually a user activated interaction/event) has been activated in the always running (global) state machine.</td><td><strong>triggerType</strong>: the trigger that caused the change in state machine</td></tr><tr><td>state_machine_always_running_condition_transition</td><td>Condition has been met causing an  activation in the always running (global) state machine.</td><td><p>The condition has been met in the format: </p><p><strong>[AttributeName] [Operator] [AttributeGoalValue]</strong></p><p></p><p>Example:</p><p>[ Count ] [ >= ] [ 10 ]</p></td></tr><tr><td>state_machine_transition_event</td><td>Transition between two states in the state machine</td><td><p><strong>fromState</strong>: name of state transitioned from</p><p><strong>toState</strong>: name of state transitioned to</p></td></tr><tr><td>state_machine_state_enter</td><td>Entered a state in the state machine</td><td><strong>state</strong>: name of state entered</td></tr><tr><td>state_machine_state_exit</td><td>Exited a state in the state machine</td><td><strong>state</strong>: name of state exited</td></tr><tr><td>general_user_utterance</td><td>User has produced an utterance by speaking or typing</td><td><strong>utterance</strong>: user’s transcript</td></tr><tr><td>gpt_chit_chat</td><td>User has activated GPT chit chat</td><td><p><strong>character.name</strong>: name of the character</p><p><strong>character.prompt</strong>: prompt supplied to GPT</p><p><strong>history.content</strong>: the conversation history</p><p><strong>response</strong>: gpt response</p><p>utterance: user’s transcript</p></td></tr><tr><td>quiz_multiple_question</td><td>Quiz question has been submitted</td><td><p><strong>question</strong>: the question that was asked</p><p><strong>questionChoices</strong>: list of choices</p><p><strong>selectedAnswers</strong>: answer selected by the user</p></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.siminsights.com/insights-and-analytics/logging-attributes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
