> For the complete documentation index, see [llms.txt](https://docs.siminsights.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.siminsights.com/insights-and-analytics/what-we-capture/attribute-reference.md).

# Attribute reference

Fields carried by logged events. The first section applies to almost every simulation event. Later sections cover fields specific to one event, which are listed against that event in the [Event Reference](/insights-and-analytics/what-we-capture/event-reference.md).

## Common to every event

| Field              | Meaning                                     | Example              |
| ------------------ | ------------------------------------------- | -------------------- |
| `event`            | Name of the event                           | `trigger_event_Grab` |
| `timestamp_client` | When it happened on the device, Unix ms UTC | `1785530105599`      |
| `timestamp_server` | When it reached our servers, Unix ms UTC    | `1785530105682`      |
| `appName`          | Platform that produced it                   | `hypermock-vr`       |
| `applicationType`  | Build or editor                             | `Build`              |
| `version`          | Application version                         | `1.49.68.3`          |
| `server`           | Environment                                 | `Production`         |
| `logType`          | Event or action                             | `event`              |
| `recordType`       | Index the record belongs to                 | `hypermock-event`    |

## Identity

| Field                        | Meaning                                                  | Example                      |
| ---------------------------- | -------------------------------------------------------- | ---------------------------- |
| `hs_user_id`                 | HyperSkill account, present when signed in               | `6346`                       |
| `user_auth0`                 | Sign in identity                                         | `google-oauth2\|11241194...` |
| `hs_anon_id`                 | Generated identifier when there is no account            | `5db50dc9-13bd-490a-...`     |
| `userId`                     | Display name. Not a stable identifier, do not join on it | `Jonathan Mai`               |
| `student_id`, `student_name` | Supplied by an LMS on SCORM launches                     |                              |

## Joining records together

| Field                            | Meaning                                                                     |
| -------------------------------- | --------------------------------------------------------------------------- |
| `runId`                          | One play of one simulation. The main key for run level analysis and replay. |
| `sessionId`                      | One visit to the application. Can contain several runs.                     |
| `simulationId`, `simulationName` | Which simulation was played                                                 |
| `publicId`                       | Public identifier of the simulation                                         |
| `lessonId`, `activityId`         | Lesson and activity the run belongs to                                      |
| `lessonAttemptId`                | Links a run to a learner's attempt at a lesson                              |
| `lessonSessionId`                | One sitting within a lesson attempt                                         |
| `launchSessionId`                | Launch record, used for group sessions and LMS launches                     |
| `groupSessionId`                 | Group session the run was part of                                           |
| `multiplayerSessionId`           | Multiplayer room the run was part of                                        |
| `org_id`                         | Organisation the learner belongs to                                         |

## Device

Device details are nested under `deviceInfo`.

| Field              | Meaning                              | Example                                                  |
| ------------------ | ------------------------------------ | -------------------------------------------------------- |
| `deviceInfo.Type`  | Broad category                       | `Handheld`, `Desktop`, `Web (Hyperskill)`, `Web (Spark)` |
| `deviceInfo.Name`  | Specific device                      | `Quest 3`, `Quest 3S`, `Pico Neo 3`                      |
| `deviceInfo.Model` | Manufacturer model string or browser | `Oculus Quest`, `Chrome 150.0.0.0`                       |
| `deviceInfo.OS`    | Operating system                     | `Android OS 14 / API-34`, `Windows 11`, `macOS`          |
| `deviceInfo.Id`    | Device identifier                    | `c3563b04486eca34...`                                    |

## Performance

Present on many simulation events rather than as a separate event.

| Field                       | Meaning                              |
| --------------------------- | ------------------------------------ |
| `fps_current`               | Framerate at the moment of the event |
| `fps_average`               | Average framerate so far in the run  |
| `fps_highest`, `fps_lowest` | Range so far in the run              |

## How a simulation was opened

| Field              | Meaning                                |
| ------------------ | -------------------------------------- |
| `loadedFrom`       | Where the simulation was launched from |
| `loadedBy`         | Who launched it                        |
| `isSharedSim`      | Whether it was a shared simulation     |
| `publiclyLoaded`   | Whether it was opened publicly         |
| `idUsedForLoading` | Identifier used to load it             |

## Object interaction

| Field                                                                           | Meaning                                     | Appears on                                   |
| ------------------------------------------------------------------------------- | ------------------------------------------- | -------------------------------------------- |
| `grabName`                                                                      | Object grabbed                              | `trigger_event_Grab`                         |
| `ungrabName`                                                                    | Object released                             | `trigger_event_Ungrab`                       |
| `grabEntityType`                                                                | Type of object grabbed                      | `trigger_event_Grab`                         |
| `snapObject`                                                                    | Object snapped or unsnapped                 | `trigger_event_Snap`, `trigger_event_Unsnap` |
| `snapHitboxName`                                                                | Snap point involved                         | `trigger_event_Snap`, `trigger_event_Unsnap` |
| `useHitboxName`                                                                 | Object used                                 | `trigger_event_Use`                          |
| `useReleaseTargetName`                                                          | Object no longer used                       | `trigger_event_UseRelease`                   |
| `collided1`, `collided2`                                                        | The two colliding objects                   | `trigger_event_Collide`                      |
| `locationName`                                                                  | Target location reached                     | `trigger_event_Proximity`                    |
| `radius`                                                                        | Distance from the centre of the target      | `trigger_event_Proximity`                    |
| `target`, `controller`                                                          | Object and controller, legacy grab events   | `grab`, `ungrab`                             |
| `triggerName`, `triggerType`                                                    | The trigger that fired                      | all `trigger_event_*`                        |
| `hapticFeedbackEnabled`, `hapticAmplitude`, `hapticDuration`, `hapticFrequency` | Haptic response, where hardware supports it | interaction events                           |

## State machine

| Field                             | Meaning                                                  |
| --------------------------------- | -------------------------------------------------------- |
| `smName`, `smId`                  | Which state machine                                      |
| `state`, `stateId`                | State entered or exited                                  |
| `fromState`, `fromStateId`        | State transitioned out of                                |
| `toState`, `toStateId`            | State transitioned into                                  |
| `transitionName`, `transitionId`  | The transition itself                                    |
| `triggeredConditions`             | Condition satisfied, as `[Attribute] [Operator] [Value]` |
| `containerName`, `containerIndex` | Condition group in the global state machine              |
| `attributes`                      | Snapshot of every simulation variable at that moment     |

## Speech and dialogue

| Field                                                 | Meaning                                                  |
| ----------------------------------------------------- | -------------------------------------------------------- |
| `utterance`                                           | What the learner said or typed                           |
| `utteranceId`                                         | Identifier linking an utterance to the reply it produced |
| `utteranceConfidence`                                 | Speech recognition confidence, 0 to 1                    |
| `wasUtteranceText`                                    | Whether it was typed rather than spoken                  |
| `nluEngine`                                           | Which language understanding engine handled it           |
| `previousHMState`, `currentHMState`, `nextHMState`    | Dialogue graph position                                  |
| `dialogVersion`, `scriptVersion`                      | Version of the dialogue content                          |
| `response`                                            | The AI character's reply                                 |
| `roundTripTimeInMs`                                   | How long that reply took, measured on the device         |
| `character.name`, `character.prompt`                  | The AI character and its configuration                   |
| `history`                                             | Conversation so far                                      |
| `simKBContext`                                        | Knowledge base context supplied to the model             |
| `languageModel`                                       | Model used                                               |
| `agentName`, `agentType`, `agentGoal`, `agentSuccess` | Scoring agent and its outcome                            |
| `variables`, `variableValues`                         | Variables the agent evaluated                            |
| `wpm`                                                 | Speaking rate for one utterance                          |
| `totalWordCount`                                      | Running word count for the run                           |

## Assessment

| Field                        | Meaning                        |
| ---------------------------- | ------------------------------ |
| `question`                   | Question asked                 |
| `questionChoices`, `choices` | Choices offered                |
| `selectedAnswers`, `answers` | What the learner chose         |
| `isCorrect`                  | Whether the answer was correct |

## Skills

| Field                           | Meaning                             |
| ------------------------------- | ----------------------------------- |
| `userAttributeName`             | Name of the skill or observed value |
| `userAttributeValue_n`          | New value                           |
| `userAttributeValue_previous_n` | Value before this update            |

## Feedback

| Field                        | Meaning                                               |
| ---------------------------- | ----------------------------------------------------- |
| `logMessages`                | Feedback text shown to the learner, separated by `\|` |
| `timers`                     | Named timers and their durations                      |
| `duration`                   | Total time taken                                      |
| `finishedTimes`              | Number of completions                                 |
| `startTime`                  | When the feedback period began                        |
| `comment`                    | Learner's written comment                             |
| `decision`                   | Decision point in the dialogue                        |
| `timeSinceSimStartedSeconds` | When a feedback item was added, relative to the start |

## Simulation lifecycle

| Field                              | Meaning                                     |
| ---------------------------------- | ------------------------------------------- |
| `timeToComplete`                   | Seconds taken to finish                     |
| `simLoadTime`                      | Seconds taken to load                       |
| `simLoaded`, `simCompleted`        | Whether the simulation loaded and completed |
| `errorMessage`                     | Error raised during start                   |
| `sceneLoaded`                      | Scene that was loaded                       |
| `end_position`                     | Destination of a teleport                   |
| `keycode`                          | Key pressed                                 |
| `buttonName`                       | Menu button clicked                         |
| `focusedObject`, `unfocusedObject` | Object looked at or away from               |
| `url`                              | Video played                                |
| `delta_time`                       | Amount a video was scrubbed by              |

## Sensor stream

Recorded separately from events, at a high sample rate, and used for session replay.

| Field              | Meaning                                         |
| ------------------ | ----------------------------------------------- |
| `entity`           | What was sampled: `headset`, `ctrl_l`, `ctrl_r` |
| `px`, `py`, `pz`   | Position                                        |
| `rx`, `ry`, `rz`   | Rotation                                        |
| `runId`            | Run the sample belongs to                       |
| `timestamp_client` | When the sample was taken                       |

## Lesson and activity events

Recorded by the lesson player, with a different envelope from simulation events.

| Field                                             | Meaning                                     |
| ------------------------------------------------- | ------------------------------------------- |
| `lessonId`, `activityId`                          | Lesson and activity                         |
| `sessionId`                                       | Lesson viewing session                      |
| `hs_user_id`, `user_auth0`, `user_name`           | Learner identity                            |
| `mode`                                            | How the activity was opened                 |
| `slideType`                                       | Type of activity content, for example `mcq` |
| `questionText`, `studentAnswer`, `questionNumber` | Assessment content and response             |
| `riasecDimension`                                 | Career Pathway interest dimension           |
