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-here
Timezone-Aware Date Filtering
You can provide timezones in your date_from
and date_to
using ISO 8601 offset notation:
Use
+05:30
for IST (India),-06:00
for US Central,+00:00
for UTC, etc.Example:
2025-07-30 10:00:00+05:30
If no timezone is specified, UTC is assumed.
URL Encoding:
For
+
, use%2B
in URLs:2025-07-01%2B05:30
For
-
, 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:00
All 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:00
2025-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=1
2. 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-31
3. 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=1
4. 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=0
5. 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=1
6. 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=0
7. 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=0
8. 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=1
9. 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=1
10. 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=csv
11. 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=csv
12. 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=csv
Tip:
Use the
X-ADMIN-API-KEY
header 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