# Inside a Session

Each conversation with an agent produces a detailed record of what happened and why. Open a session in **Observatory > Session > Chat Sessions** and trace the full path of a conversation: what the user said, what the agent did in response, and every workflow operation that happened in between.&#x20;

This is how you find out why your agent behaved the way it did, whether you are investigating a problem or reviewing a conversation that went well. Additionally, use the [Session Analysis](https://docs.helvia.ai/build/plugins#session-analysis) plugin to gain unique insights for each conversation through LLM-powered summaries, sentiment scores, and customizable evaluation criteria.

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2Fygzmq7LHTmkIJTZPxxJq%2Fobservatory%20session%20with%20details.png?alt=media&#x26;token=24c7e134-82b4-49b0-a60b-13c47ab4a5ec" alt=""><figcaption></figcaption></figure></div>

### What Gets Captured

Each session records everything that happened during a conversation, from the messages exchanged to the internal operations your workflow performed behind the scenes.

* **Transcript:** Every message between the user and the agent, whether text, voice, or a combination, or system events like LiveChat handoffs and CSAT submissions
* **Interaction log:** The full execution trace for each user message, step by step: LLM calls, HTTP requests, semantic searches, variable assignments, and tag operations
* **Variables:** A snapshot of all workflow variables at the end of the session, plus intermediate snapshots at each user message so you can track how values changed over time
* **Session metadata:** Context about when and where the conversation took place, who initiated it, and how it was categorized
* **Tickets:** References to support tickets created in external systems like Zendesk during the conversation
* **Analysis insights:** Summary, sentiment, resolution status, urgency, and classification tags generated by Session Analysis

This means you can answer questions like "what prompt did the LLM receive?", "which variable had the wrong value?", or "how did the user feel about the interaction?" all from a single session.

### Session Details

Click any session in the Chat Session dashboard to open the detail panel. The panel splits into two areas: the conversation transcript on the left and a sidebar with metadata, variables, and linked tickets on the right.

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FTJmTYlBteUCNdMvKrit9%2Fsession%20details.png?alt=media&#x26;token=763e2039-9395-44ba-9f20-bed3708f60b1" alt="" width="375"><figcaption></figcaption></figure></div>

#### The Conversation Transcript

The transcript displays the full conversation with user messages on the left and agent messages on the right. This is the opposite of a typical chat interface, where the current user's messages appear on the right. Here, the perspective is reversed because you are reviewing someone else's conversation.

{% columns %}
{% column %}

<p align="right">    </p>

Each message is labeled as Bot or User with a timestamp. User messages appear on the left, agent responses on the right.&#x20;

The full conversation is preserved here, so you can read through every\
message exchanged between the user and the agent.
{% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FeTIzv2QRj2R1VtzKn4cb%2Fsession%20transcript.png?alt=media&#x26;token=c32535c8-348b-43a7-b76b-248974af461f" alt="" width="184"><figcaption></figcaption></figure></div>

{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FkVgwCT1GWHdQD0vBCUyy%2FSession%20detail.png?alt=media&#x26;token=e2503188-5e50-4437-8379-1e0d147e4100" alt="" width="375"><figcaption></figcaption></figure></div>
{% endcolumn %}

{% column %}
&#x20; &#x20;

Select any user message in the transcript to reveal the interaction log behind it. Each step shows the type of operation, its\
duration, and whether it succeeded or failed. See the [interaction log](#the-interaction-log) for a full breakdown
{% endcolumn %}
{% endcolumns %}

{% columns %}
{% column %}

System events like Conversation starts,  CSAT submissions and user LiveChat handoffs appear inline as separators.
{% endcolumn %}

{% column %}

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FmDIzhhIRxgUZJcgFABak%2Fsession%20livechat%20hand%20off.png?alt=media&#x26;token=e1dca9f4-207a-4312-b0f1-a0ace3c54f14" alt="" width="359"><figcaption></figcaption></figure></div>
{% endcolumn %}
{% endcolumns %}

####

#### Sidebar Tabs

The sidebar provides up to five tabs with context about the session. Not all tabs are visible for every session. Tabs that have no data, like CSAT for conversations without a survey or Contact for automated test sessions, are hidden.

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2F1dVttQ6Nh75yC08GTeMl%2Fsession%20sidebar%20tabs.png?alt=media&#x26;token=caed4efc-6508-4f96-80ba-c2e554c39b82" alt="" width="203"><figcaption></figcaption></figure></div>

{% tabs %}
{% tab title="Session Details" %}
Shows the session ID, tags, total messages, and other metadata about the conversation. The session ID is useful when referencing a specific conversation in support requests or when using the API. Use the **Tags** field to manually add new tags to the session.&#x20;

This is also where you run and view Session Analysis. Click **Run** to generate insights, or review existing results if analysis has already been triggered automatically or from a previous run.
{% endtab %}

{% tab title="Variables" %}
A read-only snapshot of all workflow variables and their values at the end of the session. Use the search field to filter by variable name or value. This is useful for verifying whether the agent collected the right information during the conversation, like a user's intent, language, or any custom data your workflow captures.

To see how variables changed *during* the conversation, use the Variable Values tab inside the interaction log, which captures the state at each individual user message.
{% endtab %}

{% tab title="CSAT" %}
Displays the CSAT survey questions and the responses the user submitted. Use it to see how the user rated the conversation and review their feedback alongside the transcript.
{% endtab %}

{% tab title="Contact" %}
Displays the end-user's name and email when available. This tab is not available for sessions generated by automated tests, since those conversations use synthetic users without real contact information.
{% endtab %}

{% tab title="Tickets" %}
A read-only view of support tickets linked to this session from external ticketing platforms like Zendesk. If your agent creates or escalates tickets during a conversation, the references appear here so you can cross-reference the session with your support system.
{% endtab %}
{% endtabs %}

### The Interaction Log

When your agent receives a user message, the workflow executes a series of steps to produce a response. A step is a single atomic operation the workflow performed, like calling an LLM or assigning a variable. The interaction log captures this full sequence so you can see exactly what happened and in what order.

Open the interaction log by selecting a user message in the transcript, not the agent response. Each user message is the trigger that starts a workflow execution, so the trace is tied to the input, not the output. The first agent message in the conversation is an exception and you can click it directly since it runs before any user input.

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FkVgwCT1GWHdQD0vBCUyy%2FSession%20detail.png?alt=media&#x26;token=e2503188-5e50-4437-8379-1e0d147e4100" alt="" width="563"><figcaption></figcaption></figure></div>

<table data-column-title-hidden data-view="cards"><thead><tr><th>Title</th><th>Description</th></tr></thead><tbody><tr><td><h4><i class="fa-layer-group">:layer-group:</i></h4><h4>Type</h4></td><td>The kind of operation: LLM, HTTP, Semantic Search, Variable, or Tag. Filter by type to isolate specific steps</td></tr><tr><td><h4><i class="fa-clock">:clock:</i></h4><h4>Timestamp &#x26; Duration</h4></td><td>When the step executed and how long it took to complete. Use duration to identify slow operations in your workflow</td></tr><tr><td><h4><i class="fa-triangle-exclamation">:triangle-exclamation:</i></h4><h4>Errors</h4></td><td>Whether the step failed. Filter by errors to jump directly to problematic operations without scanning the full trace</td></tr><tr><td><h4><i class="fa-code">:code:</i></h4><h4>JSON Payload</h4></td><td>Expand any step to see the raw request and response data. For LLM steps this includes the model, prompt, hyperparameters and conversation history</td></tr><tr><td><h4><i class="fa-copy">:copy:</i></h4><h4>Copy</h4></td><td>Hover over any JSON block to reveal the copy button. Grab the payload for further inspection or testing outside the platform</td></tr><tr><td><h4><i class="fa-brackets-curly">:brackets-curly:</i></h4><h4>Variable Values</h4></td><td>Switch to the Variable Values tab to see the state of all workflow variables at this point in the conversation, not just their final values</td></tr></tbody></table>

This is what makes session debugging concrete instead of speculative. Instead of guessing why your agent said something, you can trace the exact sequence of operations and see the raw data behind each one.

<details>

<summary><strong>Example: LLM JSON Payload</strong></summary>

```
{
  "request": {
    "model": "gpt-5.4",
    "prompt": "<prompt>",
    "history": [
      {
        "role": "assistant",
        "content": "Happy Wednesday morning! Ready to crush today’s priorities and keep things light? Let’s make this a smooth, focused start."
      },
      {
        "role": "user",
        "content": "Let's get started. How can I be more productive with my calendar?"
      }
    ],
    "provider": "OPEN_AI_LLM",
    "maxTokens": 250,
    "timestamp": "<timestamp>",
    "temperature": 0,
    "includeHistory": true,
    "maxHistoryTurns": 10
  },
  "response": {
    "reply": "",
    "timestamp": "<timestamp>",
    "extractedParams": {
      "message": "Use your calendar as a **plan, not a diary**:\n\n- **Time-block** your top 1–3 priorities daily\n- Add **buffers** (10–15 min) between meetings\n- Batch similar work (emails/admin) into set slots\n- Schedule **deep work** like a meeting (no notifications)\n- Do a **5-min daily plan** + **15-min weekly review**\n\nWhat calendar do you use (Google/Outlook/etc.) and what’s your biggest issue—overbooked, distractions, or forgetting tasks?"
    }
  }
}
```

</details>

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FWi11x6ycrJoNZX9jqMQ2%2Fsession%20interaction%20log%20variables.png?alt=media&#x26;token=92c5503a-572f-4f13-9302-9f6f9afd8037" alt="" width="233"><figcaption></figcaption></figure></div>

The interaction log panel also includes a **Variable Values** tab. This shows a snapshot of all workflow variables at the moment of that specific user message. Unlike the Variables tab in the sidebar (which shows final values), this captures intermediate state. Use it to verify that variables were assigned in the correct order with the expected values.

### Session Analysis

Session Analysis is a powerful tool that turns individual conversations into structured, trackable data. It uses an LLM to generate insights from a completed session: a summary, sentiment score, resolution status, urgency level, and classification tags.

Open a session and navigate to the **Session Details** tab. Select **Run** to trigger it. After the first execution, the button changes to **Rerun**, letting you regenerate insights after updating your plugin configuration. To run analysis automatically on new sessions, enable and configure the [Session Analysis plugin](https://docs.helvia.ai/build/plugins#session-analysis).

<div data-with-frame="true"><figure><img src="https://604830754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FBM1xs3i59ajeTgi4uVfN%2Fuploads%2FQKhBhYB2nXXht8QzxPna%2F%CE%B5%CE%B9%CE%BA%CF%8C%CE%BD%CE%B1.png?alt=media&#x26;token=14d22ed9-e9ed-43ed-82d2-5f5725eb7808" alt="" width="340"><figcaption></figcaption></figure></div>

<details>

<summary><strong>Default Insights</strong></summary>

* **Summary:** A concise description of the conversation
* **Classification Tags:** Category labels that match your defined tags, automatically added to the session
* **Sentiment:** User satisfaction (Positive, Neutral, or Negative)
* **Resolution:** Whether the issue was addressed (Resolved, Unclear, or Unresolved)
* **Urgency:** Priority level (Low, Normal, or Urgent)

</details>

Toggle **Expert Mode** in the plugin settings to customize which insights are generated or chain multiple LLM executions for advanced analysis workflows.

{% hint style="info" %}
Session Analysis is powered by a plugin that needs to be activated and configured first. See the [Plugins page](https://docs.helvia.ai/build/plugins#session-analysis) for setup instructions and advanced configuration options.
{% endhint %}

### Best Practices

* **Start from the problematic message:** Open the interaction log on the specific user message that triggered unexpected behavior. The execution trace tells you more than the response text alone
* **Check variable state at each step:** Use the Variable Values tab to verify that variables had the expected values at the point where things went wrong, not just their final state
* **Filter by errors first:** When a session has dozens of steps, filter by errors to jump directly to the failure without scanning the full trace
* **Use duration to find bottlenecks:** Sort steps by duration to identify slow LLM calls, HTTP timeouts, or inefficient operations in your workflow
* **Copy payloads for testing:** Grab the raw JSON from an LLM step and test it outside the platform to reproduce and isolate issues
* **Use Session Analysis for trends:** Run analysis across sessions to track sentiment and resolution patterns over time. Use Expert Mode to define custom insight categories that match your business needs

{% hint style="success" %}
You can now open any session, read the full transcript, and trace every step the workflow executed to produce each response.
{% endhint %}


---

# 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.helvia.ai/observatory/inside-a-session.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.
