Event Tracking Overview
Woopra excels at tracking individual customer journeys through comprehensive event tracking. Events capture specific user actions and can be enriched with custom properties to create detailed customer profiles. Combined with user identification, events enable powerful segmentation, automation, and behavioral analysis.
Basic Event Tracking
Track events using the woopra.track() method:
// Simple event
woopra.track('button_clicked');
// Event with properties
woopra.track('signup_completed', {
plan: 'professional',
billing_cycle: 'annual',
source: 'homepage'
});
// Event with revenue
woopra.track('purchase', {
product_id: 'PROD-123',
product_name: 'Enterprise Plan',
price: 999,
currency: 'USD',
quantity: 1
});
User Identification
Identify users to track their complete journey:
// Identify a user
woopra.identify({
email: 'user@example.com',
name: 'Jane Doe',
company: 'Acme Corp',
plan: 'Enterprise',
signup_date: '2024-01-15',
mrr: 999
});
// Then track events
woopra.track('feature_used', {
feature: 'advanced_reports'
});
// User profile is enriched with event history
User Properties vs Event Properties
Distinguish between user properties and event properties:
// User properties - persistent attributes
woopra.identify({
email: 'user@example.com', // Who they are
name: 'Jane Doe',
company: 'Acme Corp',
plan: 'Enterprise', // Current state
role: 'Admin',
lifetime_value: 5000
});
// Event properties - contextual data
woopra.track('report_generated', {
report_type: 'sales', // What happened
date_range: 'last_30_days',
export_format: 'pdf',
file_size: '2.3MB'
});
Common Event Patterns
Lifecycle Events
// Acquisition
woopra.track('signup_started', {
source: 'google_ads',
campaign: 'summer_sale',
landing_page: '/pricing'
});
woopra.track('signup_completed', {
plan: 'starter',
trial_length: 14
});
// Activation
woopra.track('onboarding_step_completed', {
step_number: 3,
step_name: 'connect_integration'
});
woopra.track('first_value_received', {
action: 'first_report_created',
time_to_value: 180 // seconds since signup
});
// Engagement
woopra.track('feature_used', {
feature: 'collaboration',
usage_count: 5
});
// Revenue
woopra.track('subscription_created', {
plan: 'professional',
billing_cycle: 'annual',
amount: 990
});
// Retention
woopra.track('renewed_subscription', {
previous_plan: 'professional',
new_plan: 'business',
years_as_customer: 2
});
// Churn
woopra.track('subscription_cancelled', {
cancellation_reason: 'switching_to_competitor',
feedback: 'needed better integrations'
});
E-commerce Events
// Product browsing
woopra.track('product_viewed', {
product_id: 'SKU-456',
product_name: 'Widget Pro',
category: 'hardware',
price: 299,
inventory_status: 'in_stock'
});
// Shopping cart
woopra.track('add_to_cart', {
product_id: 'SKU-456',
quantity: 2,
cart_subtotal: 598
});
woopra.track('remove_from_cart', {
product_id: 'SKU-123',
reason: 'price_too_high'
});
// Checkout
woopra.track('checkout_started', {
cart_value: 598,
items_count: 2,
has_discount_code: true
});
woopra.track('payment_info_added', {
payment_method: 'credit_card'
});
woopra.track('order_completed', {
order_id: 'ORD-789',
total: 538.20,
discount: 59.80,
shipping: 0,
tax: 0,
items_count: 2
});
Product Usage Events
// Feature adoption
woopra.track('feature_discovered', {
feature: 'advanced_analytics',
discovery_method: 'in_app_notification'
});
woopra.track('feature_first_used', {
feature: 'advanced_analytics',
days_since_signup: 7
});
// Content creation
woopra.track('content_created', {
content_type: 'dashboard',
template_used: false,
widgets_count: 5
});
// Collaboration
woopra.track('user_invited', {
invited_role: 'editor',
team_size_after: 8
});
woopra.track('content_shared', {
share_type: 'link',
permissions: 'view_only',
expiration: '30_days'
});
// Data operations
woopra.track('data_exported', {
export_format: 'csv',
record_count: 1500,
file_size_mb: 3.2
});
Account-Level Tracking
Track account properties for B2B applications:
// Set account properties
woopra.identify({
// User properties
email: 'jane@acme.com',
name: 'Jane Doe',
// Account properties
company: 'Acme Corp',
account_id: 'ACC-123',
account_plan: 'Enterprise',
account_mrr: 999,
account_employees: 150,
account_industry: 'Technology',
account_created_date: '2023-01-15'
});
// Track account-level events
woopra.track('account_upgraded', {
from_plan: 'Professional',
to_plan: 'Enterprise',
seats_added: 50,
contract_value: 50000
});
Revenue Tracking
Track monetary values for revenue analytics:
// Subscription revenue
woopra.track('subscription_payment', {
amount: 99,
currency: 'USD',
plan: 'Professional',
billing_cycle: 'monthly',
payment_method: 'credit_card'
});
// One-time purchase
woopra.track('one_time_purchase', {
amount: 499,
currency: 'USD',
product: 'Advanced Feature Pack',
payment_method: 'paypal'
});
// Update customer LTV
woopra.identify({
lifetime_value: 5000,
total_purchases: 12,
average_order_value: 416
});
Automation Triggers
Events can trigger automated actions in Woopra:
// Track events that trigger automation
woopra.track('cart_abandoned', {
cart_value: 299,
items_count: 3,
time_in_cart: 15 // minutes
});
// Automation: Send cart abandonment email
woopra.track('free_trial_ending', {
days_remaining: 3,
plan_interest: 'Professional',
usage_score: 85
});
// Automation: Send upgrade offer email
woopra.track('user_at_risk', {
days_since_login: 14,
engagement_score: 20
});
// Automation: Notify customer success team
Funnel and Segmentation
Track events for funnel analysis:
// Acquisition funnel
woopra.track('landing_page_visited', {
source: 'google',
campaign: 'brand_search'
});
woopra.track('pricing_page_viewed');
woopra.track('signup_form_started');
woopra.track('email_verified');
woopra.track('trial_activated', {
plan: 'Professional'
});
// Conversion funnel
woopra.track('feature_limit_reached', {
feature: 'reports',
current_plan: 'Starter'
});
woopra.track('upgrade_modal_viewed');
woopra.track('plan_comparison_viewed');
woopra.track('payment_page_reached');
woopra.track('subscription_upgraded', {
from_plan: 'Starter',
to_plan: 'Professional'
});
Event Naming Best Practices
Use Clear, Consistent Names
// Good - descriptive, past tense
woopra.track('report_generated');
woopra.track('user_invited');
woopra.track('payment_completed');
// Avoid - vague or inconsistent
woopra.track('click');
woopra.track('generate');
woopra.track('Payment-Done');
Group Related Events
// User onboarding flow
woopra.track('onboarding_started');
woopra.track('onboarding_profile_completed');
woopra.track('onboarding_preferences_set');
woopra.track('onboarding_integrations_connected');
woopra.track('onboarding_completed');
// Support interaction flow
woopra.track('support_ticket_created');
woopra.track('support_ticket_updated');
woopra.track('support_ticket_resolved');
woopra.track('support_feedback_provided');
Server-Side Event Tracking
Track events from your backend:
// Node.js example
const axios = require('axios');
async function trackServerEvent(userId, eventName, properties = {}) {
await axios.post('https://www.woopra.com/track/ce/', {
project: 'YOUR_PROJECT_KEY',
cookie: userId,
event: eventName,
...properties
});
}
// Track server-side events
trackServerEvent('user-123', 'payment_processed', {
amount: 99,
status: 'success',
processor: 'stripe',
processing_time: 245
});
trackServerEvent('user-123', 'api_call_made', {
endpoint: '/api/v2/reports',
method: 'POST',
response_time: 145,
status_code: 201
});
Real-Time Tracking
Woopra processes events in real-time:
// Events appear in dashboard within seconds
woopra.track('live_support_requested', {
page: '/pricing',
time_on_page: 45,
scrolldepth: 75
});
// View in Real-Time tab in Woopra dashboard
// Trigger immediate notifications or automations
Event Validation
Test events are tracking correctly:
// Check if Woopra is loaded
if (typeof woopra !== 'undefined') {
console.log('Woopra loaded successfully');
// Track test event
woopra.track('test_event', {
test: true,
timestamp: new Date().toISOString()
});
console.log('Test event tracked');
} else {
console.error('Woopra not loaded');
}
// Check browser network tab for POST to woopra.com/track
// Verify in Woopra dashboard under People or Events
Integration with Customer Data
Enrich events with CRM data:
// Sync Salesforce data
woopra.identify({
email: 'lead@company.com',
// CRM data
salesforce_lead_id: 'LEAD-456',
lead_score: 85,
lead_source: 'Webinar',
sales_owner: 'john@sales.com',
opportunity_stage: 'Qualification'
});
// Track events with CRM context
woopra.track('demo_requested', {
product_interest: 'Enterprise',
company_size: '500-1000',
budget: 'confirmed'
});
Viewing Event Data
Access tracked events in Woopra:
- People Profiles: View individual customer timelines
- Events Tab: See all event types and volumes
- Funnels: Build conversion funnels with events
- Reports: Create custom event reports
- Trends: Track event trends over time
- Segments: Create segments based on events
- Triggers: Set up automation based on events
- Dashboards: Visualize event metrics