Docs / Analytics View as Markdown

Reports

Dimensions, filters, compare, segments, funnels, paths, retention, realtime, export, notes and alerts in the dashboard, CLI and MCP.

Everything an analytics property collects can be read in three places: the dashboard, the splithub CLI and the MCP server. They answer from the same reports, so an agent and a teammate looking at the dashboard see the same numbers. Reports are counts, not experiment results: for a verdict use npx splithub results.

Reports with dimensions, filters, visits and conversions are SplitHub Cloud features. A self-hosted property answers raw counts (see Self-hosted).

Where to read them

Report Dashboard (property page) CLI MCP tool
Every property, last 30 days Analytics npx splithub analytics splithub_analytics
Totals, goals, top pages and sources Overview analytics <id> splithub_analytics with property
By a dimension Pages, Sources, Audience, Events & goals analytics <id> --by <dimension> splithub_analytics with by
Funnels Funnels analytics funnel <id> splithub_analytics_funnel
Paths Paths analytics paths <id> splithub_analytics_paths
Retention Retention analytics retention <id> splithub_analytics_retention
Right now Realtime analytics realtime <id> splithub_analytics_realtime
Latest raw rows Raw events analytics events <id> splithub_analytics_events
Event props Events & goals analytics props <id> --event <name> —
CSV Export analytics export <id> —
Notes Notes npx splithub notes splithub_notes
Saved segments the filter bar analytics segments splithub_segments

Every CLI command takes --json. npx splithub status also lists each property's last 7 days against the 7 before, and npx splithub report adds them as an Analytics table.

Totals

npx splithub analytics sh-x1h78w --days 7
npx splithub analytics sh-x1h78w --from 2026-10-01 --to 2026-10-31

Visitors, new visitors, identified users, visits, pageviews, events, bounce rate and visit duration, then each goal (conversions, completions, revenue), the top pages, the top sources and the notes in the range. The default range is the last 30 days; one report covers at most 400 days. Days follow the project's time zone (Settings).

Dimensions

--by groups the report by one dimension:

Group Dimensions
Pages page, entry, exit
Sources source, referrer, channel, utm_source, utm_medium, utm_campaign, utm_term, utm_content
Audience country, region, city, device, os, browser, language, host
Actions event, goal
Your data trait --key plan (an identify trait), variant --experiment hero (the variant each visitor saw)
npx splithub analytics sh-x1h78w --by channel
npx splithub analytics sh-x1h78w --by source --goal signup     # conversions of signup per source
npx splithub analytics sh-x1h78w --by variant --experiment hero
npx splithub analytics sh-x1h78w --by trait --key plan

With a visit dimension, --goal <key> adds that goal's conversions per row.

Filters

--filter dimension=value[,value] narrows the visits a report starts from. Repeat it to combine filters; several values of one filter mean any of them.

npx splithub analytics sh-x1h78w --by page --filter country=DE,FR --filter source="(none)"

Any visit dimension, page and event filter this way. Four prefixes reach your own data:

Filter Keeps visits
p.gclid=abc whose landing page had that query parameter
t.plan=pro of users with that identify trait
e.signup.plan=pro that sent the event signup with that prop value
x.hero=bold of visitors who saw that variant of the experiment

Compare

npx splithub analytics sh-x1h78w --days 7 --compare                      # the 7 days right before
npx splithub analytics sh-x1h78w --days 7 --compare year                 # the same days a year earlier
npx splithub analytics sh-x1h78w --compare 2026-08-01..2026-08-31        # days you choose

The answer gains previous, and the CLI prints the change per row.

Segments

A segment is a saved set of filters that every report can apply.

npx splithub analytics segments --save "German traffic" country=DE
npx splithub analytics sh-x1h78w --segment "German traffic" --by page
npx splithub analytics segments                                   # the list
npx splithub analytics segments --delete "German traffic"

--property <id> keeps a segment to one property. A --filter on the same dimension wins over the segment's.

Funnels

npx splithub analytics funnel sh-x1h78w --steps "page:/,event:Signup,goal:paid"
npx splithub analytics funnel sh-x1h78w --steps "page:/pricing,goal:paid" --within 7d --by country

Two to eight steps: page:/path (patterns like page:/blog/* work), event:<name> or goal:<key>. Visitors count for a step only after the steps before it. --within is visit (the default, all in one visit), 7d or 30d from the first step. Each step answers visitors, conversion (share of step 1) and dropoff (share lost since the step before).

Paths

npx splithub analytics paths sh-x1h78w --page /pricing           # where visits went next
npx splithub analytics paths sh-x1h78w --page /pricing --prev    # where they came from

Rows are pages with their visits; (exit) means the visit ended there, (entrance) that it started on the page.

Retention

npx splithub analytics retention sh-x1h78w
npx splithub analytics retention sh-x1h78w --start event:Signup --return visit --period day

Visitors are grouped by the day or week they started (--start visit, event:<name> or goal:<key>), and each cohort shows how many came back (--return visit or event:<name>) in each period after. The default is visit to visit, by week.

Realtime

npx splithub analytics realtime sh-x1h78w

Visitors in the last 5 minutes, pageviews and events per minute over the last 30 minutes, top pages and sources. The quickest check that tracking works after a deploy.

Event props

npx splithub analytics props sh-x1h78w --event Signup             # the prop names of Signup
npx splithub analytics props sh-x1h78w --event Signup --key plan  # the values of one prop

Export

npx splithub analytics export sh-x1h78w --by day > daily.csv
npx splithub analytics export sh-x1h78w --by page > pages.csv
npx splithub analytics export sh-x1h78w --raw > events.csv

CSV to stdout, for the range and filters you pass. --raw exports the raw tail (see Retention).

Notes

A note marks a day on every chart, so a jump in traffic has its reason next to it.

npx splithub notes add "Launched new pricing" --kind win --property sh-x1h78w --day 2026-10-05
npx splithub notes --property sh-x1h78w

Add one whenever you ship something that may move traffic.

Alerts

Alerts on a property are a Pro feature, set in the dashboard (Alerts) or with the CLI:

npx splithub alerts add traffic_drop --property sh-x1h78w --percent 50
npx splithub alerts add traffic_spike --property sh-x1h78w --percent 50
npx splithub alerts add goal_silent --property sh-x1h78w --goal signup --hours 24
npx splithub alerts add event_count --property sh-x1h78w --event Signup --count 1000 --repeat

The digest covers properties too: visitors, top sources and pages, goals and events against the period before. Channels and schedules: Alerts, digest, AI reviews.

Words

Word Meaning
visitor one browser, by its sh_vid cookie
user a visitor you identified with identify()
visit a run of pageviews and events that ends after 30 minutes without any (sessions in JSON)
bounce a visit with one page and no event; bounce rate is bounces divided by visits
duration time in a visit, in milliseconds in JSON
source the UTM source, or the referrer's site (Google, Facebook…); (none) is direct
channel sources grouped: Direct, Organic Search, Paid Search, Organic Social, Paid Social, Email, Referral, Affiliate, Other
entry, exit the first and the last page of a visit
conversion a visitor reaching a goal, counted once per visitor in the range
completions how many times the goal happened

Bots are never counted.

For agents

The analytics skill that npx splithub skills installs teaches an agent these commands. Ask it in plain words ("where did signups come from last week?", "how many visitors reach checkout from pricing?") and it picks the report, the range and the filters, and quotes the counts as they are.

SplitHub
See what works. Ship what wins.