Error Tracking Web
PostHogOfficialCreated by PostHog
- Skill
- Tool integration
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides guidance on implementing PostHog error tracking within JavaScript web applications. It covers SDK initialization, manual exception capture, and best practices for managing error data, including the use of source maps for readable stack traces and proper user identification to avoid PII leakage. The skill also outlines how to configure alerts and automate issue assignment to streamline debugging workflows.
What it does
- Initializes the PostHog JavaScript SDK for browser-based error tracking.
- Enables automatic exception capture for monitoring application crashes and errors.
- Provides methods for manual error capture at specific application boundaries.
- Supports source map uploads to de-minify stack traces for easier debugging.
- Configures automated issue assignment rules based on exception properties.
- Sets up alert notifications for new, reopened, or spiking error issues.
When to use it
- When you need to monitor runtime errors in a JavaScript web application.
- When you want to automate the triage and assignment of software issues to team members.
- When you need to receive real-time alerts for critical application errors or error spikes.
- When you need to correlate frontend errors with user sessions and feature flags.
Advantages
- Centralizes error monitoring and user behavior data in one platform.
- Reduces manual triage time through automated assignment rules.
- Improves debugging efficiency by resolving minified stack traces via source maps.
- Helps maintain data privacy by distinguishing between event properties and user identification.
Usage examples
- “How do I initialize PostHog for error tracking in my React app?”
- The agent provides the posthog.init() code snippet, ensuring it is called before other methods and configured with environment variables for keys and host URLs.
- “How can I alert my team when a specific error spikes?”
- The agent guides you to the error tracking configuration page to set up spike alerts based on historical baselines or event volume.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/posthog/error-tracking-web/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip error-tracking-web.zip -d .agents/skills
Documentation by PostHog
PostHog error tracking for Web (JavaScript)
This skill helps you add PostHog error tracking to Web (JavaScript) applications.
Reference files
references/web.md- Web error tracking installation - docsreferences/fingerprints.md- Fingerprints - docsreferences/alerts.md- Send error tracking alerts - docsreferences/monitoring.md- Monitor and search issues - docsreferences/assigning-issues.md- Assign issues to teammates - docsreferences/upload-source-maps.md- Upload source maps - docs
Consult the documentation for API details and framework-specific patterns.
Key principles
Environment variables: Always use environment variables for PostHog keys and host URLs. Never hardcode them.
Minimal changes: Add error tracking alongside existing error handling. Don't replace or restructure existing error handling code.
Autocapture first: Enable exception autocapture in the SDK initialization before adding manual captures.
Source maps: Upload source maps so stack traces resolve to original source code, not minified bundles.
Manual capture for boundaries: Use
captureException()at error boundaries and catch blocks for errors that don't propagate to the global handler.
Framework guidelines
Remember that source code is available in the node_modules directory
Check package.json for type checking or build scripts to validate changes
posthog-js is the JavaScript SDK package name
posthog.init() MUST be called before any other PostHog methods (capture, identify, etc.)
posthog-js is browser-only — do NOT import it in Node.js or server-side contexts (use posthog-node instead)
Autocapture is ON by default with posthog-js (tracks clicks, form submissions, pageviews). Do NOT disable autocapture unless the user explicitly requests it.
NEVER send PII in posthog.capture() event properties — no emails, full names, phone numbers, physical addresses, IP addresses, or user-generated content
PII belongs in posthog.identify() person properties (email, name, role), NOT in capture() event properties
Call posthog.identify(userId, { email, name, role }) on login AND on page refresh if the user is already logged in
Call posthog.reset() on logout to unlink future events from the current user
For SPAs without a framework router, capture pageviews with posthog.capture($pageview) or use the capture_pageview history_change option in init for History API routing
Files
- ATTRIBUTION.mdAdded by AutoGineer954 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md2.5 KiB
- references/alerts.md4.1 KiB
- references/assigning-issues.md5.5 KiB
- references/fingerprints.md3.4 KiB
- references/monitoring.md8.6 KiB
- references/upload-source-maps.md2.7 KiB
- references/web.md5.4 KiB
references/web.md
Web error tracking installation - Docs
1
Choose an installation method
Required
You can either add the JavaScript snippet directly to your HTML or install the JavaScript SDK via your package manager.
HTML snippet
Add this snippet to your website within the
<head>tag. This can also be used in services like Google Tag Manager:HTML
PostHog AI
<script> !function(t,e){var o,n,p,r;e.__SV||(window.posthog && window.posthog.__loaded)||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.crossOrigin="anonymous",p.async=!0,p.src=s.api_host.replace(".i.posthog.com","-assets.i.posthog.com")+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="init os ds Ie us vs ss ls capture calculateEventProperties register register_once register_for_session unregister unregister_for_session ws getFeatureFlag getFeatureFlagPayload getFeatureFlagResult isFeatureEnabled reloadFeatureFlags updateFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey displaySurvey cancelPendingSurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException startExceptionAutocapture stopExceptionAutocapture loadToolbar get_property getSessionProperty bs ps createPersonProfile setInternalOrTestUser ys es $s opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing get_explicit_consent_status is_capturing clear_opt_in_out_capturing cs debug M gs getPageViewId captureTraceFeedback captureTraceMetric Qr".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([i,s,a])},e.__SV=1)}(document,window.posthog||[]); posthog.init('<ph_project_token>', { api_host: 'https://us.i.posthog.com', defaults: '2026-01-30', }) </script>JavaScript SDK
Install the PostHog JavaScript library using your package manager. Then, import and initialize the PostHog library with your project token and host:
PostHog AI
npm
npm install posthog-jsyarn
yarn add posthog-jspnpm
pnpm add posthog-jsJavaScript
PostHog AI
import posthog from 'posthog-js' posthog.init('<ph_project_token>', { api_host: 'https://us.i.posthog.com', defaults: '2026-01-30' })2
Send events
Recommended
Once installed, PostHog will automatically start capturing events. You can also manually send events to test your integration:
Click around and view a couple pages to generate some events. PostHog automatically captures pageviews, clicks, and other interactions for you.
If you'd like, you can also manually capture custom events:
JavaScript
PostHog AI
posthog.capture('my_custom_event', { property: 'value' })3
Set up exception autocapture
Recommended
You can enable exception autocapture for the JavaScript Web SDK in the Error tracking section of your project settings.
When enabled, this automatically captures
$exceptionevents when errors are thrown by wrapping thewindow.onerrorandwindow.onunhandledrejectionlisteners.4
Manually capture exceptions
Optional
It is also possible to manually capture exceptions using the
captureExceptionmethod:JavaScript
PostHog AI
posthog.captureException(error, additionalProperties)This is helpful if you've built your own error handling logic or want to capture exceptions that are handled by your application code.
Verify error tracking
Recommended
Confirm events are being sent to PostHog
Before proceeding, let's make sure exception events are being captured and sent to PostHog. You should see events appear in the activity feed.
Image: Activity feed with eventsImage: Activity feed with events
5
Upload source maps
Required
Great, you're capturing exceptions! If you serve minified bundles, the next step is to upload source maps to generate accurate stack traces.
Let's continue to the next section.
Community questions
Ask a question
Was this page useful?
HelpfulCould be better
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/posthog/error-tracking/skills/web · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- PostHog/skills
AutoGineer is not affiliated with or endorsed by PostHog or PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download error-tracking-web.zip