Getting a robot to watch for you

You can watch a dozen replays, but you can't watch a thousand. Have a robot watch it for you.

This section covers various automations you can configure to automate replay watching.

Which robot

Four automations can watch replays on your behalf:

RobotWhat it doesWhat you get
Session summaryPostHog AI reads the event stream of one session, or twenty, and writes what happenedA written account, and the pattern across a batch
Replay Vision scannerOur model that watches every matching replay, continuouslyAn observation per session, saved as a $recording_observed event you can query
Session Replay signalSpots rage clicks and friction, raises themA report in your inbox, grouped with related findings
ScoutQueries anything in PostHog on a schedule – events, insights, warehouse tables, and the observations aboveA report too, but only when the answer to its question changes

Only the Replay Vision scanner watches the video. The other three read events, so they know what people did but not what the screen showed them.

Summarize with PostHog AI

You can ask PostHog AI to find and summarize sessions. PostHog will summarize the both the sessions replay and the events stream containing pageviews, clicks, inputs, and errors recorded during that session.

Rather than watching them all to spot a pattern, ask for the batch and let it surface what's common.

It's at its best on experiments. Metrics tell you which variant won, summaries tell you why.

Summarizing a session also marks up its player timeline: green segments where things went well, red where they didn't. Click a marker to jump to that moment, or click a segment in the summary sidebar to move the player there. Summarizing a replay makes it easier to navigate for your whole team down the road.

Set up a scanner

A Replay Vision scanner is three things: a prompt saying what to look for, a type saying what shape the answer takes, and filters saying which recordings it runs against. PostHog then asks that question of every matching session, forever.

Every answer is saved as a $recording_observed event on the session it came from, along with the model's reasoning – citations included, linking to the moments that convinced it – its confidence, and what the observation cost.

So "how many people got stuck on pricing last week" is a query:

SELECT count()
FROM events
WHERE event = '$recording_observed'
AND properties.scanner_name = 'Dead-end pages'
AND properties.scanner_output_verdict = 'yes'
AND timestamp > now() - INTERVAL 7 DAY

Signals and scouts

Signals and scouts make your product self-driving.

A signal is a finding with its evidence attached. Session Replay raises them two ways: it spots rage clicks and friction on its own, and any scanner can hand over what it finds by flipping Emit findings as Signals in the editor. Related signals group into a report in your inbox, so one problem arrives as one item rather than three.

A scout lets agents monitor those signals and act on them on your behalf – dig into the root cause, then draft a pull request Fig. 1. You stay in control of what ships.

P2Accounts that left onboarding midway can no longer finish it Accounts that left onboarding midway can't get past step two. The workspace they created last time blocks them, and the name it holds is their ownScout · dead-end pagesReadyActionable5h ago
ArchiveReview
Fig. 1What a scout files when replay signals add up to something: the claim on the card, the recordings inside the report.Hover over the figure to learn about each element.

You can learn more about scouts in the self-driving pocket guide. You can read more about the report shown above in The page people can't leave.

Scanner templates

Here are some templates to give you inspiration and get you started.

Dead endsMonitorDid the user appear stuck on a page?Every session comes back yes or no · scanner_output_verdictUser intentClassifierWhat was the user trying to do?One tag: browsing, purchasing, support_seeking · scanner_output_tagsSession outcomeClassifierHow did this session end?One tag: task_completed, task_abandoned, blocked_by_error · scanner_output_tagsFrustration scoreScorerHow much friction did they hit?A number on a scale you set · scanner_output_scoreSession summarySummarizerWhat happened in this session?A title and a short narrative · scanner_output_title, scanner_output_summary