Analytics
Email performance metrics, campaign analytics, and custom event tracking
Analytics endpoints expose send metrics, engagement rates, and deliverability data at both account and per-campaign level. You can also track custom conversion events to measure downstream impact.
Auth scopes: analytics (read metrics) | send (write tracking events)
Plan gates on analytics features
- Basic metrics (opens, clicks, bounces): all plans
- 90-day history: Pro+
- 365-day history + heatmaps: Max+
- Revenue analytics (
/track/purchase,/analytics/revenue): Max+ - Ecommerce tracking: Max+ (
ecommerce_trackingfeature flag) - Scheduled / exported reports: Max+
Account overview metrics
/mail/v1/analytics/overviewReturns aggregate metrics for all sends in the given time period.
Query parameters
periodstringquerydefault: 30dPreset period: 7d, 30d, 90d.
fromstringqueryISO 8601 start date (overrides period).
tostringqueryISO 8601 end date (overrides period).
Response fields
successbooleantrue when the request succeeded.
periodobjectThe resolved from and to date range.
metricsobjectAggregate counts and rates: sends, delivered, opens, unique_opens, clicks, unique_clicks, bounces, hard_bounces, soft_bounces, complaints, unsubscribes, open_rate, click_rate, bounce_rate, complaint_rate.
curl "https://api.misar.io/mail/v1/analytics/overview?period=30d" \
-H "Authorization: Bearer msk_YOUR_API_KEY"{
"success": true,
"period": {
"from": "2026-03-07T00:00:00Z",
"to": "2026-04-06T23:59:59Z"
},
"metrics": {
"sends": 12480,
"delivered": 12210,
"opens": 4884,
"unique_opens": 3663,
"clicks": 1221,
"unique_clicks": 855,
"bounces": 270,
"hard_bounces": 48,
"soft_bounces": 222,
"complaints": 12,
"unsubscribes": 36,
"open_rate": 0.392,
"click_rate": 0.098,
"bounce_rate": 0.022,
"complaint_rate":0.001
}
}Per-campaign metrics
/mail/v1/analytics/campaigns/:idReturns detailed metrics for a specific campaign.
Path parameters
idstringpathrequiredID of the campaign.
Response fields
successbooleantrue when the request succeeded.
campaignobjectCampaign summary: id, name, status, sent_at.
metricsobjectPer-campaign counts and rates: total_recipients, total_sent, total_delivered, total_opened, total_clicked, total_bounced, total_complained, total_unsubscribed, open_rate, click_rate, bounce_rate.
timelinearrayHourly engagement buckets with hour, opens, and clicks.
curl "https://api.misar.io/mail/v1/analytics/campaigns/camp_abc123" \
-H "Authorization: Bearer msk_YOUR_API_KEY"{
"success": true,
"campaign": {
"id": "camp_abc123",
"name": "April Newsletter",
"status": "sent",
"sent_at":"2026-04-01T09:00:00Z"
},
"metrics": {
"total_recipients": 5200,
"total_sent": 5200,
"total_delivered": 5096,
"total_opened": 2038,
"total_clicked": 510,
"total_bounced": 104,
"total_complained": 5,
"total_unsubscribed":18,
"open_rate": 0.392,
"click_rate": 0.098,
"bounce_rate": 0.020
},
"timeline": [
{ "hour": "2026-04-01T09:00:00Z", "opens": 820, "clicks": 205 },
{ "hour": "2026-04-01T10:00:00Z", "opens": 614, "clicks": 153 }
]
}Track a custom event
/mail/v1/track/eventTrack a custom event tied to a contact. Useful for measuring downstream conversions from email clicks.
Request body
event_namestringbodyrequiredSnake_case event name.
contact_emailstringbodyrequiredEmail of the contact who triggered the event.
propertiesobjectbodyArbitrary key-value metadata.
timestampstringbodyISO 8601 — defaults to now.
Response fields
successbooleantrue when the event was recorded.
event_idstringUnique identifier for the tracked event.
curl -X POST https://api.misar.io/mail/v1/track/event \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event_name": "trial_started",
"contact_email": "[email protected]",
"properties": {
"plan": "pro",
"source": "welcome_email"
}
}'{ "success": true, "event_id": "evt_xyz789" }Track a purchase event
/mail/v1/track/purchaseTrack a purchase event with revenue data. Revenue is attributed to the last clicked campaign within 7 days.
Request body
contact_emailstringbodyrequiredPurchasing contact.
amountnumberbodyrequiredTotal order value.
currencystringbodyrequiredISO 4217 currency code (e.g. USD, INR).
order_idstringbodyYour system's order ID (deduplication key).
itemsarraybodyLine items with name, quantity, price.
Response fields
successbooleantrue when the purchase was recorded.
event_idstringUnique identifier for the purchase event.
attributed_campaign_idstringCampaign the purchase was attributed to. null if no clicked campaign was found within the attribution window.
curl -X POST https://api.misar.io/mail/v1/track/purchase \
-H "Authorization: Bearer msk_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contact_email": "[email protected]",
"amount": 99.99,
"currency": "USD",
"order_id": "order_12345",
"items": [
{ "name": "Pro Plan", "quantity": 1, "price": 99.99 }
]
}'{
"success": true,
"event_id": "evt_purchase_abc",
"attributed_campaign_id": "camp_abc123"
}Benchmark against industry
/mail/analytics/benchmarkCompare your last-30-day metrics against industry averages (Mailchimp/Campaign Monitor 2024 benchmarks). Cached for 1 hour. Uses session authentication.
Response fields
successbooleantrue when the request succeeded.
cachedbooleanWhether the response came from cache.
dataobjectComparison per metric (openRate, clickRate, bounceRate, unsubscribeRate), each with yours, industry, delta, and better. For open/click, better: true means above average; for bounce/unsubscribe, better: true means below average (lower is better).
curl "https://api.misar.io/mail/analytics/benchmark" \
-H "Cookie: sb-access-token=YOUR_SESSION"{
"success": true,
"cached": false,
"data": {
"openRate": { "yours": 0.31, "industry": 0.251, "delta": 0.059, "better": true },
"clickRate": { "yours": 0.04, "industry": 0.028, "delta": 0.012, "better": true },
"bounceRate": { "yours": 0.015, "industry": 0.02, "delta": -0.005, "better": true },
"unsubscribeRate": { "yours": 0.01, "industry": 0.009,"delta": 0.001, "better": false }
}
}Churn-risk contacts
/mail/analytics/churn-riskIdentify contacts at high risk of unsubscribing based on engagement decay patterns. Uses session authentication. Use in combination with POST /api/list-health/win-back to target these contacts.
Query parameters
thresholdnumberquerydefault: 30Days since last engagement to flag as at-risk.
limitnumberquerydefault: 50Max contacts to return.
Response fields
successbooleantrue when the request succeeded.
dataobjectatRiskCount and a contacts array; each contact includes email, lastEngagedAt, daysSinceEngagement, riskScore, and suggestion.
{
"success": true,
"data": {
"atRiskCount": 243,
"contacts": [
{
"email": "[email protected]",
"lastEngagedAt": "2026-01-10T00:00:00Z",
"daysSinceEngagement": 47,
"riskScore": 0.82,
"suggestion": "win-back"
}
]
}
}Cohort analysis
/mail/analytics/cohortsCohort analysis — track engagement rates of contacts grouped by the month they subscribed. Uses session authentication.
Query parameters
fromstringqueryISO 8601 start date for cohorts.
tostringqueryISO 8601 end date.
metricstringquerydefault: open_rateOne of open_rate, click_rate, unsubscribe_rate.
Response fields
successbooleantrue when the request succeeded.
dataobjectA cohorts array; each cohort includes month, contactsAdded, openRate30d, openRate60d, and openRate90d.
{
"success": true,
"data": {
"cohorts": [
{
"month": "2026-01",
"contactsAdded": 420,
"openRate30d": 0.45,
"openRate60d": 0.38,
"openRate90d": 0.31
}
]
}
}Export analytics data
/mail/analytics/exportExport analytics data as CSV or JSON. Uses session authentication. Returns a JSON array or a CSV download (Content-Disposition: attachment).
Query parameters
formatstringquerydefault: jsoncsv or json.
fromstringqueryrequiredISO 8601 start date.
tostringqueryrequiredISO 8601 end date.
typestringquerydefault: campaignscampaigns, contacts, or events.
curl "https://api.misar.io/mail/analytics/export?format=csv&from=2026-01-01&to=2026-03-31&type=campaigns" \
-H "Cookie: sb-access-token=YOUR_SESSION"AI performance insights
/mail/analytics/insightsAI-generated insights about your email performance based on the last 30 days of data. Uses session authentication. Plan: Pro+.
Response fields
successbooleantrue when the request succeeded.
dataobjectgeneratedAt plus an insights array; each insight includes type, title, description, and action.
curl "https://api.misar.io/mail/analytics/insights" \
-H "Cookie: sb-access-token=YOUR_SESSION"{
"success": true,
"data": {
"generatedAt": "2026-05-27T10:00:00Z",
"insights": [
{
"type": "best_send_time",
"title": "Tuesday 9–11am is your best send window",
"description": "Your open rates are 40% higher when emails land Tuesday between 9am–11am your subscribers' local time.",
"action": "Schedule your next campaign for Tuesday 9am"
},
{
"type": "subject_length",
"title": "Shorter subjects perform better for you",
"description": "Subject lines under 45 characters get 25% higher open rates in your account.",
"action": "Aim for subjects under 45 characters"
}
]
}
}List saved reports
/mail/analytics/reportsList saved analytics report definitions (scheduled or on-demand). Uses session authentication. Plan: Max+.
Response fields
successbooleantrue when the request succeeded.
dataarrayReport definitions. Each includes id, name, type, schedule, recipients, lastRunAt, and nextRunAt.
{
"success": true,
"data": [
{
"id": "rpt_abc123",
"name": "Monthly Campaign Summary",
"type": "campaigns",
"schedule": "monthly",
"recipients": ["[email protected]"],
"lastRunAt": "2026-05-01T09:00:00Z",
"nextRunAt": "2026-06-01T09:00:00Z"
}
]
}Revenue attribution
/mail/analytics/revenueRevenue attribution analytics — see which campaigns drove purchases. Requires Max plan with ecommerce tracking enabled. Uses session authentication. Plan: Max+.
Query parameters
fromstringquerydefault: 30 days agoISO 8601 start date.
tostringquerydefault: todayISO 8601 end date.
Response fields
successbooleantrue when the request succeeded.
dataobjecttotalRevenue, currency, attributedOrders, revenuePerEmail, and a topCampaigns array (each with campaignId, campaignName, revenue, orders, conversionRate).
{
"success": true,
"data": {
"totalRevenue": 15420.50,
"currency": "USD",
"attributedOrders": 83,
"revenuePerEmail": 0.034,
"topCampaigns": [
{
"campaignId": "camp_abc123",
"campaignName":"Spring Sale",
"revenue": 6200.00,
"orders": 31,
"conversionRate": 0.012
}
]
}
}