Reports – Email – channel summary
This method returns aggregated email performance metrics across your entire email channel for a specified date range. Use it to monitor overall email program health, track daily sending volumes, and measure engagement trends over time.
Endpoint
GET reports/email/channelSummary
Host: https://api.ecdp.app
Request parameters
| Parameter | Location | Type | Required | Description | Allowed values / Notes |
| x-api-key | header | string | yes | API key for authentication | Available in Settings > API |
| startDate | query | string | yes | Start date for the report period | Format: YYYY-MM-DD (interpreted as midnight UTC) |
| endDate | query | string | yes | End date for the report period (inclusive) | Format: YYYY-MM-DD. Must be ≥ startDate |
| grouping | query | string | no | How to aggregate the returned data | One of: Date (default), Month, Message, Domain, DomainFamily, IP, MessageType. |
| domain | query | string | no | Filter by recipient email domain (e.g., gmail.com) | Single value |
| domainFamily | query | string | no | Filter by domain family (e.g., Google, Microsoft) | Single value |
| messageType | query | string | no | Filter by message type | Single value |
Response
Each object in the data array contains the following fields:
| Field | Type | Description |
| date | string | Calendar date for this row (YYYY-MM-DD). Present when grouping=Date. |
| domain | string | Recipient email domain. Present when grouping=Domain. |
| sent | integer | Total number of emails sent. |
| bounced | integer | Number of emails that bounced. |
| bouncedPercent | number | Bounce rate as percentage of sent. |
| delivered | integer | Number of emails successfully delivered. |
| deliveredPercent | number | Delivery rate as percentage of sent. |
| opens | integer | Total number of email opens (including multiple opens by same recipient). |
| opensPercent | number | Open rate as percentage of delivered. |
| uniqueOpens | integer | Number of unique recipients who opened the email at least once. |
| clicks | integer | Total number of link clicks (including multiple clicks by same recipient). |
| clicksPercent | number | Click rate as percentage of delivered. |
| uniqueClicks | integer | Number of unique recipients who clicked at least one link. |
| clicksToOpensPercent | number | Click-to-open rate (CTOR). |
| unsubscribes | integer | Number of recipients who unsubscribed via the email. |
| complaints | integer | Number of spam complaints received. |
| revenue | number | Total revenue attributed to emails in this period. |
| currency | string | Currency code for revenue values. |
Example requests and responses
Email daily summary report
Request:
GET /reports/email/channelSummary?startDate=2025-09-01&endDate=2025-09-07
Response: 200 OK
{
"data": [
{
"date": "2025-09-01",
"sent": 52000,
"bounced": 520,
"bouncedPercent": 1.0,
"delivered": 51480,
"deliveredPercent": 99.0,
"opens": 90500,
"opensPercent": 175.8,
"uniqueOpens": 23800,
"clicks": 20592,
"clicksPercent": 40.0,
"uniqueClicks": 9800,
"clicksToOpensPercent": 41.2,
"unsubscribes": 62,
"complaints": 9,
"revenue": 6840.25,
"currency": "USD"
},
{
"date": "2025-09-02",
"sent": 48000,
"bounced": 480,
"bouncedPercent": 1.0,
"delivered": 47520,
"deliveredPercent": 99.0,
"opens": 86000,
"opensPercent": 181.0,
"uniqueOpens": 21050,
"clicks": 16632,
"clicksPercent": 35.0,
"uniqueClicks": 8200,
"clicksToOpensPercent": 39.0,
"unsubscribes": 55,
"complaints": 8,
"revenue": 5720.00,
"currency": "USD"
}
]
}Email summary report grouped by domains
Request:
GET /reports/email/channelSummary?startDate=2025-09-01&endDate=2025-09-30&grouping=Domain&domain=gmail.com&messageType=Newsletter&ip=192.0.2.15
Response: 200 OK
{
"data": [
{
"domain": "gmail.com",
"sent": 90000,
"bounced": 720,
"bouncedPercent": 0.8,
"delivered": 89280,
"deliveredPercent": 99.2,
"opens": 178560,
"opensPercent": 200.0,
"uniqueOpens": 40200,
"clicks": 31248,
"clicksPercent": 35.0,
"uniqueClicks": 15100,
"clicksToOpensPercent": 37.6,
"unsubscribes": 120,
"complaints": 18,
"revenue": 12900.50,
"currency": "USD"
}
]
}Response codes
| Code | Status | Description |
| 200 | OK | Request successful. Data returned in response body. |
| 204 | No Content | Request valid but no data matches the criteria. |
| 400 | Bad Request | Invalid parameters, missing required fields, multiple filters, or invalid date range. |
| 401 | Unauthorized | Missing or invalid API key. |
| 403 | Forbidden | Insufficient permissions for this operation. |
| 500 | Internal Server Error | Server-side error. Retry with exponential backoff. |
Validation and behavior rules
- Only one grouping per request is allowed. Multiple groupings return 400 Bad Request.
- Only one filter type per request, one value per filter are allowed. Combining multiple filters (e.g., domain and domainFamily) or multiple values returns 400 Bad Request.
- Empty result set (valid request with no matching data) returns 200 OK with an empty data array.
Reference documentation
Swagger – Reports email