PULSE
Real-Time Analytics & Business Intelligence
Real-time analytics and trend analysis for streaming. Track viewers, engagement, revenue, and performance with advanced analytics and custom dashboards.
What is PULSE?
PULSE is WAVE's analytics engine that turns streaming data into business intelligence
PULSE provides real-time analytics and trend analysis that help you understand your audience, optimize performance, and grow revenue.
Every viewer interaction, every buffering event, every conversion is tracked and analyzed in real-time. PULSE uses advanced algorithms to analyze trends, identify issues before they impact viewers, and recommend optimizations.
From live concurrent viewer counts to 90-day retention forecasts, PULSE gives you the data you need to make informed decisions about your streaming strategy.
Comprehensive Metrics Tracking
Audience Metrics
- Concurrent viewers
- Peak viewership
- Average watch time
- Viewer retention
- Geographic distribution
- Device/browser breakdown
Engagement Metrics
- Engagement rate
- Interaction events
- Chat activity
- Click-through rate
- Share rate
- Return viewers
Performance Metrics
- Bitrate quality
- Buffering events
- Error rate
- Latency measurements
- Frame drops
- Connection stability
Business Metrics
- Revenue per stream
- Conversion rate
- CAC and LTV
- Churn rate
- Subscription growth
- ROI tracking
Key Features
Turn data into decisions
Real-Time Analytics
Live viewer metrics, engagement heatmaps, and watch time tracking updated every second
Predictive Intelligence
Advanced analytics predict viewer behavior, revenue trends, and content performance
Custom Dashboards
Build custom dashboards with drag-and-drop widgets and automated reports
Revenue Analytics
Track revenue, conversions, and ROI with integrated payment analytics
PULSE in Action
Real-Time Analytics
import { WaveClient } from '@wave/sdk';
const wave = new WaveClient({ apiKey: process.env.WAVE_API_KEY });
// Get real-time stream analytics
const analytics = await wave.pulse.getStreamAnalytics({
streamId: 'stream_abc123',
realtime: true
});
console.log('Current viewers:', analytics.viewers.current);
console.log('Peak viewers:', analytics.viewers.peak);
console.log('Avg watch time:', analytics.engagement.avgWatchTime);
console.log('Engagement rate:', analytics.engagement.rate);
// Subscribe to real-time updates
wave.pulse.subscribe('stream_abc123', (update) => {
console.log('Viewer count:', update.viewers);
console.log('Bitrate:', update.bitrate);
console.log('Quality:', update.quality);
});Custom Dashboards
// Create custom dashboard
const dashboard = await wave.pulse
.createDashboard({
name: 'Executive Overview',
widgets: [
{ type: 'viewer-count', size: 'large' },
{ type: 'revenue-chart', timeframe: '30d' },
{ type: 'geographic-map' },
{ type: 'engagement-metrics' }
]
});Automated Reports
// Schedule automated reports
await wave.pulse.scheduleReport({
name: 'Weekly Summary',
frequency: 'weekly',
format: 'pdf',
recipients: ['[email protected]'],
metrics: ['viewers', 'revenue', 'engagement']
});Advanced Analytics Examples
Powerful analytics capabilities for every use case
Custom Event Tracking
Track custom business events like button clicks, purchases, and conversions
import { WaveClient } from '@wave/sdk';
import { DesignTokens, getContainer, getSection } from '@/lib/design-tokens';
const wave = new WaveClient({ apiKey: process.env.WAVE_API_KEY });
// Track custom events with properties
await wave.pulse.trackEvent({
event: 'premium_upgrade_clicked',
userId: 'user_123',
properties: {
plan: 'pro',
price: 49.99,
source: 'stream_page',
trial: false
},
timestamp: new Date()
});
// Track conversion events
await wave.pulse.trackConversion({
event: 'subscription_started',
userId: 'user_123',
revenue: 49.99,
currency: 'USD',
properties: {
plan: 'pro',
billing: 'monthly',
referral: 'google_ads'
}
});
// Batch track multiple events
await wave.pulse.trackEvents([
{ event: 'video_watched', userId: 'user_1', properties: { duration: 1200 } },
{ event: 'chat_message_sent', userId: 'user_2', properties: { length: 45 } },
{ event: 'share_clicked', userId: 'user_3', properties: { platform: 'twitter' } }
]);Funnel Analysis
Track multi-step conversion funnels
// Create conversion funnel
const funnel = await wave.pulse.createFunnel({
name: 'Subscription Funnel',
steps: [
{ event: 'stream_viewed', name: 'Viewed Stream' },
{ event: 'signup_started', name: 'Started Signup' },
{ event: 'plan_selected', name: 'Selected Plan' },
{ event: 'payment_entered', name: 'Payment Info' },
{ event: 'subscription_complete', name: 'Completed' }
],
timeWindow: '24h'
});
// Get funnel metrics
const metrics = await wave.pulse.getFunnelMetrics({
funnelId: funnel.id,
timeframe: '30d'
});
console.log('Conversion rate:', metrics.conversionRate);
console.log('Drop-off points:', metrics.dropOffs);Cohort Analysis
Analyze user retention by cohort
// Create cohort analysis
const cohorts = await wave.pulse.analyzeCohorts({
cohortBy: 'signup_date',
period: 'weekly',
retentionEvent: 'stream_viewed',
startDate: '2025-01-01',
endDate: '2025-11-17'
});
// Get cohort retention
cohorts.forEach(cohort => {
console.log(`Week ${cohort.week}: ${cohort.retention}% retained`);
});
// Compare cohorts
const comparison = await wave.pulse.compareCohorts({
cohortA: 'organic',
cohortB: 'paid',
metric: 'retention_rate'
});A/B Test Tracking
Track experiments and feature tests
// Create A/B test
const test = await wave.pulse.createABTest({
name: 'New Player UI',
variants: ['control', 'variant_a', 'variant_b'],
goalEvent: 'premium_upgrade',
trafficAllocation: { control: 34, variant_a: 33, variant_b: 33 }
});
// Track variant exposure
await wave.pulse.trackExperiment({
testId: test.id,
userId: 'user_123',
variant: 'variant_a'
});
// Get test results
const results = await wave.pulse.getTestResults({
testId: test.id,
metric: 'conversion_rate'
});
console.log('Winner:', results.winner);
console.log('Statistical significance:', results.significance);Revenue Attribution
Track revenue sources and attribution
// Track revenue event
await wave.pulse.trackRevenue({
userId: 'user_123',
amount: 49.99,
currency: 'USD',
product: 'pro_monthly',
attribution: {
source: 'google_ads',
medium: 'cpc',
campaign: 'Q4_promo',
touchpoints: ['blog', 'pricing_page', 'stream_demo']
}
});
// Get attribution report
const attribution = await wave.pulse.getAttribution({
model: 'multi_touch', // or 'first_touch', 'last_touch'
timeframe: '90d'
});
console.log('Channel ROI:', attribution.channels);
console.log('Campaign performance:', attribution.campaigns);Export to Data Warehouse
Export analytics to your data warehouse
// Export to BigQuery
await wave.pulse.exportTo({
destination: 'bigquery',
project: 'my-gcp-project',
dataset: 'wave_analytics',
table: 'stream_events',
schedule: 'hourly',
credentials: process.env.GCP_CREDENTIALS
});
// Export to Snowflake
await wave.pulse.exportTo({
destination: 'snowflake',
account: 'my-account',
warehouse: 'ANALYTICS_WH',
database: 'WAVE_DATA',
schema: 'PULSE',
table: 'EVENTS',
schedule: 'daily'
});
// One-time CSV export
const csv = await wave.pulse.exportCSV({
metrics: ['viewers', 'engagement', 'revenue'],
timeframe: '30d',
groupBy: 'day'
});Alert Webhooks
Set up threshold-based alerts
// Create alert rule
await wave.pulse.createAlert({
name: 'High Error Rate',
metric: 'error_rate',
condition: 'greater_than',
threshold: 5, // 5% error rate
duration: '5m', // for 5 minutes
channels: ['slack', 'email', 'webhook'],
webhook: {
url: 'https://hooks.slack.com/services/...',
method: 'POST',
headers: { 'Content-Type': 'application/json' }
}
});
// Create viewer drop alert
await wave.pulse.createAlert({
name: 'Viewer Drop',
metric: 'concurrent_viewers',
condition: 'drops_by',
threshold: 50, // 50% drop
duration: '2m',
channels: ['sms', 'pagerduty']
});Real-Time WebSocket
Subscribe to live metric updates
// Subscribe to real-time updates
const subscription = wave.pulse.subscribe({
streamId: 'stream_abc123',
metrics: ['viewers', 'bitrate', 'errors'],
interval: 1000 // 1 second
});
subscription.on('update', (data) => {
console.log('Viewers:', data.viewers);
console.log('Bitrate:', data.bitrate);
console.log('Errors:', data.errors);
});
subscription.on('alert', (alert) => {
console.log('Alert:', alert.message);
});
// Unsubscribe when done
subscription.unsubscribe();Geographic Heatmap
Analyze viewer distribution by location
// Get geographic distribution
const geoData = await wave.pulse.getGeographicData({
streamId: 'stream_abc123',
timeframe: '24h',
groupBy: 'country'
});
geoData.forEach(location => {
console.log(`${location.country}: ${location.viewers} viewers`);
});
// Get city-level data
const cityData = await wave.pulse.getGeographicData({
streamId: 'stream_abc123',
groupBy: 'city',
minViewers: 100 // only cities with 100+ viewers
});
// Get latency by region
const latency = await wave.pulse.getLatencyByRegion({
streamId: 'stream_abc123'
});Device Segmentation
Analyze by device, browser, and OS
// Get device breakdown
const devices = await wave.pulse.getDeviceBreakdown({
timeframe: '30d',
groupBy: 'device_type'
});
console.log('Mobile:', devices.mobile);
console.log('Desktop:', devices.desktop);
console.log('Tablet:', devices.tablet);
console.log('TV:', devices.tv);
// Get browser/OS stats
const browsers = await wave.pulse.getBrowserStats({
timeframe: '30d',
metrics: ['viewers', 'avg_quality', 'error_rate']
});
// Compare performance by device
const performance = await wave.pulse.compareDevices({
metric: 'buffering_rate',
devices: ['mobile', 'desktop']
});Pre-Built Dashboard Templates
Start with proven dashboard layouts for common use cases
Executive Overview
High-level KPIs for executives and stakeholders
Marketing Performance
Conversion funnels and campaign attribution
Technical Operations
Stream health, errors, and performance monitoring
Content Performance
Popular videos, engagement metrics, and content analytics
Explore PULSE analytics capabilities
Complete Metrics Glossary
Understand every metric PULSE tracks and how to improve them
Audience Metrics
Concurrent Viewers
Number of viewers watching at the exact same moment.
How to improve: Promote streams in advance, optimize start times for your audience's time zones.
Peak Viewership
Maximum concurrent viewers during a stream.
Benchmark: Top streams hit peak at 15-20 minutes. Industry avg: 150% of avg concurrent.
Average Watch Time
Mean duration viewers stay on your stream.
How to improve: Hook viewers in first 30 seconds, segment long streams, add interactive elements.
Viewer Retention Rate
Percentage of viewers who stay until end.
Benchmark: 60%+ is excellent, 40-60% is good, <40% needs improvement.
Return Viewer Rate
Percentage of viewers who watch multiple streams.
How to improve: Consistent schedule, quality content, build community through chat.
Engagement Metrics
Engagement Rate
Percentage of viewers who interact (chat, reactions, clicks).
Benchmark: 30%+ is excellent. Formula: (interactions / total viewers) × 100
Chat Activity
Messages per minute during stream.
How to improve: Ask questions, respond to chat, create polls, encourage discussion.
Click-Through Rate (CTR)
Percentage clicking on CTA buttons or links.
Benchmark: 5-10% is good, 10%+ is excellent. Test different CTA placements.
Share Rate
Percentage of viewers who share your stream.
How to improve: Make sharing easy, incentivize shares, create shareable moments.
Interaction Events
Total reactions, emojis, and engagement actions.
Higher = more engaged audience. Track trends over time to measure content quality.
Performance Metrics
Bitrate Quality
Average streaming bitrate delivered to viewers.
Target: 1080p = 4-6 Mbps, 720p = 2-4 Mbps. Higher = better quality but more bandwidth.
Buffering Rate
Percentage of viewers experiencing buffering.
Target: <2%. How to improve: Use adaptive bitrate, optimize encoding, check CDN coverage.
Error Rate
Percentage of playback errors or failed loads.
Target: <0.5%. Monitor for spikes indicating infrastructure issues.
Latency (Glass-to-Glass)
Time from camera to viewer screen.
OMT: <16ms, WebRTC: <500ms, HLS: 6-30s. Lower = more interactive experience.
Frame Drop Rate
Percentage of frames dropped during playback.
Target: <1%. Indicates client performance issues or bandwidth constraints.
Business Metrics
Conversion Rate
Percentage of viewers who complete desired action (signup, purchase).
Benchmark: 2-5% is typical, 10%+ is excellent. A/B test CTAs and landing pages.
Revenue Per Stream
Average revenue generated per streaming session.
Formula: Total revenue / Number of streams. Track trends to measure ROI.
Customer Acquisition Cost (CAC)
Cost to acquire one new customer through streaming.
Formula: Marketing spend / New customers. Should be <30% of Customer Lifetime Value.
Lifetime Value (LTV)
Predicted revenue from a customer over their lifetime.
Target: LTV:CAC ratio of 3:1 or higher. Improve via retention and upsells.
Churn Rate
Percentage of subscribers who cancel in a period.
Target: <5% monthly. Monitor closely and implement retention strategies early.
Third-Party Integrations
Connect PULSE with your existing analytics and BI tools
Google Analytics 4
Bidirectional sync between PULSE and GA4 for unified analytics
Export Events to GA4
Send viewer events, conversions, and custom events
Import GA4 Data
Pull website metrics and attribution data into PULSE
Unified User Tracking
Match viewers across website and streams
// Setup GA4 integration
await wave.pulse.integrations.connectGA4({
measurementId: 'G-XXXXXXXXXX',
apiSecret: process.env.GA4_API_SECRET,
exportEvents: ['stream_view', 'conversion'],
importGoals: true
});View Setup GuideMixpanel
Forward streaming events to Mixpanel for product analytics
Real-Time Event Forwarding
Stream all viewer events to Mixpanel
User Profile Enrichment
Enhance profiles with streaming behavior data
Funnel Analysis
Build funnels combining web and stream events
// Setup Mixpanel integration
await wave.pulse.integrations.connectMixpanel({
projectToken: process.env.MIXPANEL_TOKEN,
forwardEvents: 'all', // or specific events
enrichUserProfiles: true
});View Setup GuideAmplitude
Export cohorts and behavioral data to Amplitude
Cohort Export
Send viewer cohorts to Amplitude for targeting
Behavioral Sync
Track streaming behavior in Amplitude charts
Retention Analysis
Analyze retention using combined data
// Setup Amplitude integration
await wave.pulse.integrations.connectAmplitude({
apiKey: process.env.AMPLITUDE_API_KEY,
exportCohorts: true,
syncInterval: '1h'
});View Setup GuideSegment
Route PULSE data through Segment's CDP to all your tools
Single Integration Point
Send data to 300+ destinations via Segment
Data Governance
Control data flow with Segment's protocols
Identity Resolution
Unify user identities across platforms
// Setup Segment integration
await wave.pulse.integrations.connectSegment({
writeKey: process.env.SEGMENT_WRITE_KEY,
trackAllEvents: true,
identifyUsers: true
});View Setup GuidePricing
PULSE analytics included with all WAVE plans
Real-time analytics, custom dashboards, and automated reports are included with all WAVE subscriptions at no additional cost.
- Unlimited custom dashboards
- Real-time viewer tracking
- Automated report generation
- Data export (CSV, JSON, PDF)
Frequently Asked Questions
Everything you need to know about PULSE
How real-time are the analytics?
PULSE analytics have sub-second latency. Viewer counts update within 500ms. Engagement metrics refresh every second. Bandwidth and quality metrics stream in real-time via WebSocket connection. See viewer joins/leaves as they happen. Perfect for live events where you need instant feedback. Historical data is available with millisecond-precision timestamps for detailed analysis.
What metrics does PULSE track?
PULSE tracks 100+ metrics across 4 categories: Audience (viewers, retention, geography, devices), Engagement (interactions, chat, shares, click-through), Performance (bitrate, buffering, errors, latency), and Business (revenue, conversions, CAC, LTV, churn). Custom events let you track anything specific to your application. All metrics are exportable via API or CSV.
Can I export analytics data?
Yes, PULSE supports multiple export formats. Download CSV files for spreadsheet analysis. Export to Google Sheets with automatic sync. Use REST API to pull data programmatically. Integrate with data warehouses (Snowflake, BigQuery, Redshift). Set up automated email reports (daily, weekly, monthly). Real-time streaming exports via webhooks for BI tools. All data is yours to use however you need.
How long is analytics data retained?
Starter plans retain 30 days of detailed analytics with unlimited summary data. Professional plans retain 1 year of full-resolution data. Enterprise plans have unlimited retention with custom retention policies. Archived data remains accessible but moves to cheaper storage. All plans include real-time access to current data. No data is ever deleted without your explicit permission.
Can I track custom events?
Yes, PULSE supports custom event tracking via JavaScript API. Track button clicks, form submissions, purchases, sign-ups, or any user action. Pass custom properties with each event for detailed segmentation. Create custom dashboards and funnels around your events. Perfect for tracking business-specific metrics like conversions or upsells. Events integrate seamlessly with standard PULSE metrics.
Does PULSE integrate with Google Analytics?
Yes, PULSE offers two-way sync with Google Analytics. Send PULSE events to GA4 automatically. Import GA4 conversion data into PULSE. Also supports Mixpanel, Amplitude, and Segment integrations. Use our REST API to connect with any analytics platform. Combine streaming metrics with website analytics for complete picture. Privacy-compliant with GDPR and CCPA regulations.
Can I create custom metrics in PULSE?
Absolutely! PULSE allows you to define custom calculated metrics using our formula builder. Combine existing metrics with mathematical operations, create ratios, or define custom business logic. For example, create "Revenue per Concurrent Viewer" by dividing total revenue by peak viewers. Custom metrics appear alongside standard metrics in dashboards and can be used in alerts and reports. Perfect for tracking unique business KPIs specific to your streaming platform.
How do I share dashboards with my team?
PULSE dashboards have flexible sharing options. Share via unique URL with customizable permissions (view-only, edit, or admin). Embed dashboards in your internal tools using iframe or JavaScript widget. Schedule automated dashboard snapshots to email or Slack. Export dashboards as PDF reports. Set up role-based access control for team members. Dashboards update in real-time for all viewers. Enterprise plans include SSO integration and advanced permissions.
What is the difference between concurrent and peak viewers?
Concurrent viewers is the number watching at a specific moment in time - it fluctuates constantly throughout your stream. Peak viewers is the maximum concurrent viewer count reached during a stream - the highest point on the concurrent viewer graph. For example, you might have 1,000 concurrent viewers right now, but peaked at 2,500 earlier. Peak viewers is useful for capacity planning and comparing stream performance, while concurrent is essential for real-time monitoring.
Can I backfill historical analytics data?
Yes, PULSE supports historical data import for migrations and integrations. Upload CSV files with timestamped events to backfill gaps. Import from legacy analytics platforms via API. Historical data maintains full fidelity including all properties and metadata. Backfilled data integrates seamlessly with live data for continuous trend analysis. Useful when migrating from another platform or recovering from data collection issues. Enterprise plans include assisted migration services.
How do automated alerts work?
PULSE alerts monitor your metrics 24/7 and notify you when thresholds are crossed. Set conditions like "viewer count drops by 50%" or "error rate exceeds 2%". Choose notification channels: email, SMS, Slack, webhook, or PagerDuty. Configure alert severity levels and escalation policies. Alerts can be time-based (e.g., only during business hours) or conditional (e.g., only alert if event lasts 5+ minutes). Smart alerts use ML to reduce false positives and adapt to your traffic patterns.
Is PULSE GDPR and CCPA compliant?
Yes, PULSE is fully compliant with GDPR, CCPA, and major privacy regulations. We provide built-in consent management, user opt-out mechanisms, and data deletion tools. All personal data is encrypted at rest and in transit. You can anonymize viewer data while preserving analytical value. Data processing agreements (DPA) available for enterprise customers. Geographic data restrictions to keep EU data in EU servers. Regular third-party privacy audits. You maintain full ownership and control of your analytics data at all times.
What Customers Say About PULSE
Data-driven decisions start with PULSE
SportsTech Inc
Sports Broadcasting
“PULSE analytics helped us increase viewer engagement by 47% in just 3 months. The real-time insights let us optimize content while streams are live.”
Michael Chen
CTO
Analyze Everything
PULSE provides insights for your entire streaming workflow
PIPELINE
Track live stream performance with PULSE. Monitor concurrent viewers, bandwidth, and quality in real-time.
View Live Stream AnalyticsVAULT
Analyze VOD performance with PULSE. Track watch time, completion rates, and engagement for recorded content.
View VOD AnalyticsCONNECT
Access PULSE data programmatically via REST API. Build custom dashboards and integrate with your BI tools.
Explore Data IntegrationReady to Understand Your Audience?
Make data-driven decisions with WAVE PULSE analytics