# Tracking Plays

Source: https://docs.skaz.io/guide/tracking-plays

> Track how a Skaz story is played: completions, endings reached, where players stop, live sessions and per-learner reports.

Every story has its own **dashboard** — a page separate from the editor that
shows the story at a glance and, once it's published, who's playing it. Open
it by clicking a story from the Studio home. From there, **Open in editor**
takes you into the canvas to make changes.

## Overview

At the top you'll find your story's cover, title, description, and its
**Live** / **Draft** status, plus a button to jump into the editor.

## Structure

The **Structure** card counts the pieces of your story:

- **Nodes** — the total number of [blocks](/guide/blocks).
- **Choices** — how many [choices](/guide/choices) connect them.
- **Variables** — how many [variables](/guide/variables) you've defined.

It's a quick sanity check — for example, a story with lots of nodes but very
few choices probably isn't branching much.

## Statistics

The **Statistics** card answers the question the Sessions list can't: is the
story working?

- **Started / Finished / Completed** — how many people began, how many reached
  an ending, and the percentage between them.
- **Playing now** — sessions open at this moment.
- **Length** — how many blocks a full playthrough takes, and roughly how long
  in minutes.
- **Endings reached** — how the finishers split across your
  [endings](/guide/blocks#endings). Endings you haven't named show up as
  *Unnamed ending*.
- **Where players stop** — the last block of everyone who didn't reach an
  ending. This is the one to read closely: a block near the top of that list is
  where your story loses people.

> Numbers build up from the moment a story is played, so a story that was live
> before this existed starts its drop-off list from today.

## Getting the answers out

The **Player data** card exports every session as a CSV — one row per player,
one column per [variable](/guide/variables). Everything typed into a
[User Input](/guide/blocks#user-input) block is in there, alongside the ending
each player reached and how far they got.

The same card takes a **webhook** address. Whenever someone finishes your
story, we POST the session to it as JSON — answers, ending, and the
participant's details if your story collects them. The address has to be
`https`, and it has to be reachable from the public internet.

## Learner report

For training, the question is usually about *people*, not sessions: did Anna
finish, how many tries did it take her, what did she answer? The **Learner
report** button in the **Player data** card downloads a CSV with one row per
learner:

| Column | What it holds |
|---|---|
| `learner_email`, `learner_name`, `learner_age` | Who they are, from their Skaz account |
| `attempts` | How many times they started the story |
| `completions` | How many of those reached an ending |
| `endings_reached` | Every named ending they found, separated by `;` |
| `first_started_at`, `last_activity_at` | When they began, and when they last did anything |
| `last_status`, `last_steps` | Where their latest attempt stands: `playing`, `finished` or `interrupted`, and how far it got |
| *one column per variable* | Their answers and scores from the **latest** attempt |

Learners are matched by email, so the same person on a new device is still one
row.

> Only stories that ask players to **sign in** have learners — an anonymous play
> has no one to put on a row, so it's left out. Turn on sign-in when you create
> the story if you'll need this. Learner reports are on the **Studio** and **Team**
> plans.

## Sessions

Each time someone plays your published story, that playthrough is a **session**.
The Sessions panel lists them under two tabs:

- **Active** — sessions that are being played *right now*. The list refreshes
  on its own, so you can watch readers move through your story live.
- **Finished** — sessions that have ended, whether the reader reached an
  ending or stopped partway.

Each row shows when the session started or ended and how many **steps** the
reader took. Click a row to expand it and see a snapshot of that player's
[variables](/guide/variables) at the point they stopped — useful for seeing
what score they built up, which name they entered, or which flags they set.

### Finished vs. interrupted

The **Finished** tab holds two kinds of ended session:

- **Finished** — the reader reached an [ending](/guide/choices#how-choices-look-to-players)
  (a block with no choices).
- **Interrupted** — the reader stopped without finishing (closed the tab, lost
  connection, or simply wandered off). After a stretch of inactivity, a
  still-open session is automatically marked interrupted, with a short note
  explaining why. These are shown in orange so you can tell them apart from
  clean completions.

Interrupted sessions are worth a look — a cluster of them all stopping at the
same block can point to a spot where readers get stuck, bored, or confused.

> Sessions only appear for **published** stories that people actually open. Your
> own [previews](/guide/previewing) run as real sessions too, so don't be
> surprised to see your own test plays listed here.
