# Read the whole conversation, not twenty separate runs.

Set a stable session id and every turn's trace rolls up into one session automatically. The conversation becomes a single row with its agents, turns, duration, cost and eval scores, and you can replay it end to end.

## The problem: Chatbot bugs live between the turns

Turn six goes wrong because of what happened in turn two, but your tooling shows each request in isolation. Reconstructing a conversation by grepping timestamps is how an afternoon disappears.

## How RunAgain does it

1. **Sessions from one attribute.** Send session.id (or gen_ai.conversation.id, or the common vendor alias) on your spans and RunAgain groups the turns automatically, ordered by start time. No session id means traces simply stand alone; sessions are purely additive.
2. **The conversation as one row.** The sessions list mirrors the trace list: id, agents involved, turn count, duration and the session's eval scores, with saved views for errors and slow sessions and search over id, agent and user.
3. **Replay end to end.** Open a session and walk the conversation turn by turn, each backed by its full trace: prompts, tool calls, tokens and cost at every step.
4. **Conversation-level economics.** Cost and evals aggregate across turns, so you can answer what a resolved support thread actually costs and which conversations degrade as they get long.

## FAQ

**Q: How do I group traces into a conversation?**

A: Set a stable session id as a span attribute on every turn. RunAgain accepts session.id, gen_ai.conversation.id and common vendor aliases, first non-empty wins, and rolls the turns up automatically.

**Q: Can I see which user a conversation belongs to?**

A: Yes. user.id is promoted to a typed field alongside session, agent, environment and version, and session search matches over user as well.

**Q: Do evals work at the conversation level?**

A: Eval scores attach to runs and aggregate on the session row, so a conversation shows its overall score and the per-dimension ticks the same way a single trace does.

## Built on these solutions

- [Agent observability](https://runagain.ai/solutions/agent-observability.md)
- [Trace enrichment](https://runagain.ai/solutions/enrich-agent-traces.md)
- [Debug AI agents](https://runagain.ai/solutions/debug-ai-agents.md)

Book a demo: https://cal.com/tamas-szuromi/30min · Get in touch: tamas@runagain.ai

---

Markdown mirror of https://runagain.ai/use-cases/multi-turn-conversation-tracing for agents and LLMs. Append .md to any runagain.ai page URL for its markdown twin. Overview: https://runagain.ai/llms.txt · For agents: https://runagain.ai/for-agents.md
