saas-analytics-patterns

Solid

SaaS analytics event taxonomy, metric formulas (MRR, churn, LTV), provider-agnostic tracking, funnel analysis, cohort setup, and privacy-respecting instrumentation.

AI & Automation 496 stars 41 forks Updated 1 months ago MIT

Install

View on GitHub

Quality Score: 86/100

Stars 20%
90
Recency 20%
75
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# SaaS Analytics Patterns Provider-agnostic analytics for SaaS products. Track what matters, name it consistently, respect privacy. ## Event Naming Convention Use `object_action` format. Past tense for completed actions. ```typescript // GOOD: structured object_action naming const Events = { USER_SIGNED_UP: 'user_signed_up', PLAN_UPGRADED: 'plan_upgraded', PLAN_DOWNGRADED: 'plan_downgraded', PAYMENT_FAILED: 'payment_failed', TRIAL_STARTED: 'trial_started', FEATURE_USED: 'feature_used', INVITE_SENT: 'invite_sent', ONBOARDING_COMPLETED: 'onboarding_completed', } as const // BAD: ad-hoc, inconsistent naming // 'click_upgrade_button' -- UI action, not business event // 'userSignedUp' -- camelCase breaks grouping in dashboards // 'Signed Up' -- spaces break queries // 'signup' -- ambiguous (started? completed?) ``` ## Analytics Provider Abstraction Never couple your app to a specific vendor (Mixpanel, Amplitude, PostHog). ```typescript interface AnalyticsProvider { identify(userId: string, traits: Record<string, unknown>): void track(event: string, properties?: Record<string, unknown>): void page(name: string, properties?: Record<string, unknown>): void reset(): void } class Analytics { private providers: AnalyticsProvider[] = [] private consentGiven = false addProvider(p: AnalyticsProvider): void { this.providers = [...this.providers, p] } setConsent(granted: boolean): void { this.consentGiven = grante...

Details

Author
vibeeval
Repository
vibeeval/vibecosystem
Created
2 months ago
Last Updated
1 months ago
Language
C#
License
MIT

Integrates with

Similar Skills

Semantically similar based on skill content — not just same category