Skip to main content

Analytics API

Engagement metrics, campaign performance, journey analytics, and social insights.


Engagement Analytics

Engagement Distribution

GET /analytics/engagement

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
clubIdstringFilter by club

Response: 200 OK

{
"distribution": [
{ "label": "High (70-100)", "count": 450, "percentage": 0.36 },
{ "label": "Medium (40-69)", "count": 380, "percentage": 0.304 },
{ "label": "Low (1-39)", "count": 320, "percentage": 0.256 },
{ "label": "Inactive (0)", "count": 100, "percentage": 0.08 }
],
"averageScore": 52,
"totalProfiles": 1250
}

Churn Risk Overview

GET /analytics/churn-risk

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
clubIdstringFilter by club

Response: 200 OK

{
"critical": 45,
"high": 120,
"medium": 280,
"low": 805,
"total": 1250,
"distribution": [
{ "label": "Critical (80-100)", "count": 45, "percentage": 0.036 },
{ "label": "High (60-79)", "count": 120, "percentage": 0.096 },
{ "label": "Medium (30-59)", "count": 280, "percentage": 0.224 },
{ "label": "Low (0-29)", "count": 805, "percentage": 0.644 }
],
"trending": {
"increasingRisk": 25,
"decreasingRisk": 45,
"stable": 1180
}
}

GET /analytics/engagement/trends

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
startDatestringFrom date
endDatestringTo date
intervalstringday, week, month

Response: 200 OK

{
"data": [
{ "date": "2025-12-01", "averageScore": 51, "activeProfiles": 980 },
{ "date": "2025-12-08", "averageScore": 52, "activeProfiles": 1005 },
{ "date": "2025-12-14", "averageScore": 52, "activeProfiles": 1020 }
],
"summary": {
"scoreChange": 1,
"activeChange": 40,
"trend": "improving"
}
}

Campaign Analytics

Campaign Overview

GET /analytics/campaigns

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
clubIdstringFilter by club
startDatestringFrom date
endDatestringTo date

Response: 200 OK

{
"summary": {
"totalCampaigns": 24,
"totalSent": 12500,
"totalDelivered": 12150,
"totalOpened": 5250,
"totalClicked": 1875,
"avgDeliveryRate": 0.972,
"avgOpenRate": 0.432,
"avgClickRate": 0.357,
"avgConversionRate": 0.03
},
"byType": {
"ONE_TIME": {
"count": 15,
"sent": 8000,
"avgOpenRate": 0.45,
"avgClickRate": 0.35
},
"RECURRING": {
"count": 6,
"sent": 3500,
"avgOpenRate": 0.38,
"avgClickRate": 0.32
},
"JOURNEY": {
"count": 3,
"sent": 1000,
"avgOpenRate": 0.52,
"avgClickRate": 0.42
}
},
"byChannel": {
"EMAIL": {
"sent": 10000,
"avgOpenRate": 0.42,
"avgClickRate": 0.15
},
"SMS": {
"sent": 2500,
"avgDeliveryRate": 0.98
}
},
"topPerforming": [
{
"id": "campaign_1",
"name": "Summer Sale",
"type": "ONE_TIME",
"openRate": 0.65,
"clickRate": 0.28
},
{
"id": "campaign_2",
"name": "Member Welcome",
"type": "JOURNEY",
"openRate": 0.58,
"clickRate": 0.22
}
]
}

Campaign Performance Over Time

GET /analytics/campaigns/trends

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
startDatestringFrom date
endDatestringTo date
intervalstringday, week, month

Response: 200 OK

{
"data": [
{
"date": "2025-12-01",
"campaigns": 3,
"sent": 1500,
"openRate": 0.42,
"clickRate": 0.15
},
{
"date": "2025-12-08",
"campaigns": 5,
"sent": 2500,
"openRate": 0.45,
"clickRate": 0.18
}
]
}

Journey Analytics

Journey Overview

GET /analytics/journeys

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
startDatestringFrom date
endDatestringTo date

Response: 200 OK

