# Analytics Event Taxonomy ## Overview This document defines the event taxonomy for FrenoCorp's analytics implementation across Mixpanel, GA4, and Stripe. Events are organized by category and mapped to each platform. ## Event Categories ### 1. User Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `user_signedup` | ✅ | `sign_up` | `customer.created` | New user registration | | `user_signedin` | ✅ | `login` | - | User login | | `user_signedout` | ✅ | `logout` | - | User logout | | `user_profile_updated` | ✅ | `update_user` | `customer.updated` | Profile changes | **Properties:** - `user_id` (string) - `email` (string) - `signup_method` (string: 'email', 'google', 'github') - `plan_tier` (string: 'free', 'pro', 'enterprise') - `timestamp` (ISO 8601) ### 2. Project Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `project_created` | ✅ | `project_create` | - | New project created | | `project_updated` | ✅ | `project_update` | - | Project modifications | | `project_deleted` | ✅ | `project_delete` | - | Project removal | | `project_shared` | ✅ | `share_project` | - | Sharing with collaborators | **Properties:** - `project_id` (string) - `project_name` (string) - `template_id` (string, optional) - `collaborator_count` (number) - `timestamp` (ISO 8601) ### 3. Screenplay Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `screenplay_created` | ✅ | `screenplay_create` | - | New screenplay | | `screenplay_updated` | ✅ | `screenplay_update` | - | Screenplay modification | | `screenplay_exported` | ✅ | `screenplay_export` | - | Export to PDF/Word | | `screenplay_saved` | ✅ | `save_screenplay` | - | Auto-save event | **Properties:** - `screenplay_id` (string) - `project_id` (string) - `page_count` (number) - `word_count` (number) - `export_format` (string, optional: 'pdf', 'docx', 'fdx') - `timestamp` (ISO 8601) ### 4. Collaboration Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `invitation_sent` | ✅ | `send_invitation` | - | Invite sent to collaborator | | `invitation_accepted` | ✅ | `accept_invitation` | - | Collaborator joined | | `collaboration_started` | ✅ | `start_collaboration` | - | Real-time editing began | | `collaboration_updated` | ✅ | `update_collaboration` | - | Collaboration settings changed | **Properties:** - `project_id` (string) - `inviter_id` (string) - `invitee_email` (string) - `permission_level` (string: 'view', 'edit', 'admin') - `timestamp` (ISO 8601) ### 5. Export/Import Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `export_completed` | ✅ | `export_complete` | - | Export finished | | `export_failed` | ✅ | `export_error` | - | Export error | | `import_completed` | ✅ | `import_complete` | - | Import finished | | `import_failed` | ✅ | `import_error` | - | Import error | **Properties:** - `export_format` (string: 'pdf', 'docx', 'fdx', 'txt') - `file_size_bytes` (number) - `duration_ms` (number) - `success` (boolean) - `error_message` (string, optional) - `timestamp` (ISO 8601) ### 6. Subscription/Payment Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `subscription_started` | ✅ | `begin_checkout` | `subscription.created` | Subscription initiated | | `subscription_renewed` | ✅ | `purchase` | `invoice.payment_succeeded` | Subscription renewed | | `subscription_cancelled` | ✅ | `purchase` | `subscription.deleted` | Subscription cancelled | | `payment_succeeded` | ✅ | `purchase` | `payment_intent.succeeded` | Payment successful | | `payment_failed` | ✅ | `purchase` | `payment_intent.payment_failed` | Payment failed | | `upgrade_attempted` | ✅ | `select_item` | `customer.updated` | Plan upgrade | **Properties:** - `subscription_id` (string) - `customer_id` (string) - `plan_tier` (string: 'free', 'pro', 'enterprise') - `amount` (number, in cents) - `currency` (string: 'USD', 'EUR', etc.) - `payment_method` (string: 'card', 'paypal', 'bank_transfer') - `duration_months` (number) - `timestamp` (ISO 8601) ### 7. E-commerce Events (GA4 Enhanced) | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `view_pricing_page` | ✅ | `view_item` | - | Viewed pricing | | `add_to_cart` | ✅ | `add_to_cart` | - | Selected plan | | `begin_checkout` | ✅ | `begin_checkout` | - | Started checkout | | `purchase` | ✅ | `purchase` | `invoice.payment_succeeded` | Completed purchase | **E-commerce Item Properties:** ```typescript interface GA4EcommerceItem { item_id: string; // Plan SKU (e.g., 'pro_monthly') item_name: string; // Display name (e.g., 'Pro Monthly') item_category: string; // 'subscription_tier' price: number; // Price in cents quantity: number; // Usually 1 for subscriptions currency: string; // 'USD', 'EUR', etc. } ``` ### 8. Engagement Events | Event Name | Mixpanel | GA4 | Stripe | Description | |------------|----------|-----|--------|-------------| | `page_view` | ✅ | `page_view` | - | Page navigation | | `search` | ✅ | `search` | - | Search performed | | `feature_used` | ✅ | `feature_click` | - | Feature interaction | | `help_viewed` | ✅ | `view_help` | - | Help documentation | **Properties:** - `page_name` (string) - `search_query` (string, optional) - `feature_name` (string, optional) - `session_id` (string) - `timestamp` (ISO 8601) ## Platform Configuration ### Mixpanel ```typescript // Project Token: Environment variable MIXPANEL_PROJECT_TOKEN // Options: { debug: process.env.NODE_ENV === 'development', track_pageview: true, persistence: 'localStorage', } ``` **Key Features:** - User identification with `identify()` - User properties with `people.set()` - Group analytics with `group()` - Cohort analysis support ### GA4 ```typescript // Measurement ID: Environment variable GA4_MEASUREMENT_ID // Options: { debug: process.env.NODE_ENV === 'development', autoTrackPageViews: true, autoTrackScrolls: true, autoTrackOutboundLinks: true, } ``` **Key Features:** - Enhanced e-commerce tracking - Automatic pageview tracking - Scroll depth tracking - Outbound link tracking ### Stripe ```typescript // Configuration: { publishableKey: process.env.STRIPE_PUBLISHABLE_KEY, secretKey: process.env.STRIPE_SECRET_KEY, webhookSecret: process.env.STRIPE_WEBHOOK_SECRET, apiVersion: '2024-12-18.acacia', } ``` **Key Features:** - Customer management - Subscription lifecycle - Payment intent tracking - Webhook event handling ## Implementation Notes ### Event Naming Conventions 1. **Mixpanel**: snake_case (e.g., `user_signedup`) 2. **GA4**: snake_case for custom events, standard names for e-commerce 3. **Stripe**: dot notation (e.g., `customer.created`) ### Property Naming - Use snake_case for all property names - Use ISO 8601 for timestamps - Use lowercase for enum values - Include `timestamp` on all events ### Data Retention - **Mixpanel**: 24 months (default), configurable - **GA4**: 14 months (default), configurable - **Stripe**: Indefinite for subscription data ### Privacy Considerations - PII stored in Mixpanel: `email`, `name` - PII stored in GA4: User properties only (not in events) - PII stored in Stripe: Full customer data ## Environment Variables ```bash # Mixpanel MIXPANEL_PROJECT_TOKEN= # GA4 GA4_MEASUREMENT_ID= # Stripe STRIPE_PUBLISHABLE_KEY= STRIPE_SECRET_KEY= STRIPE_WEBHOOK_SECRET= ``` ## Version History | Version | Date | Changes | |---------|------|---------| | 1.0 | 2026-04-27 | Initial taxonomy for FRE-620 | ## Related Documents - Parent Issue: [FRE-585](/FRE/issues/FRE-585) - Analytics dashboard setup and KPI tracking - Implementation: `src/lib/analytics/` - KPI Definitions: `src/lib/analytics/kpi-service.ts`