Get Delivery Report
Retrieve detailed email delivery reports with advanced filters, timezone support, and export in JSON or CSV from your SenderWiz account.
📋 Get Delivery Report
Retrieve a list of all campaign delivery logs and status events for each email sent from your SenderWiz account. This endpoint supports advanced filtering, timezone-aware date filters, pagination, and both JSON and CSV output formats.
🔹 HTTP Request
GET ADMIN-API-URL/deliveryreport🔸 Query Parameters (Optional)
customer_id
int
No
Filter by customer ID
campaign_id
int
No
Filter by campaign ID
date_from
string
No
Filter by sent date (start). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS with optional timezone
date_to
string
No
Filter by sent date (end). Format: YYYY-MM-DD or YYYY-MM-DD HH:MM:SS with optional timezone
opened
0/1
No
Filter by open status: 1=open, 0=not opened
clicked
0/1
No
Filter by click status: 1=clicked, 0=not clicked
bounced
0/1
No
Filter by bounce status: 1=bounced, 0=not bounced
unsubscribed
0/1
No
Filter by unsubscribe status: 1=unsubscribed, 0=not unsubscribed
complaint
0/1
No
Filter by complaint status: 1=complaint, 0=no complaint
server_name
string
No
Filter by delivery server name (exact match)
format
string
No
json or csv (default is json)
page
int
No
Results page number (default 1)
page_size
int
No
Records per page (default 100, max 500)
🔐 Authorization Header
Include your Admin API key:
X-ADMIN-API-KEY: your-admin-api-key-hereTimezone-Aware Date Filtering
You can provide timezones in your date_from and date_to using ISO 8601 offset notation:
Use
+05:30for IST (India),-06:00for US Central,+00:00for UTC, etc.Example:
2025-07-30 10:00:00+05:30If no timezone is specified, UTC is assumed.
URL Encoding:
For
+, use%2Bin URLs:2025-07-01%2B05:30For
-, you can use as is:2025-07-01-06:00
Returned data times (like delivery_date_time, open_time) will also be shown in the requested timezone.
🔸 Quick Examples
All output in UTC-6:00 (US Central, no daylight savings):
GET ADMIN-API-URL/deliveryreport?date_from=2025-01-01-06:00&date_to=2025-06-01-06:00All output in UTC+5:30 (India):
GET ADMIN-API-URL/deliveryreport?date_from=2025-01-01%2B05:30&date_to=2025-06-01%2B05:30
How Date Filters Work
Only a date?
2025-07-01→ treated as2025-07-01 00:00:002025-07-31→ treated as2025-07-31 00:00:00(midnight of that day, so doesn't include the full day)
To include the whole last day:
Use
date_to=2025-07-31 23:59:59
All times are either UTC or your requested timezone (see above).
💻 PHP Example
// GET DELIVERY REPORT
$response = $endpoint->get('deliveryreport', [
'customer_id' => 1,
'date_from' => '2025-07-01',
'date_to' => '2025-07-31',
'opened' => 1,
'clicked' => 1,
'page' => 1,
'page_size' => 100
]);
// DISPLAY RESPONSE
echo '<hr /><pre>';
print_r($response->body);
echo '</pre>';📦 Sample Dummy JSON Response
[
{
"customer_email": "[email protected]",
"campaign": "Summer Sale 2025",
"list": "All Customers",
"subscriber_email": "[email protected]",
"delivery_server": "SMTP-US-East",
"delivery_status": "success",
"delivery_date_time": "2025-07-12 09:30:25", // Will be in the requested timezone
"open": "Yes",
"open_time": "2025-07-12 09:31:10",
"click": "Yes",
"click_time": "2025-07-12 09:32:00",
"bounce": "No",
"bounce_type": null,
"bounce_time": null,
"unsubscribe": "No",
"unsubscribe_time": null,
"complaint": "No",
"complaint_time": null
},
{
"customer_email": "[email protected]",
"campaign": "Summer Sale 2025",
"list": "All Customers",
"subscriber_email": "[email protected]",
"delivery_server": "SMTP-US-East",
"delivery_status": "success",
"delivery_date_time": "2025-07-12 09:30:25",
"open": "No",
"open_time": null,
"click": "No",
"click_time": null,
"bounce": "Yes",
"bounce_type": "hard",
"bounce_time": "2025-07-12 09:31:15",
"unsubscribe": "No",
"unsubscribe_time": null,
"complaint": "No",
"complaint_time": null
}
]📄 Sample CSV Response
Add &format=csv to your request URL.
The response will be a CSV file with the same columns as above.
🔗 Request Examples
Replace ADMIN-API-URL with your actual API endpoint URL.
1. All activity for customer 1 (full date range, JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=12. All activity for customer 1 between July 1–31, 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-313. Only opened emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=14. Only NOT opened emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=05. Opened AND clicked emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=1&clicked=16. Opened but NOT clicked emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=1&clicked=07. Neither opened NOR clicked emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=0&clicked=08. Only unsubscribed for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&unsubscribed=19. Only bounced emails for customer 1 in July 2025 (JSON)
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&bounced=110. All activity for customer 1 in July 2025 as CSV
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&format=csv11. Only NOT opened emails for customer 1 in July 2025 as CSV
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=0&format=csv12. Opened AND clicked emails for customer 1 in July 2025 as CSV
GET ADMIN-API-URL/deliveryreport?customer_id=1&date_from=2025-07-01&date_to=2025-07-31&opened=1&clicked=1&format=csvTip:
Use the
X-ADMIN-API-KEYheader for all requests.You can combine filters like
opened,clicked,bounced,unsubscribed,complaint, orserver_name.All date/time fields are returned in the timezone requested in your filter. If no timezone is given, UTC is used.
Last updated