Woopra Event Tracking: Real-Time Actions | OpsBlu Docs

Woopra Event Tracking: Real-Time Actions

How to track custom events in Woopra for real-time customer journey analysis. Covers woopra.track(), people profiles, AppConnect automation, and...

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');
// 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