# Read GA4 traffic the right way

> Tier: recipe. Operating recipe: real tool sequence, core rules, known traps.

The basic traffic table done properly: consistent dimensions, thresholds acknowledged, channels from the property's own grouping.

**Intent.** Sessions, users and engagement over the window, with the channel cut.

## When to use

- Any 'how is the site doing' question.

## When not to use

- Same-day reads: intraday data is incomplete.

## Sources

Required: Google Analytics 4

## Preconditions

- The account is ticked in the dashboard, confirmed via list_accounts.

## Inputs

- `window`: Analysis window. Default: last 30 days.

## Procedure

1. Run the traffic report over the window with the property's channel grouping. — tools: `ga4_run_report`, `ga4_get_channel_groups`
2. Compare against the prior equivalent window.

## Decision rules

- **When** A channel's sessions moved sharply → **conclude** Check the source/medium detail before storytelling: grouping changes masquerade as traffic changes.

## Evidence requirements

- Every figure carries its account, metric and window.
- Anything below a readable sample size is reported as unjudged, not as zero.

## Human approval boundary

- The readout changes nothing. Any change it motivates goes through Safe Writes: preview, human confirmation, then apply.

## Failure modes

- Thresholding hides small rows: absence is not zero.
- The 'unassigned' channel growing is a tagging finding, not a traffic finding.

## Output

- **Readout**: The figures, with windows and accounts named.
- **Flags**: What deserves a deeper skill or a human decision.
