analytics-diagnostic-m…
The spine of analytics investigation. Use whenever interpreting analytics numbers, answering "why did X change", reading funnels, comparing cohorts, or…
Interpret analytics metrics with correct context. Use when the user asks "is this good", "what's a normal X", or quotes a rate without denominator. Covers realistic ranges for bounce rate, engagement, session duration, pages per session, conversion rate by model type, SaaS unit
$ npx -y skills add clamp-sh/analytics-skills --skill metric-context-and-benchmarks --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/metric-context-and-benchmarksContext preview
The summary Claude sees to decide when to auto-load this skill.
Interpret analytics metrics with correct context. Use when the user asks "is this good", "what's a normal X", or quotes a rate without denominator. Covers realistic ranges for bounce rate, engagement, session duration, pages per session, conversion rate by model type, SaaS unit
name: metric-context-and-benchmarks description: Interpret analytics metrics with correct context. Use when the user asks "is this good", "what's a normal X", or quotes a rate without denominator. Covers realistic ranges for bounce rate, engagement, session duration, pages per session, conversion rate by model type, SaaS unit economics (LTV:CAC, CAC payback, MRR churn, activation, retention), plus when each metric lies and minimum sample sizes. when_to_use: Triggered by "is 2% conversion good", "our bounce rate is 70%", "what's a healthy session duration", "is $70 CAC too high", "what's normal churn", or any raw metric quoted without context. Assumes you have also loaded analytics-diagnostic-method.
The reference skill for answering "is this number good, bad, or noise?" correctly. Almost every wrong answer to that question comes from quoting a cross-industry average when the user's industry-specific number is 3× different, or quoting a benchmark without checking if the sample size even supports the comparison.
Read `analytics-diagnostic-method` first. Sample-size discipline applies here more than anywhere: benchmarks are meaningless if your data is noise.
1. Load `analytics-profile.md`. The profile's model + industry row picks the right benchmark. 2. Check the sample size. If the user's number is computed on too few observations, the comparison to any benchmark is moot. Say so and stop. 3. Look up the relevant benchmark with its qualifiers (year, source, population, definition). 4. Answer in the form: "Your X is Y. Benchmark for [specific population] is Z [from source, year, n=]. Your number is [above / at / below] benchmark by W percentage points." 5. Flag metric-specific traps (e.g. GA4 bounce rate is not UA bounce rate; last-click CVR is not the full story).
Never quote a benchmark as if it's a target. Benchmarks describe populations; they don't tell you what *your* number should be. A business can have a below-benchmark CVR and a healthy LTV:CAC if their AOV or retention is elevated. A business can have a 3× benchmark CVR and still be unprofitable. Always connect the benchmark back to the user's actual unit economics.
**GA4 definition (authoritative, from support.google.com/analytics/answer/12195621)**:
**Critical**: GA4 bounce rate is NOT the same as Universal Analytics bounce rate. UA bounce rate was single-pageview sessions. In GA4, a single-pageview session with >10s dwell is engaged (not bounced). So pre-2023 blog posts quoting "50% bounce rate is average" are measuring a different thing.
**Realistic GA4 engagement rate ranges** (by content type, rough):
| Page type | Healthy engagement rate | |---|---| | Long-form blog / documentation | 60–85% | | Product / pricing pages | 50–75% | | Landing pages (ad-driven) | 35–60% | | Homepage | 45–65% | | Search results / category pages | 40–60% |
Above-range: possibly bot sessions with artificial dwell, or a content page being used as a reference (people open and keep the tab).
Below-range: misaligned expectation (wrong ad creative → wrong page), or slow page load.
Some analytics tools (e.g. Clamp's section-views extension) fire a per-section visibility event. Useful as a triangulating signal alongside engagement and bounce, but interpret by section position, not as a verdict:
| Section position | Healthy % of pageviews that view it | |---|---| | Above the fold (hero, top features) | 80–100% | | Mid-page (after first scroll) | 40–70% | | Below the fold (final CTA, footer-adjacent) | 15–40% |
A below-fold section with a low view rate is not a leak if the upstream CTAs convert normally; that's redundancy for the audience that needs it. Only flag low section views when downstream conversion is also weak.
Heavily distorted by outliers (one abandoned tab pushes the mean by minutes). **Always use the median, never the mean**, or the tool's "engaged session duration" variant that bounds the tail.
Rough ranges:
| Page / context | Typical median engaged duration | |---|---| | Docs / reference | 60–180s | | Article / blog | 30–90s | | Marketing / landing | 15–60s | | App / dashboard | varies wildly |
A median under ~10s on a marketing landing page is usually either a slow-load problem, a bot problem, or a page-content problem (people don't find what they came for).
**Cite the user's model row, not the cross-industry number.**
**Ecommerce (Littledata 2023, n=2,800 Shopify)**:
**Lead generation (Ruler Analytics 2025, 100M+ data points, 14 industries)**: Cross-industry average: 2.9% MQL CVR. By source overall:
| Source | CVR | |---|---| | Direct | 3.3% | | Paid search | 3.2% | | Referral | 2.9% | | Organic | 2.7% | | Email | 2.6% | | Paid social | 2.0% | | Organic social | 1.5% |
Selected industry rows:
| Industry | Direct | Organic | Paid search | Social | |---|---|---|---|---| | B2B Tech | 1.5% | 1.5% | 1.5% | 0.3% | | B2B Services | 2.7% | 2.5% | 3.4% | 1.2% | | B2B Ecommerce | 2.1% | 2.0% | 2.4% | 1.1% |
**Landing page CVR (Unbounce 2024, 57M conversions, 41k+ pages)**: Median across industries: 6.6%. But Unbounce me
Analytics skills for Claude, Cursor, and other AI agents. Read web analytics like a senior analyst: diagnose traffic changes, judge channel quality, read funnels, declare typed events, and read A/B tests without the usual rookie mistakes.
Repo: clamp-sh/analytics-skills
The spine of analytics investigation. Use whenever interpreting analytics numbers, answering "why did X change", reading funnels, comparing cohorts, or…
One-time interview that captures the business context (industry, model, primary conversion, traffic range, ICP, data stack) into a local analytics-profile.md…
Formal time-series methods that augment the hand-coded fingerprint library in traffic-change-diagnosis. Use this skill when traffic-change-diagnosis…
Bayesian counterpart to experiment-result-reader. Computes posterior P(variant beats control), credible intervals, and expected loss from per-variant exposure…
Build a refinable causal DAG before answering "did X cause Y" on observational data. Emits a Mermaid diagram of assumed causes, applies the back-door criterion…
Bradford Hill's 9 viewpoints (1965) reframed as a checklist for product analytics. Use this skill before recommending a decision based on observational…