{
"summary": {
"activeJourneys": 5,
"totalEnrolled": 1250,
"totalCompleted": 975,
"totalExited": 125,
"totalActive": 150,
"completionRate": 0.78,
"avgTimeToComplete": "5.2 days",
"exitRate": 0.10
},
"byJourney": [{
"id": "journey_1",
"name": "Onboarding",
"status": "ACTIVE",
"enrolled": 500,
"completed": 420,
"exited": 30,
"active": 50,
"completionRate": 0.84,
"avgTimeToComplete": "4.5 days"
}, {
"id": "journey_2",
"name": "Re-engagement",
"status": "ACTIVE",
"enrolled": 300,
"completed": 200,
"exited": 50,
"active": 50,
"completionRate": 0.67,
"avgTimeToComplete": "7.2 days"
}]
}

Journey Funnel

GET /analytics/journeys/:id/funnel

Response: 200 OK

{
"journeyId": "journey_1",
"journeyName": "Onboarding",
"totalEnrolled": 500,
"steps": [
{
"stepNumber": 1,
"name": "Welcome Email",
"type": "SEND",
"reached": 500,
"completed": 495,
"dropOff": 5,
"dropOffRate": 0.01
},
{
"stepNumber": 2,
"name": "Wait 3 days",
"type": "WAIT",
"reached": 495,
"completed": 490,
"dropOff": 5,
"dropOffRate": 0.01
},
{
"stepNumber": 3,
"name": "Check if opened",
"type": "CONDITION",
"reached": 490,
"yesPath": 380,
"noPath": 110
},
{
"stepNumber": 4,
"name": "Engaged Email",
"type": "SEND",
"reached": 380,
"completed": 375,
"dropOff": 5,
"dropOffRate": 0.013
}
]
}

Social Analytics

Social Overview

GET /analytics/social

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
clubIdstringFilter by club
startDatestringFrom date
endDatestringTo date

Response: 200 OK

{
"summary": {
"totalPosts": 45,
"totalReach": 25000,
"totalEngagement": 1500,
"avgEngagementRate": 0.06,
"totalLikes": 1100,
"totalComments": 250,
"totalShares": 150
},
"byPlatform": {
"FACEBOOK": {
"posts": 25,
"reach": 15000,
"engagement": 900,
"engagementRate": 0.06,
"likes": 650,
"comments": 150,
"shares": 100
},
"INSTAGRAM": {
"posts": 15,
"reach": 8000,
"engagement": 500,
"engagementRate": 0.0625,
"likes": 400,
"comments": 80,
"shares": 20
},
"TWITTER": {
"posts": 5,
"reach": 2000,
"engagement": 100,
"engagementRate": 0.05,
"likes": 50,
"comments": 20,
"shares": 30
}
},
"topPosts": [
{
"id": "post_1",
"platform": "FACEBOOK",
"content": "Join us for...",
"reach": 2500,
"engagement": 150,
"publishedAt": "2025-12-10T14:00:00Z"
}
]
}

GET /analytics/social/trends

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
startDatestringFrom date
endDatestringTo date
intervalstringday, week, month

Response: 200 OK

{
"data": [
{
"date": "2025-12-01",
"posts": 8,
"reach": 5000,
"engagement": 300,
"engagementRate": 0.06
},
{
"date": "2025-12-08",
"posts": 10,
"reach": 6500,
"engagement": 400,
"engagementRate": 0.0615
}
]
}

Dashboard Widgets

Executive Summary

GET /analytics/dashboard

Query Parameters

ParameterTypeDescription
tenantIdstringRequired
periodstring7d, 30d, 90d, 12m

Response: 200 OK

{
"customers": {
"total": 1250,
"active": 1100,
"new": 45,
"churned": 12,
"trend": "+3.7%"
},
"engagement": {
"averageScore": 52,
"highEngagement": 450,
"atRisk": 165,
"trend": "+2.1%"
},
"campaigns": {
"sent": 8,
"delivered": 4500,
"avgOpenRate": 0.42,
"avgClickRate": 0.15
},
"social": {
"posts": 15,
"reach": 12000,
"engagement": 720,
"engagementRate": 0.06
}
}