Use this skill to verify that PostHog instrumentation is firing correctly on a website. Drives a real browser at one or more URLs, observes which PostHog events actually arrive, and reports a pass/fail summary. Use after installing the PostHog SDK on a site, after a deploy that touches tracking code, or when events appear missing in the PostHog dashboard.
Scanned 6/5/2026
Install via CLI
openskills install PostHog/posthog---
name: verify-posthog-instrumentation
description: >
Use this skill to verify that PostHog instrumentation is firing correctly on
a website. Drives a real browser at one or more URLs, observes which PostHog
events actually arrive, and reports a pass/fail summary. Use after installing
the PostHog SDK on a site, after a deploy that touches tracking code, or when
events appear missing in the PostHog dashboard.
---
# Verify PostHog instrumentation
End-to-end check that the PostHog SDK is loaded and emitting events as expected.
This skill orchestrates the three traffic-sim tools to give a complete picture
of a site's instrumentation health.
## When to use
- After running `npx @posthog/wizard` to confirm the install actually works.
- After a deploy that touches analytics, tracking, or layout code.
- When a customer reports "I'm not seeing events in PostHog" — to disambiguate
between snippet issues, network issues, or filtering issues.
- As a smoke test before launching a new site or marketing page.
## Workflow
### Step 1 — Confirm the snippet is loaded everywhere
Run the `check_posthog_loading` MCP tool against the URLs you care about
(homepage, key product pages, login, checkout, marketing pages). It returns
which pages have PostHog initialized, the load method (head_snippet / snippet
/ array_js_only), and the init config.
Look for:
- Pages where `loaded: false` — PostHog is missing from those pages.
- Inconsistent `api_key` values across pages — multiple projects in use.
- Inconsistent `api_host` values across pages — events going to different ingestion endpoints.
### Step 2 — Send synthetic traffic and confirm events arrive
Pick one URL where Step 1 confirmed PostHog is loaded. Call:
- `simulate_new_user` — a few fresh-browser visits. Confirms `$pageview`
fires for first-time visitors and that an anonymous distinct_id is assigned.
- `simulate_returning_user` — a few page views in a single session. Confirms
cookies persist and `$pageview` keeps firing across navigations.
The tools return `verified: true` when at least one `$pageview` was captured
and there were no errors.
### Step 3 — Cross-check in PostHog
If Steps 1 and 2 pass but events don't show up in the PostHog UI, the issue
is downstream of the snippet:
- Check for ingestion lag (events can take ~30s to appear).
- Check that the `api_host` matches the project's ingestion host.
- Check feature flag and ingestion warnings in the PostHog UI.
## What "verified" means in this skill
A site is verified when:
1. `check_posthog_loading` reports `loaded: true` on every URL we expect.
2. `simulate_new_user` and `simulate_returning_user` both return at least one
`$pageview` event per visit, with no errors.
3. (Optional) The events appear in the PostHog UI within 1-2 minutes.
## What this skill does not check
- Whether your custom events (e.g. `signup_completed`) are being sent —
the tool watches for any PostHog event, but you'd need to drive the actual
user flow to see custom events fire. Use it as a starting point, then add
user-flow simulation on top.
- Server-side ingestion. The tool only sees what the browser SDK sends.
- Session recording quality. The tool reports whether recording is enabled
in the init config but doesn't validate the recording itself.
No comments yet. Be the first to comment!