Email Tracking
Track email delivery, opens, clicks, and conversions with comprehensive analytics and real-time monitoring capabilities.
Email Tracking & Analytics
Monitor your email performance with comprehensive tracking capabilities. Track deliverability, opens, clicks, conversions, and user engagement with real-time analytics and detailed reporting.
Email Delivery Tracking
Monitor email delivery status and identify delivery issues:
import { OMXClient } from '@omx-sdk/email';
const omx = new OMXClient({
clientId: 'your_client_id',
secretKey: 'your_secret_key'
});
// Send email with tracking enabled
const result = await omx.email.send({
to: 'user@example.com',
subject: 'Welcome to our platform',
template: 'welcome_email',
// Enable delivery tracking
tracking: {
delivery: true,
opens: true,
clicks: true,
unsubscribes: true
},
// Custom tracking parameters
metadata: {
campaignId: 'welcome_campaign_2024',
userSegment: 'new_users',
source: 'signup_flow'
}
});
// Get delivery status
const deliveryStatus = await omx.email.getDeliveryStatus(result.messageId);
console.log(deliveryStatus);
// {
// messageId: 'msg_123456',
// status: 'delivered',
// timestamp: '2024-01-15T10:30:00Z',
// recipient: 'user@example.com',
// deliveryAttempts: 1,
// latency: 2.3, // seconds
// provider: 'gmail',
// bounceReason: null
// }
// Track delivery events in real-time
const deliveryStream = omx.email.streamDeliveryEvents();
deliveryStream.on('delivered', (event) => {
console.log(`Email ${event.messageId} delivered to ${event.recipient}`);
updateDeliveryMetrics(event);
});
deliveryStream.on('bounced', (event) => {
console.log(`Email bounced: ${event.bounceReason}`);
handleBounce(event);
});
deliveryStream.on('complaint', (event) => {
console.log(`Spam complaint from ${event.recipient}`);
handleComplaint(event);
});Open and Click Tracking
Track when recipients open emails and click on links:
// Email with advanced tracking
const trackedEmail = await omx.email.send({
to: 'user@example.com',
template: 'newsletter',
tracking: {
// Open tracking with detailed analytics
opens: {
enabled: true,
trackLocation: true,
trackDevice: true,
trackReads: true, // Track read time
pixelless: false // Use 1x1 pixel tracking
},
// Click tracking with link analytics
clicks: {
enabled: true,
trackAllLinks: true,
customDomains: ['track.yourapp.com'],
// Custom tracking for specific links
customLinks: {
'cta_button': { goal: 'conversion', value: 50 },
'product_link': { goal: 'product_view', category: 'electronics' }
}
},
// UTM parameters for analytics integration
utm: {
source: 'email',
medium: 'newsletter',
campaign: 'january_2024',
content: 'main_cta'
}
}
});
// Get open tracking data
const openData = await omx.email.getOpenTracking(result.messageId);
console.log(openData);
// {
// messageId: 'msg_123456',
// opens: [
// {
// timestamp: '2024-01-15T11:00:00Z',
// userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X)...',
// device: { type: 'mobile', os: 'iOS', browser: 'Mobile Safari' },
// location: { country: 'US', city: 'New York', region: 'NY' },
// readTime: 45, // seconds
// isUnique: true
// }
// ],
// uniqueOpens: 1,
// totalOpens: 3,
// openRate: 0.75,
// avgReadTime: 32
// }
// Get click tracking data
const clickData = await omx.email.getClickTracking(result.messageId);
console.log(clickData);
// {
// messageId: 'msg_123456',
// clicks: [
// {
// timestamp: '2024-01-15T11:05:00Z',
// url: 'https://yourapp.com/products/123',
// linkId: 'product_link',
// userAgent: 'Mozilla/5.0...',
// device: { type: 'mobile', os: 'iOS' },
// location: { country: 'US', city: 'New York' },
// isUnique: true
// }
// ],
// uniqueClicks: 1,
// totalClicks: 2,
// clickRate: 0.15,
// clickToOpenRate: 0.20
// }Campaign Analytics
Analyze performance across email campaigns and segments:
// Get campaign analytics
const campaignAnalytics = await omx.email.getCampaignAnalytics('welcome_campaign_2024', {
startDate: '2024-01-01',
endDate: '2024-01-31',
granularity: 'daily',
// Metrics to include
metrics: [
'sent',
'delivered',
'bounced',
'opened',
'clicked',
'unsubscribed',
'complained',
'conversions'
],
// Breakdown by segments
segmentBy: ['userSegment', 'device', 'location']
});
console.log(campaignAnalytics);
// {
// campaign: 'welcome_campaign_2024',
// period: { start: '2024-01-01', end: '2024-01-31' },
//
// summary: {
// sent: 12500,
// delivered: 12180,
// deliveryRate: 0.974,
// bounced: 320,
// bounceRate: 0.026,
// opened: 4876,
// openRate: 0.40,
// uniqueOpens: 4123,
// uniqueOpenRate: 0.34,
// clicked: 732,
// clickRate: 0.06,
// uniqueClicks: 651,
// uniqueClickRate: 0.053,
// clickToOpenRate: 0.15,
// unsubscribed: 45,
// unsubscribeRate: 0.004,
// complained: 8,
// complaintRate: 0.0007,
// conversions: 89,
// conversionRate: 0.007
// },
//
// timeline: [
// { date: '2024-01-01', sent: 450, opened: 180, clicked: 27 },
// { date: '2024-01-02', sent: 520, opened: 208, clicked: 31 }
// ],
//
// segments: {
// userSegment: {
// 'new_users': { sent: 8000, openRate: 0.45, clickRate: 0.08 },
// 'existing_users': { sent: 4500, openRate: 0.32, clickRate: 0.04 }
// },
// device: {
// 'mobile': { opens: 2800, openRate: 0.42, avgReadTime: 28 },
// 'desktop': { opens: 1900, openRate: 0.38, avgReadTime: 45 }
// }
// }
// }
// Compare campaign performance
const comparison = await omx.email.compareCampaigns([
'welcome_campaign_2024',
'promotional_campaign_2024',
'newsletter_campaign_2024'
], {
metrics: ['openRate', 'clickRate', 'conversionRate'],
timeRange: '30d'
});
// Get industry benchmarks
const benchmarks = await omx.email.getBenchmarks({
industry: 'e-commerce',
emailType: 'promotional',
region: 'US'
});
console.log('Your performance vs benchmarks:', {
yourOpenRate: campaignAnalytics.summary.openRate,
benchmarkOpenRate: benchmarks.openRate,
performance: campaignAnalytics.summary.openRate > benchmarks.openRate ? 'above' : 'below'
});User Engagement Tracking
Track individual user engagement patterns and behavior:
// Get user engagement profile
const userEngagement = await omx.email.getUserEngagement('user@example.com', {
timeRange: '90d',
includeDetails: true
});
console.log(userEngagement);
// {
// email: 'user@example.com',
// engagementScore: 75, // 0-100 scale
//
// summary: {
// emailsReceived: 45,
// emailsOpened: 32,
// emailsClicked: 12,
// avgOpenTime: 18, // hours after send
// avgReadTime: 34, // seconds
// mostActiveDay: 'tuesday',
// mostActiveTime: '10:00-11:00',
// preferredDevice: 'mobile'
// },
//
// preferences: {
// frequency: 'weekly',
// categories: ['product_updates', 'promotions'],
// unsubscribedCategories: ['newsletters'],
// timezone: 'America/New_York'
// },
//
// recentActivity: [
// {
// messageId: 'msg_789',
// campaign: 'welcome_series',
// action: 'clicked',
// timestamp: '2024-01-14T10:30:00Z',
// link: 'product_page'
// }
// ]
// }
// Track engagement over time
const engagementTrend = await omx.email.getEngagementTrend('user@example.com', {
timeRange: '6m',
granularity: 'weekly'
});
// Segment users by engagement level
const engagementSegments = await omx.email.segmentByEngagement({
criteria: {
highly_engaged: { openRate: '> 0.6', clickRate: '> 0.1' },
moderately_engaged: { openRate: '0.2-0.6', clickRate: '0.02-0.1' },
low_engaged: { openRate: '< 0.2', clickRate: '< 0.02' },
inactive: { lastOpen: '> 30d' }
},
timeRange: '90d'
});
console.log('Engagement segments:', engagementSegments);
// {
// highly_engaged: { count: 1250, percentage: 25 },
// moderately_engaged: { count: 2750, percentage: 55 },
// low_engaged: { count: 800, percentage: 16 },
// inactive: { count: 200, percentage: 4 }
// }Conversion Tracking
Track email-driven conversions and revenue attribution:
// Set up conversion tracking
const conversionTracking = await omx.email.setupConversions({
events: [
{
name: 'purchase',
value: 'revenue',
attributionWindow: '7d',
trackingMethod: 'utm'
},
{
name: 'signup',
value: 50, // fixed value
attributionWindow: '3d',
trackingMethod: 'pixel'
},
{
name: 'trial_start',
value: 25,
attributionWindow: '24h',
trackingMethod: 'api'
}
],
// Conversion pixel
pixel: {
enabled: true,
domains: ['yourapp.com', 'checkout.yourapp.com']
}
});
// Track conversions via API
await omx.email.trackConversion({
messageId: 'msg_123456',
userId: 'user_789',
event: 'purchase',
value: 129.99,
currency: 'USD',
// Additional context
metadata: {
orderId: 'ORD-12345',
products: ['product_a', 'product_b'],
category: 'electronics'
},
timestamp: new Date().toISOString()
});
// Get conversion analytics
const conversionAnalytics = await omx.email.getConversionAnalytics({
campaigns: ['welcome_campaign_2024'],
events: ['purchase', 'signup'],
timeRange: '30d',
breakdown: {
by: ['campaign', 'email_template', 'user_segment'],
includeAttribution: true
}
});
console.log(conversionAnalytics);
// {
// summary: {
// totalConversions: 156,
// totalRevenue: 18750.50,
// conversionRate: 0.012,
// revenuePerEmail: 1.50,
// avgOrderValue: 120.20,
// roas: 12.5 // Return on ad spend
// },
//
// attribution: {
// direct: { conversions: 89, revenue: 10680.30 },
// assisted: { conversions: 67, revenue: 8070.20 }
// },
//
// breakdown: {
// by_campaign: [
// {
// campaign: 'welcome_campaign_2024',
// conversions: 89,
// revenue: 10750.30,
// conversionRate: 0.015
// }
// ],
//
// by_template: [
// {
// template: 'welcome_email',
// conversions: 45,
// revenue: 5400.20,
// conversionRate: 0.018
// }
// ]
// }
// }
// Revenue attribution analysis
const attributionAnalysis = await omx.email.getAttributionAnalysis({
timeRange: '90d',
models: ['first_touch', 'last_touch', 'linear', 'time_decay'],
includeAssisted: true
});Real-time Monitoring
Monitor email performance in real-time with alerts and dashboards:
// Set up real-time monitoring
const monitor = await omx.email.createMonitor({
name: 'Email Performance Monitor',
// Metrics to monitor
metrics: [
{ name: 'deliveryRate', threshold: { min: 0.95 } },
{ name: 'bounceRate', threshold: { max: 0.05 } },
{ name: 'complaintRate', threshold: { max: 0.001 } },
{ name: 'openRate', threshold: { min: 0.20 } },
{ name: 'clickRate', threshold: { min: 0.02 } }
],
// Time windows for analysis
windows: ['1h', '6h', '24h'],
// Alert configuration
alerts: {
email: {
recipients: ['admin@yourapp.com'],
severity: ['critical', 'warning']
},
webhook: {
url: 'https://yourapp.com/alerts/email',
secret: 'alert_webhook_secret'
},
slack: {
channel: '#email-alerts',
webhook: process.env.SLACK_WEBHOOK_URL
}
}
});
// Real-time event stream
const eventStream = omx.email.createEventStream({
events: ['delivered', 'opened', 'clicked', 'bounced', 'complained'],
filters: {
campaigns: ['welcome_campaign_2024'],
timeWindow: '1h'
}
});
eventStream.on('event', (event) => {
// Update real-time dashboard
updateDashboard(event);
// Check for anomalies
if (detectAnomaly(event)) {
triggerAlert(event);
}
});
// Get real-time metrics
const realtimeMetrics = await omx.email.getRealtimeMetrics({
timeWindow: '1h',
granularity: '5m'
});
console.log('Last hour metrics:', realtimeMetrics);
// {
// timestamp: '2024-01-15T15:00:00Z',
// sent: 1250,
// delivered: 1205,
// opened: 482,
// clicked: 73,
// bounced: 45,
// complaints: 2,
//
// rates: {
// delivery: 0.964,
// open: 0.40,
// click: 0.058,
// bounce: 0.036,
// complaint: 0.0016
// },
//
// trends: {
// delivery: 'stable',
// open: 'increasing',
// click: 'stable',
// bounce: 'decreasing'
// }
// }
// Anomaly detection
const anomalies = await omx.email.detectAnomalies({
metrics: ['openRate', 'clickRate', 'bounceRate'],
sensitivity: 'medium',
timeRange: '7d'
});
if (anomalies.length > 0) {
console.log('Detected anomalies:', anomalies);
// [
// {
// metric: 'bounceRate',
// value: 0.087,
// expected: 0.025,
// severity: 'high',
// timestamp: '2024-01-15T14:30:00Z'
// }
// ]
}Advanced Analytics
Leverage advanced analytics features for deeper insights:
// Cohort analysis
const cohortAnalysis = await omx.email.getCohortAnalysis({
cohortBy: 'signup_month',
metric: 'engagement_score',
timeRange: '12m',
cohortDefinition: {
period: 'month',
size: 'auto'
}
});
// Heat map analysis
const heatMap = await omx.email.getHeatMapAnalysis({
dimension: 'send_time',
metric: 'open_rate',
granularity: 'hour',
filters: {
campaigns: ['newsletter'],
userSegment: 'active_users',
timeRange: '30d'
}
});
// Funnel analysis
const funnelAnalysis = await omx.email.getFunnelAnalysis({
steps: [
{ name: 'sent', event: 'email_sent' },
{ name: 'delivered', event: 'email_delivered' },
{ name: 'opened', event: 'email_opened' },
{ name: 'clicked', event: 'email_clicked' },
{ name: 'converted', event: 'purchase' }
],
breakdown: {
by: ['campaign', 'user_segment', 'device'],
timeRange: '30d'
}
});
console.log('Funnel conversion rates:', funnelAnalysis.conversionRates);
// {
// 'sent_to_delivered': 0.974,
// 'delivered_to_opened': 0.412,
// 'opened_to_clicked': 0.145,
// 'clicked_to_converted': 0.089
// }
// Predictive analytics
const predictions = await omx.email.getPredictions({
model: 'engagement_prediction',
predictions: [
{ type: 'open_probability', userId: 'user_123' },
{ type: 'click_probability', userId: 'user_123' },
{ type: 'unsubscribe_risk', userId: 'user_123' },
{ type: 'lifetime_value', userId: 'user_123' }
],
features: {
includeHistorical: true,
includeBehavioral: true,
includeDemographic: true
}
});
// A/B test analysis
const abTestResults = await omx.email.getABTestResults('test_123', {
metrics: ['open_rate', 'click_rate', 'conversion_rate'],
confidenceLevel: 0.95,
analysis: {
includeSegmentation: true,
includeStatisticalSignificance: true,
includeEffectSize: true
}
});
console.log('A/B Test Results:', abTestResults);
// {
// testId: 'test_123',
// status: 'completed',
// winner: 'variant_b',
//
// results: {
// control: {
// participants: 1000,
// openRate: 0.384,
// clickRate: 0.056,
// conversionRate: 0.012
// },
// variant_b: {
// participants: 1000,
// openRate: 0.421,
// clickRate: 0.074,
// conversionRate: 0.018
// }
// },
//
// significance: {
// openRate: { pValue: 0.032, significant: true },
// clickRate: { pValue: 0.018, significant: true },
// conversionRate: { pValue: 0.089, significant: false }
// },
//
// recommendation: 'Deploy variant B - shows 9.6% improvement in open rate'
// }Data Export and Integration
Export tracking data and integrate with external analytics platforms:
// Export analytics data
const exportRequest = await omx.email.exportData({
type: 'campaign_analytics',
format: 'csv', // 'csv', 'json', 'excel'
filters: {
campaigns: ['welcome_campaign_2024'],
dateRange: { start: '2024-01-01', end: '2024-01-31' }
},
fields: [
'messageId',
'recipient',
'sentAt',
'deliveredAt',
'openedAt',
'clickedAt',
'conversions'
],
delivery: {
method: 'download', // 'download', 'email', 's3'
email: 'analytics@yourapp.com'
}
});
// Integration with Google Analytics
await omx.email.integrateGA4({
measurementId: 'G-XXXXXXXXXX',
apiSecret: 'api_secret_here',
eventMapping: {
'email_sent': 'email_campaign_sent',
'email_opened': 'email_campaign_opened',
'email_clicked': 'email_campaign_clicked'
},
customDimensions: {
'campaign_name': 'custom_dimension_1',
'user_segment': 'custom_dimension_2'
}
});
// Integration with Mixpanel
await omx.email.integrateMixpanel({
projectToken: 'mixpanel_token',
eventTracking: {
trackOpens: true,
trackClicks: true,
trackConversions: true,
userProperties: ['email_engagement_score', 'preferred_send_time']
}
});
// Custom webhook for real-time data streaming
await omx.email.setupDataWebhook({
url: 'https://yourapp.com/email-data-webhook',
events: ['delivered', 'opened', 'clicked', 'converted'],
format: {
type: 'json',
batchSize: 100,
batchTimeout: 30 // seconds
},
authentication: {
type: 'hmac',
secret: 'webhook_secret_key'
}
});
// Real-time data streaming to your data warehouse
const dataStream = omx.email.createDataStream({
destination: {
type: 'bigquery',
projectId: 'your-project',
dataset: 'email_analytics',
table: 'events'
},
schema: {
messageId: 'STRING',
event: 'STRING',
timestamp: 'TIMESTAMP',
userId: 'STRING',
campaignId: 'STRING',
metadata: 'JSON'
}
});Best Practices
- Privacy Compliance: Respect user privacy and comply with GDPR/CCPA regulations
- Data Retention: Implement appropriate data retention policies
- Accurate Attribution: Use proper attribution windows for conversion tracking
- Regular Monitoring: Set up alerts for key metrics and anomalies
- Segmentation Analysis: Analyze performance across different user segments
- Actionable Insights: Focus on metrics that drive business decisions