Reports – Web push – single message report
This method returns performance statistics for a single Web Push message in ECDP. It includes key delivery and engagement metrics such as sent messages, bounces, views, clicks, and revenue.
You can also retrieve basic message details, such as the message name, UTM parameters, and the related website. This data helps you understand how a specific Web Push message performed and supports decisions about how to improve future messages.
Endpoint
GET /reports/webpush/singleMessage/{id}
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 | Header. Obtain from Settings > API. |
| id | path | integer | Yes | Identifier of the Web Push message | Path parameter. Must not be empty. |
| startDate | query | string | Conditional | Start of the reporting date range | Required for Scenario messages; not allowed for Newsletter. Format: YYYY-MM-DD. |
| endDate | query | string | Conditional | End of the reporting date range | Required for Scenario messages; not allowed for Newsletter. Format: YYYY-MM-DD. Must be ≥ startDate. |
| website | query | integer | No | Filter results by website ID | Accepts a single integer ID. Acts as a filter — see Filters below. |
| grouping | query | string | No | Defines the aggregation level of results | Message (default), Website |
| includeDetails | query | boolean | No | Whether to include the message metadata block | true or false. Default: false. |
Filters
Use the website parameter to narrow results to a specific website origin. Only one filter per request is supported.
| Filter | Type | Multi-value | Description |
| website | integer | No | Returns data only for the specified website ID |
Grouping options
Exactly one grouping value is allowed per request. If omitted, the default grouping applies.
Default: grouping=Message
| Grouping value | Grouping columns in response |
| Message | messageId, messageName |
| Website | websiteId, websiteName |
Responses
Web push report data
Each object in the array represents one row of aggregated statistics, grouped according to the grouping parameter.
| Field | Type | Present when | Description |
| messageId | string | grouping=Message | Identifier of the message |
| messageName | string | grouping=Message | Name of the message |
| websiteId | integer | grouping=Website | Identifier of the website |
| websiteName | string | grouping=Website | Name of the website |
| sent | integer | Always | Total number of notifications sent |
| bounce | integer | Always | Number of notifications that failed to deliver |
| bouncePercent | number | Always | Bounce rate: bounce / sent. Returns 0.0 if sent = 0. |
| view | integer | Always | Number of notifications displayed to recipients |
| viewPercent | number | Always | View rate: view / sent. Returns 0.0 if sent = 0. |
| click | integer | Always | Number of clicks on the notification |
| clickPercent | number | Always | Click rate: click / sent. Returns 0.0 if sent = 0. |
| clicksToViewsPercent | number | Always | Click-to-view rate: click / view. Returns 0.0 if view = 0. |
| revenue | number | Always | Total revenue attributed to this message |
| currency | string | Always | Currency code (ISO 4217) for the revenue value |
Message details
Present only when includeDetails=true.
| Field | Type | Description |
| messageId | string | Unique identifier of the message |
| type | string | Message type: Newsletter or Scenario |
| name | string | Message name as configured in ECDP |
| utms[] | array | Array of UTM parameter objects: { name, value } |
| sentDate | string (ISO-8601 UTC) | Date and time the message was sent |
| websiteId | integer | ID of the website the Web Push belongs to |
| websiteName | string | Name of the website the Web Push belongs to |
Example requests and responses
Newsletter message with details and grouping option ‘Message’
GET /reports/webpush/singleMessage/9921?includeDetails=true
Response (200 OK):
{
"messageDetails": {
"messageId": "9921",
"type": "Newsletter",
"name": "Spring Deals WebPush",
"utms": [
{ "name": "utm_source", "value": "webpush" },
{ "name": "utm_campaign", "value": "spring_deals" }
],
"sentDate": "2025-03-10T08:00:00Z",
"websiteId": 1,
"websiteName": "shop.example.com"
},
"data": [
{
"messageId": "9921",
"messageName": "Spring Deals WebPush",
"sent": 150000,
"bounce": 1200,
"bouncePercent": 0.008,
"view": 72000,
"viewPercent": 0.48,
"click": 9500,
"clickPercent": 0.0633,
"clicksToViewsPercent": 0.1319,
"revenue": 8421.55,
"currency": "USD"
}
]
}Web push message in scenario with date range, website filter, and ‘Website’ grouping
GET /reports/webpush/singleMessage/457?startDate=2025-03-01&endDate=2025-03-07&website=1&grouping=Website
Response (200 OK):
{
"data": [
{
"websiteId": 1,
"websiteName": "shop.example.com",
"sent": 28000,
"bounce": 310,
"bouncePercent": 0.0111,
"view": 14050,
"viewPercent": 0.5018,
"click": 2100,
"clickPercent": 0.075,
"clicksToViewsPercent": 0.1494,
"revenue": 2310.00,
"currency": "PLN"
}
]
}Response codes
| Code | Status | Description |
| 200 | OK | Request processed successfully. Response contains report data. |
| 204 | No content | Request is valid, but no data matches the specified parameters. |
| 400 | Bad request | Invalid or missing parameters. Check date range rules, filter, and grouping constraints. |
| 401 | Unauthorized | API key is missing, invalid, or expired. |
| 403 | Forbidden | The API key does not have permission to access this resource. |
| 500 | Internal server error | Server-side error. Retry the request or contact support if the issue persists. |
Validation and behavior rules
- Only one grouping value is allowed per request. Multiple grouping values return 400 Bad Request.
- Only one filter type is allowed per request. Each filter accepts exactly one value. Multiple filters or multiple values return 400 Bad Request.
- For Scenario messages, both startDate and endDate are required. If either is missing, the request returns 400 Bad Request.
- For Newsletter messages, providing startDate or endDate returns 400 Bad Request.
Reference documentation
Swagger – Reports web push