posthog-cost-tuning
SKILL.md
PostHog Cost Tuning
Overview
Reduce PostHog event-based pricing costs by controlling event volume, optimizing autocapture settings, and leveraging the generous free tier. PostHog charges per event with a free tier of 1M events/month, then ~$0.00031 per event beyond that.
Prerequisites
- PostHog Cloud account with billing dashboard access
- Application instrumented with PostHog SDK
- Understanding of which events drive business value
Instructions
Step 1: Audit Event Volume by Type
set -euo pipefail
# Check which events consume the most quota
curl "https://app.posthog.com/api/projects/PROJECT_ID/insights/trend/?events=[{\"id\":\"$pageview\"},{\"id\":\"$autocapture\"},{\"id\":\"$screen\"}]&date_from=-30d&interval=week" \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" | \
jq '.result[] | {event: .label, total_30d: (.data | add)}'
Step 2: Disable Unnecessary Autocapture
// posthog-init.ts - Configure autocapture to skip noisy elements
posthog.init('phc_YOUR_KEY', {
autocapture: {
dom_event_allowlist: ['click', 'submit'], // Skip scroll, change, etc.
element_allowlist: ['a', 'button', 'form', 'input[type=submit]'],
css_selector_allowlist: ['.track-click'], // Only track explicitly marked elements
url_ignorelist: ['/health', '/api/internal'], // Skip internal endpoints
},
// Disable session recording for anonymous users to save on recording quota
session_recording: {
maskAllInputs: true,
},
});
Step 3: Sample High-Volume Events
// Reduce non-critical event volume by sampling
posthog.init('phc_YOUR_KEY', {
// Only send 10% of pageview events (still statistically significant)
before_send: (event) => {
if (event.event === '$pageview') {
return Math.random() < 0.1 ? event : null; // 90% reduction
}
// Always send business-critical events
if (['purchase', 'signup', 'upgrade'].includes(event.event)) {
return event;
}
// Sample other events at 50%
return Math.random() < 0.5 ? event : null;
},
});
Step 4: Filter Bot Traffic
// Bots generate significant event volume without business value
posthog.init('phc_YOUR_KEY', {
before_send: (event) => {
const ua = navigator.userAgent.toLowerCase();
const isBot = /bot|crawler|spider|scrapy|headless|phantom/i.test(ua);
return isBot ? null : event;
},
});
Step 5: Monitor Monthly Costs
set -euo pipefail
# Check current event usage vs billing tier
curl "https://app.posthog.com/api/organizations/ORG_ID/billing/" \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" | \
jq '{
events_used: .events_current_usage,
events_limit: .events_plan_limit,
usage_pct: (.events_current_usage / .events_plan_limit * 100),
estimated_cost: (if .events_current_usage > 1000000 then ((.events_current_usage - 1000000) * 0.00031) else 0 end) # 1000000 = 1M limit
}'
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Event volume spike | Autocapture on high-frequency element | Add element to css_selector_denylist |
| Bill higher than expected | Bot traffic generating events | Add bot filtering in before_send |
| Missing critical events | Sampling too aggressive | Exclude business events from sampling |
| Free tier exceeded early | New feature launched without volume estimate | Forecast events before launch |
Examples
Basic usage: Apply posthog cost tuning to a standard project setup with default configuration options.
Advanced scenario: Customize posthog cost tuning for production environments with multiple constraints and team-specific requirements.
Output
- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale
Resources
- Official monitoring documentation
- Community best practices and patterns
- Related skills in this plugin pack
Weekly Installs
18
Repository
jeremylongshore…s-skillsGitHub Stars
1.6K
First Seen
Jan 30, 2026
Security Audits
Installed on
codex18
opencode17
antigravity17
kilo17
qwen-code17
github-copilot17