mcpbeat

Verify Posthog Instrumentation

posthog/verify-posthog-instrumentation

> 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.

832 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
690
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/PostHog/posthog --skill verify-posthog-instrumentation

The instruction itself

8 sections, as written by the author

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:

  • check_posthog_loading reports loaded: true on every URL we expect.
  • simulate_new_user and simulate_returning_user both return at least one

$pageview event per visit, with no errors.

  • (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.

How to use it

Copy the folder

Take posthog/verify-posthog-instrumentation from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference npx. Without those the skill loads but fails at the first command.