Analytics
GET /analytics?days=7 returns counters for the active project.
| Field | Meaning |
|---|---|
total | Messages created in the window |
delivered / bounced / complained / failed | By message status |
opened / clicked | Unique messages with engagement events |
openRate / clickRate | vs delivered |
bounceRate / complaintRate | vs total |
series | UTC day buckets (volume + deliverability + opens/clicks) |
byDomain | Counters by sending domain (hostname from From) |
byRoute | Counters by route (routeId; name filled when the route still exists) |
topFailures | Top recipients with bounce/complaint/failed (max 10) |
days is an integer 1–30 (default 7, capped by your plan’s message retention).
kind optionally filters to transactional or broadcast routes.
CSV export
GET /analytics/export returns the same window as a downloadable text/csv report:
a summary block (totals, rates, latency) followed by daily-series, by-domain, by-route,
and top-failures tables. Same days / kind query params.
curl -H "Authorization: Bearer $EVRE_API_KEY" \
"https://api.evre.email/analytics/export?days=30" \
-o analytics.csv
Console
Dashboard → Overview: 7d / 30d toggle, rates, by-domain, by-route, top failed recipients, and an Export CSV button that downloads the current window/filter.
SDK
const stats = await evre.analytics.get({ days: 30 });
console.log(stats.byRoute, stats.byDomain, stats.topFailures);
const csv = await evre.analytics.exportCsv({ days: 30 });
await fs.writeFile("analytics.csv", csv);
Tracking note
Open/click rates stay near zero unless you enable tracking (Settings or per-send trackOpens / trackClicks). See Tracking.