Skip to content

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

ParameterLocationTypeRequiredDescriptionAllowed values / Notes
x-api-keyheaderstringyesAPI key for authenticationAvailable in Settings > API
startDatequerystringyesStart date for the report periodFormat: YYYY-MM-DD (interpreted as midnight UTC)
endDatequerystringyesEnd date for the report period (inclusive)Format: YYYY-MM-DD. Must be ≥ startDate
groupingquerystringnoHow to aggregate the returned dataOne of: Date (default), Month, Message, Domain, DomainFamily, IP, MessageType.
domainquerystringnoFilter by recipient email domain (e.g., gmail.com)Single value
domainFamilyquerystringnoFilter by domain family (e.g., Google, Microsoft)Single value
messageTypequerystringnoFilter by message typeSingle value

Response

Each object in the data array contains the following fields:

FieldTypeDescription
datestringCalendar date for this row (YYYY-MM-DD). Present when grouping=Date.
domainstringRecipient email domain. Present when grouping=Domain.
sentintegerTotal number of emails sent.
bouncedintegerNumber of emails that bounced.
bouncedPercentnumberBounce rate as percentage of sent.
deliveredintegerNumber of emails successfully delivered.
deliveredPercentnumberDelivery rate as percentage of sent.
opensintegerTotal number of email opens (including multiple opens by same recipient).
opensPercentnumberOpen rate as percentage of delivered.
uniqueOpensintegerNumber of unique recipients who opened the email at least once.
clicksintegerTotal number of link clicks (including multiple clicks by same recipient).
clicksPercentnumberClick rate as percentage of delivered.
uniqueClicksintegerNumber of unique recipients who clicked at least one link.
clicksToOpensPercentnumberClick-to-open rate (CTOR).
unsubscribesintegerNumber of recipients who unsubscribed via the email.
complaintsintegerNumber of spam complaints received.
revenuenumberTotal revenue attributed to emails in this period.
currencystringCurrency 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

CodeStatusDescription
200OKRequest successful. Data returned in response body.
204No ContentRequest valid but no data matches the criteria.
400Bad RequestInvalid parameters, missing required fields, multiple filters, or invalid date range.
401UnauthorizedMissing or invalid API key.
403ForbiddenInsufficient permissions for this operation.
500Internal Server ErrorServer-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

https://api.ecdp.app/swagger/index.html