/exploring-live-traffic
Inspects PostHog Web analytics Live tab data — current users online, last-30-minutes pageviews, top pages, referrers, devices, browsers, countries, bot traffic, and the per-minute bot/users charts. Use when the user asks "who is on my site right now?", "what is happening live?",
Claude Code
$ npx -y skills add PostHog/ai-plugin --skill exploring-live-traffic --agent claude-code
Codex
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a codex -y
Cursor
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a cursor -y
Gemini CLI
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a gemini-cli -y
GitHub Copilot
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a github-copilot -y
OpenCode
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a opencode -y
Windsurf
$ npx skills add PostHog/ai-plugin --skill exploring-live-traffic -a windsurf -y
SKILL.md
exploring-live-traffic.SKILL.mdname: exploring-live-traffic
description: 'Inspects PostHog Web analytics Live tab data — current users online, last-30-minutes pageviews, top pages, referrers, devices, browsers, countries, bot traffic, and the per-minute bot/users charts. Use when the user asks "who is on my site right now?", "what is happening live?", "what bots are crawling me?", asks about the "live tab" / "live dashboard", wants live numbers (last 30 min), or wants help filtering or drilling into the live view. Also covers building product-analytics insights that mirror what the tiles show.'
Exploring Web analytics live traffic
The Web analytics Live tab (`/web/live`) shows real-time activity over a 30-minute sliding window plus a 60-second "users online" count. It is the place to answer "what is happening on my site right now?" — pageviews, named bots, devices, geo, top paths, top referrers, and a live event feed.
This skill teaches you (the agent) how to:
- recognize a request that belongs on the Live tab
- read the tile model (what each card shows, where the data comes from)
- manipulate the only filter that exists (host)
- build product-analytics insights that match a Live tile when the user wants
longer time ranges or deeper drill-down than the live window offers
The Live tab is **not** a HogQL playground — its data comes from a livestream backed by short HogQL backfills. When the user wants to query "right now" data with HogQL, point them at the tab; when they want historical breakdowns, build an insight with the patterns below.
When to use this skill
Use this skill when the user:
- asks "who is on my site right now?", "what is happening live?", "show me live traffic"
- mentions the "Live" tab, the "Live dashboard", or the live page (`/web/live`)
- asks about live bot traffic ("which bots are crawling me?", "is GPTBot scraping us?")
- wants to filter live traffic by domain / host
- wants to compare what they see on the Live tab to a longer time window — e.g.
"the live tab shows GPTBot is hammering us, can you give me a 7-day chart of that?"
Do not use this skill for non-realtime web analytics work — for that, use the standard Web analytics tab (`/web`).
Tab structure
URL: `/web/live`
The tab has two filter affordances and a grid of tiles. Date range is **fixed**: 30 minutes sliding window for everything except "Users online" (last 60 seconds).
Filters
There is only **one** filter on the live tab: the host (domain) selector.
- It comes from `webAnalyticsFilterLogic.selectedHost`.
- It is **shared with the rest of Web analytics**, so changing it on `/web` propagates to
`/web/live` and vice-versa.
- It is gated by feature flag `WEB_ANALYTICS_LIVE_DOMAIN_FILTER`. If the flag is off, no
host filter UI is rendered and all tiles show data across every domain.
- Setting the host filter narrows: the SSE stream, the HogQL backfill queries (so the
initial 30 min is host-scoped), and the "users online" count.
- There is no date picker, no compare control, no property filters, no test-account
filter on the Live tab. Do not promise the user controls that don't exist.
When the user asks "filter live traffic by domain `<host>`", direct them to the **Domain** selector at the top of the Live tab. There is no URL param to set it directly — it persists in `localStorage` via `webAnalyticsFilterLogic`.
Stat cards (top strip)
| Card | What | Window | | --------------- | ----------------------------------------------- | ------ | | Users online | Distinct device IDs seen in the last 60 seconds | 60s | | Unique visitors | Distinct device IDs in the last 30 min | 30m | | Pageviews | `$pageview` count in the last 30 min | 30m |
Content cards
| Card | What | Notes | | ----------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | Active users per minute | Bar chart, new vs returning visitors | last 30 min | | Top pages | Animated leaderboard, `$pathname` + view count | top 10, 30 min | | Top referrers | Animated leaderboard, `$referring_domain` | top 10, 30 min | | Devices | Breakdown bars, `$device_type` | top 6 + Other | | Browsers | Breakdown bars with logos, `$browser` | top 6 + Other | | Top countries | Breakdown bars, `$geoip_country_code` | top 6 + Other; replaced by a Country/City tab card if `WEB_ANALYTICS_LIVE_CITY_BREAKDOWN` is on | | Bot requests per minute | Bar chart, bot events / minute | flag `WEB_ANALYTICS_BOT_ANALYSIS` | | Bot traffic | Named bots ranked by event share, with category tag | flag `WEB_ANALYTICS_BOT_ANALYSIS`; rows are clickable and open an insight for that specific bot | | Countries (world map) | SVG world map heat | flag `WEB_ANALYTICS_LIVE_MAP` | | Live events | Streamed event feed (event, person, URL, timestamp) | last 50 events |
Every tile (except the live
Read more
name: exploring-live-traffic description: 'Inspects PostHog Web analytics Live tab data — current users online, last-30-minutes pageviews, top pages, referrers, devices, browsers, countries, bot traffic, and the per-minute bot/users charts. Use when the user asks "who is on my site right now?", "what is happening live?", "what bots are crawling me?", asks about the "live tab" / "live dashboard", wants live numbers (last 30 min), or wants help filtering or drilling into the live view. Also covers building product-analytics insights that mirror what the tiles show.'
Exploring Web analytics live traffic
The Web analytics Live tab (`/web/live`) shows real-time activity over a 30-minute sliding window plus a 60-second "users online" count. It is the place to answer "what is happening on my site right now?" — pageviews, named bots, devices, geo, top paths, top referrers, and a live event feed.
This skill teaches you (the agent) how to:
- recognize a request that belongs on the Live tab
- read the tile model (what each card shows, where the data comes from)
- manipulate the only filter that exists (host)
- build product-analytics insights that match a Live tile when the user wants
longer time ranges or deeper drill-down than the live window offers
The Live tab is **not** a HogQL playground — its data comes from a livestream backed by short HogQL backfills. When the user wants to query "right now" data with HogQL, point them at the tab; when they want historical breakdowns, build an insight with the patterns below.
When to use this skill
Use this skill when the user:
- asks "who is on my site right now?", "what is happening live?", "show me live traffic"
- mentions the "Live" tab, the "Live dashboard", or the live page (`/web/live`)
- asks about live bot traffic ("which bots are crawling me?", "is GPTBot scraping us?")
- wants to filter live traffic by domain / host
- wants to compare what they see on the Live tab to a longer time window — e.g.
"the live tab shows GPTBot is hammering us, can you give me a 7-day chart of that?"
Do not use this skill for non-realtime web analytics work — for that, use the standard Web analytics tab (`/web`).
Tab structure
URL: `/web/live`
The tab has two filter affordances and a grid of tiles. Date range is **fixed**: 30 minutes sliding window for everything except "Users online" (last 60 seconds).
Filters
There is only **one** filter on the live tab: the host (domain) selector.
- It comes from `webAnalyticsFilterLogic.selectedHost`.
- It is **shared with the rest of Web analytics**, so changing it on `/web` propagates to
`/web/live` and vice-versa.
- It is gated by feature flag `WEB_ANALYTICS_LIVE_DOMAIN_FILTER`. If the flag is off, no
host filter UI is rendered and all tiles show data across every domain.
- Setting the host filter narrows: the SSE stream, the HogQL backfill queries (so the
initial 30 min is host-scoped), and the "users online" count.
- There is no date picker, no compare control, no property filters, no test-account
filter on the Live tab. Do not promise the user controls that don't exist.
When the user asks "filter live traffic by domain `<host>`", direct them to the **Domain** selector at the top of the Live tab. There is no URL param to set it directly — it persists in `localStorage` via `webAnalyticsFilterLogic`.
Stat cards (top strip)
| Card | What | Window | | --------------- | ----------------------------------------------- | ------ | | Users online | Distinct device IDs seen in the last 60 seconds | 60s | | Unique visitors | Distinct device IDs in the last 30 min | 30m | | Pageviews | `$pageview` count in the last 30 min | 30m |
Content cards
| Card | What | Notes | | ----------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------- | | Active users per minute | Bar chart, new vs returning visitors | last 30 min | | Top pages | Animated leaderboard, `$pathname` + view count | top 10, 30 min | | Top referrers | Animated leaderboard, `$referring_domain` | top 10, 30 min | | Devices | Breakdown bars, `$device_type` | top 6 + Other | | Browsers | Breakdown bars with logos, `$browser` | top 6 + Other | | Top countries | Breakdown bars, `$geoip_country_code` | top 6 + Other; replaced by a Country/City tab card if `WEB_ANALYTICS_LIVE_CITY_BREAKDOWN` is on | | Bot requests per minute | Bar chart, bot events / minute | flag `WEB_ANALYTICS_BOT_ANALYSIS` | | Bot traffic | Named bots ranked by event share, with category tag | flag `WEB_ANALYTICS_BOT_ANALYSIS`; rows are clickable and open an insight for that specific bot | | Countries (world map) | SVG world map heat | flag `WEB_ANALYTICS_LIVE_MAP` | | Live events | Streamed event feed (event, person, URL, timestamp) | last 50 events |
Every tile (except the live
Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.
Other skills on ai-plugin.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about exploring-live-traffic.
- Which coding agents can use exploring-live-traffic?
- exploring-live-traffic installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

