Email White Label - Add / verify
Overview
Create or update the email white-label sender for an account and verify its domain via Mandrill. If a fully-verified VerifiedEmail already exists for the company/email/tracking domain, the endpoint updates the sender name and returns already_verified. Otherwise it validates the email's domain through Mandrill. On success it creates or updates the VerifiedEmail and runs the Mandrill verification suite. It stamps domain_verified_at/url_verified_at once DKIM, DKIM2, DMARC, signing, and the tracking CNAME all pass. An invalid domain returns a 400 ("Invalid Domain").
Prerequisites
- A bearer token. Callable with Partner and Account tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/account/white-label/email/add
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner and Account tokens.
-
Authentication, role-agnostic
account/white-labelprefix. -
company_idis required and scoped by an ownership check (must be in the caller's hierarchy). -
A partner can configure any company beneath it. An account user only its own part of the account tree.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
company_id | integer | required | Must be an existing account inside your own account tree. |
sender_name | string | required | max 100, no angle brackets; stored as name. |
email | string | required | email:rfc,dns; the endpoint verifies its domain via Mandrill. |
tracking_domain | string | required | max 100, no angle brackets; stored as tracking_url. |
{
"company_id": 5,
"sender_name": "Acme Reviews",
"email": "[email protected]",
"tracking_domain": "track.acme.com"
}Response
data.status(string) —"success"(new/updated unverified record) or"already_verified"(was already fully verified, name updated).data.data(object|array) — theVerifiedEmailrow (id,company_id,email,name,domain,tracking_url,domain_verified_at,url_verified_at, timestamps); empty array[]on thealready_verifiedshort-circuit branch.data.verification(object) — Mandrill verification payload (verify_domain,check_domain,check_tracking_domain,default_settings); present only on thesuccessbranch.
200 OK (saved) · 200
200{
"data": {
"status": "success",
"data": {
"company_id": 5,
"email": "[email protected]",
"tracking_url": "track.manage-myreviews.com",
"domain": "manage-myreviews.com",
"name": "hipages",
"domain_verified_at": "2026-06-23 10:00:00",
"url_verified_at": "2026-06-23 10:00:00",
"updated_at": "2026-06-23T10:00:00.000000Z",
"created_at": "2026-06-23T10:00:00.000000Z",
"id": 1
},
"verification": {
"verify_domain": {
"status": "already_verified",
"domain": "manage-myreviews.com",
"email": "[email protected]"
},
"check_domain": {
"domain": "manage-myreviews.com",
"dkim": { "valid": true },
"dkim2": { "valid": true },
"dmarc": { "valid": true },
"valid_signing": true
},
"check_tracking_domain": {
"domain": "track.manage-myreviews.com",
"cname": { "valid": true }
},
"default_settings": {
"email": "[email protected]",
"name": "Review Management",
"tracking_url": "track.shoutaboutus.com"
}
}
}
}200 OK (already verified) · 200
200{
"data": {
"status": "already_verified",
"data": []
}
}400 Bad Request (invalid domain) · 400
400{
"message": "Bad Request",
"status": "error",
"errors": {
"status": "error",
"message": "Invalid Domain"
}
}422 Unprocessable Entity · 422
422{
"message": "The email field must be a valid email address.",
"errors": {
"email": [
"The email field must be a valid email address."
],
"sender_name": [
"The sender name field is required."
]
}
}Errors
| Status | Meaning |
|---|---|
400 | Bad Request (invalid domain) |
401 | The bearer token is missing, expired or invalid |
422 | Unprocessable Entity |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/account/white-label/email/add" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"company_id": 5, "sender_name": "Acme Reviews", "email": "[email protected]", "tracking_domain": "track.acme.com"}'Updated 10 days ago
