Data & analysis

Analytics

Deploy privacy-first analytics with correct API patterns, rate limits, and GDPR compliance.

What it does

**Umami API timestamps**: Use milliseconds, not seconds. in JS, in Python.

The skill document

Critical Implementation Gotchas

Umami API timestamps: Use milliseconds, not seconds. Date.now() in JS, int(time.time() * 1000) in Python.

Plausible API v2: Requires site_id parameter, NOT domain name. Get site_id from dashboard URL first.

PostHog events: Properties must be JSON serializable. Never pass DOM elements or functions.

Rate limits: Umami 600/hour, Plausible 600/hour, PostHog 1000/minute. Implement exponential backoff on 429.

Environment-Specific Setup

Development: ALWAYS use separate project/site for local testing. Production data pollution is irreversible.

Tracking domains: Never hardcode. Use env vars to switch between localhost and production.

Bot filtering: Enable in settings. Privacy tools have weaker bot detection than Google Analytics.

GDPR Compliance Gotchas

EU visitors need explicit consent even for privacy-first tools. Check IP geolocation before tracking.

Data retention: Set automatic deletion - Umami in Settings > Data, Plausible 30 days max, PostHog in project settings.

Cookie-free warning: Umami/Plausible don't use cookies but still need consent for EU visitors if collecting identifiers.

Runtime Safety

Verify script loads before sending events. Check for umami, plausible, or posthog globals first.

Never track PII (email, names, IP) in custom events. Violates privacy principles.

Batch PostHog events via /batch endpoint. Umami/Plausible require individual requests.

Authentication Patterns

Store API keys in environment variables only. Never hardcode.

Umami: Requires website ID + API key combination.

Plausible: Uses Bearer token authentication.

PostHog: Uses project-specific API key.

Related skills

Read funnels, paths, retention, and experiments from your product, then get the next smallest growth action.

163 installs2 stars

Query Google Ads campaigns, keywords, and metrics via GAQL with managed OAuth.

261 installs20 stars

Publish a web app via a curl-based JSON-RPC API and get a hosted URL.

152 installs8 stars

Get a structured SERP brief with intent, difficulty, and feature opportunities for any target keyword.

117 installs1 stars

Read user-consented Fulcra context data — biometrics, sleep, activity, calendar, location — via the CLI or hosted MCP server.

115 installs11 stars

More from Iván

Browse all skills

Run Git operations — commits, branches, merges, rebases, conflict resolution, and recovery — with safety rules enforced.

by Iván527 installs31 stars

Create and critique visual artifacts with quantified rules for hierarchy, spacing, type scale, color, and layout.

by Iván137 installs5 stars

Debug CSS mechanics and write component stylesheets grounded in named mechanisms, not trial-and-error.

by Iván97 installs5 stars

Plans and runs self-directed learning as a system: exit test, spaced review, deliberate practice, and transfer proof.

by Iván93 installs3 stars

Get Azure architecture, debugging, security, and cost reviews grounded in a live inventory of your subscription.

by Iván86 installs2 stars

Diagnoses Java and JVM issues from exception messages to container OOM-kills, and writes Java code matching the configured JDK.

by Iván130 installs9 stars