See email delivery history
Overview
See recent emails sent for a company (a partner or an account), the accounts under it and their locations: recipient, time and delivery status. Filter by type, status, recipient or date to narrow it down; with no filters you get every type.
Use this to confirm an email went out or debug one that didn't.
You'll need the company_id.
Returns recent deliveries, newest first, one page at a time.
The content of emails that carry a set-password link, a verification code or a sign-in link is never returned.
Prerequisites
- A bearer token. See Authentication.
- The account's id (
company_id), with the email templates section turned on.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/account/white-label/email-templates/logs
Authentication
Partner or Account token
company_idmust be inside your own account tree. A Partner token can use any account under the partner; an Account token only its own account.- An account outside your tree, or one that doesn't exist, is rejected with
422. - The email templates section must be turned on for the account's partner (
email_templates_enabledin Get branding). When it's off, every email template call for that account returns403withThe email template section is disabled for this account.
Rate limit
This endpoint has no rate limit.
Request parameters
None.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
company_id | integer | Yes | The account. Must exist and be inside your account tree. |
type | string | No | Only this email type. Left out: every type. |
status | string | No | Only this delivery status: pending, sent, failed or skipped. |
recipient | string | No | Part of the recipient address to match, up to 255 characters. |
date_from | string | No | Only emails created on or after this date. |
date_to | string | No | Only emails created on or before this date. |
per_page | integer | No | Emails per page, 10–100 (values below 10 are raised to 10; above 100 returns 422). Default 25. |
page | integer | No | Page number. Default 1. |
Request payload
{
"company_id": 5994,
"type": "user_welcome",
"status": "sent",
"recipient": "jane@",
"date_from": "2026-06-01",
"date_to": "2026-06-30",
"per_page": 25
}Response body
The payload is inside data; data.data is the page.
| Field | Type | Description |
|---|---|---|
status | string | success. |
data | object | The page of deliveries. |
data.current_page | integer | The page returned. |
data.data | array of objects | The deliveries on this page, newest first. [] when there are none. |
data.data[].id | integer | The delivery's id. |
data.data[].partner_company_id | integer | The company the email was sent for. |
data.data[].store_id | integer or null | The location, for location emails. |
data.data[].template_type | string | The email type. |
data.data[].recipient_email | string | Who it was sent to. |
data.data[].delivery_method | string | email or webhook. |
data.data[].status | string | pending, sent, failed or skipped. |
data.data[].skip_reason | string or null | Why it was skipped, e.g. template_disabled or suppressed. |
data.data[].error_message | string or null | The error, when it failed. |
data.data[].subject | string or null | The subject sent. |
data.data[].payload_json | object or null | The content sent (subject, header, body, footer, signature). Always null for user_welcome, verify_email, admin_user_verification and review_site_listing_invite, because those emails carry a set-password link, a verification code or a sign-in link. |
data.data[].response_json | object or null | The webhook's response, for webhook deliveries. |
data.data[].webhook_delivery_id | integer or null | The webhook delivery, for webhook deliveries. |
data.data[].message_id | string or null | The email provider's message id, when there is one. |
data.data[].sent_at | string or null | When it was sent; null if it wasn't. |
data.data[].created_at | string | When it was queued (ISO 8601). |
data.data[].updated_at | string | When it was last updated (ISO 8601). |
data.first_page_url | string | URL of the first page. |
data.from | integer or null | Position of the first delivery on this page. |
data.last_page | integer | The last page number. |
data.last_page_url | string | URL of the last page. |
data.links | array of objects | Page links (url, label, page, active). |
data.next_page_url | string or null | URL of the next page, or null. |
data.path | string | The endpoint URL. |
data.per_page | integer | Deliveries per page. |
data.prev_page_url | string or null | URL of the previous page, or null. |
data.to | integer or null | Position of the last delivery on this page. |
data.total | integer | Total deliveries that match. |
Response payload
{
"data": {
"status": "success",
"data": {
"current_page": 1,
"data": [
{
"id": 412,
"partner_company_id": 5994,
"store_id": null,
"template_type": "user_welcome",
"recipient_email": "[email protected]",
"delivery_method": "email",
"status": "sent",
"skip_reason": null,
"error_message": null,
"subject": "Welcome to Acme Reviews",
"payload_json": null,
"response_json": null,
"webhook_delivery_id": null,
"message_id": null,
"sent_at": "2026-06-23T09:14:02.000000Z",
"created_at": "2026-06-23T09:14:01.000000Z",
"updated_at": "2026-06-23T09:14:02.000000Z"
},
{
"id": 410,
"partner_company_id": 5994,
"store_id": null,
"template_type": "account_disconnected",
"recipient_email": "[email protected]",
"delivery_method": "webhook",
"status": "failed",
"skip_reason": null,
"error_message": "Webhook responded 500",
"subject": "Action needed — your connection at Downtown Clinic",
"payload_json": null,
"response_json": null,
"webhook_delivery_id": null,
"message_id": null,
"sent_at": null,
"created_at": "2026-06-22T18:02:55.000000Z",
"updated_at": "2026-06-22T18:02:56.000000Z"
}
],
"first_page_url": "https://production-api.shoutaboutus.com/api/v1/account/white-label/email-templates/logs?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "https://production-api.shoutaboutus.com/api/v1/account/white-label/email-templates/logs?page=1",
"links": [
{
"url": null,
"label": "« Previous",
"page": null,
"active": false
},
{
"url": "https://production-api.shoutaboutus.com/api/v1/account/white-label/email-templates/logs?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "Next »",
"page": null,
"active": false
}
],
"next_page_url": null,
"path": "https://production-api.shoutaboutus.com/api/v1/account/white-label/email-templates/logs",
"per_page": 25,
"prev_page_url": null,
"to": 2,
"total": 2
}
}
}Examples
Success payload
See Response payload.
Error payload
403 Email templates section is off
{
"message": "The email template section is disabled for this account.",
"status": "error",
"errors": []
}422 A filter is invalid
{
"message": "The selected status is invalid. (and 1 more error)",
"errors": {
"status": [
"The selected status is invalid."
],
"date_from": [
"The date from field must be a valid date."
]
}
}422 per_page is above 100
{
"message": "The per page field must not be greater than 100.",
"errors": {
"per_page": [
"The per page field must not be greater than 100."
]
}
}422 Account outside your tree
{
"message": "The selected company id does not belong to your company hierarchy.",
"errors": {
"company_id": [
"The selected company id does not belong to your company hierarchy."
]
}
}| Status | Meaning |
|---|---|
200 | A page of deliveries. |
401 | The token is missing, expired or invalid. |
403 | The email templates section is off for this account. |
422 | company_id is missing or outside your tree, a filter is invalid, or per_page is above 100. |
500 | Unexpected server error. |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/account/white-label/email-templates/logs" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"company_id": 5994, "type": "user_welcome", "status": "sent", "recipient": "jane@", "date_from": "2026-06-01", "date_to": "2026-06-30", "per_page": 25}'Updated 14 days ago
Did this page help you?
