Skip to main content

Email Domain

Manage your custom email domain for sending branded transactional emails (booking confirmations, reminders, etc.) from your own domain instead of the default EquipDash address.

Each supplier can have one custom email domain. The domain must be verified via DNS (DKIM) before it can be used.

Endpointsโ€‹

MethodEndpointDescriptionScope Required
GET/v1/email-domainGet email domain configurationsettings:read
POST/v1/email-domainCreate and verify a new email domainsettings:write
POST/v1/email-domain/check-statusRefresh verification statussettings:write
POST/v1/email-domain/retryStart verification again after it failedsettings:write
DELETE/v1/email-domainRemove the email domainsettings:write
PATCH/v1/email-domain/toggleEnable or disable the email domainsettings:write

Email Domain Objectโ€‹

{
"id": 1,
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business",
"verification_status": "pending",
"dkim_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.example.com",
"value": "abc123.dkim.amazonses.com"
},
{
"type": "CNAME",
"name": "def456._domainkey.example.com",
"value": "def456.dkim.amazonses.com"
},
{
"type": "CNAME",
"name": "ghi789._domainkey.example.com",
"value": "ghi789.dkim.amazonses.com"
}
],
"enabled": true,
"verified_at": null,
"last_checked_at": null,
"created_at": "2026-03-25T12:00:00+00:00",
"updated_at": "2026-03-25T12:00:00+00:00"
}

Fieldsโ€‹

FieldTypeDescription
idintegerUnique identifier
domainstringThe custom domain (e.g., example.com)
from_emailstringThe sender email address (must use the custom domain)
from_namestringThe sender display name
verification_statusstringCurrent verification status (see below)
dkim_recordsarrayDKIM CNAME records to add to your DNS
enabledbooleanWhether the custom domain is actively used for sending
verified_atstring|nullISO 8601 datetime when domain was verified
last_checked_atstring|nullISO 8601 datetime of last verification check
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

Verification Statusesโ€‹

StatusDescription
pendingDomain created, waiting for DNS records to be configured and verified
verifiedDNS records confirmed, domain is ready for sending
failedDNS verification failed (records not found or incorrect)
revokedDomain was previously verified but verification has been revoked

DKIM Record Objectโ€‹

FieldTypeDescription
typestringAlways CNAME
namestringThe DNS record name to create
valuestringThe DNS record value to point to

Get Email Domainโ€‹

Retrieve the current email domain configuration.

GET /v1/email-domain

Authenticationโ€‹

Requires an API key with the settings:read scope.

Example Requestโ€‹

curl -X GET "https://app.equipdash.com/api/v1/email-domain" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Responseโ€‹

Success (200 OK)โ€‹

{
"data": {
"id": 1,
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business",
"verification_status": "verified",
"dkim_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.example.com",
"value": "abc123.dkim.amazonses.com"
}
],
"enabled": true,
"verified_at": "2026-03-25T12:00:00+00:00",
"last_checked_at": "2026-03-25T12:00:00+00:00",
"created_at": "2026-03-25T10:00:00+00:00",
"updated_at": "2026-03-25T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T12:00:00+00:00"
}
}

Not Found (404)โ€‹

Returned when no email domain has been configured.

{
"error": {
"code": "resource_not_found",
"message": "The requested email domain could not be found."
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T12:00:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:read scope
404resource_not_foundNo email domain configured

Create Email Domainโ€‹

Create a new custom email domain and initiate DNS verification. This returns the DKIM records that must be added to your DNS configuration.

POST /v1/email-domain

Authenticationโ€‹

Requires an API key with the settings:write scope.

Request Bodyโ€‹

FieldTypeRequiredDescription
domainstringYesThe domain to verify (e.g., example.com). Must be a valid domain format.
from_emailstringYesThe sender email address. Must use the specified domain.
from_namestringYesThe sender display name (max 255 characters).

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/email-domain" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business"
}'

Responseโ€‹

Success (201 Created)โ€‹

{
"data": {
"id": 1,
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business",
"verification_status": "pending",
"dkim_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.example.com",
"value": "abc123.dkim.amazonses.com"
},
{
"type": "CNAME",
"name": "def456._domainkey.example.com",
"value": "def456.dkim.amazonses.com"
},
{
"type": "CNAME",
"name": "ghi789._domainkey.example.com",
"value": "ghi789.dkim.amazonses.com"
}
],
"enabled": true,
"verified_at": null,
"last_checked_at": null,
"created_at": "2026-03-25T12:00:00+00:00",
"updated_at": "2026-03-25T12:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T12:00:00+00:00"
}
}
Add DKIM Records to Your DNS

After creating the email domain, you must add the returned dkim_records as CNAME records in your DNS provider. Verification typically takes a few minutes but can take up to 72 hours for DNS propagation. Use the Check Verification Status endpoint to poll for updates.

Validation Rulesโ€‹

  • domain must be a valid domain format (e.g., example.com, mail.example.com)
  • from_email must be a valid email address
  • from_email must use the specified domain (e.g., if domain is example.com, email must end with @example.com)

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:write scope
422validation_errorInvalid request data
422verification_errorDomain verification could not be initiated

Validation Error Exampleโ€‹

{
"error": {
"code": "validation_error",
"message": "The given data was invalid.",
"details": {
"from_email": ["The email address must use the specified domain."]
}
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T12:00:00+00:00"
}
}

Check Verification Statusโ€‹

Refresh the DNS verification status for the configured email domain. Use this endpoint to poll for verification completion after adding DKIM records to your DNS.

POST /v1/email-domain/check-status

Authenticationโ€‹

Requires an API key with the settings:write scope.

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/email-domain/check-status" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Responseโ€‹

Success (200 OK)โ€‹

Returns the email domain with the updated verification status.

{
"data": {
"id": 1,
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business",
"verification_status": "verified",
"dkim_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.example.com",
"value": "abc123.dkim.amazonses.com"
}
],
"enabled": true,
"verified_at": "2026-03-25T14:30:00+00:00",
"last_checked_at": "2026-03-25T14:30:00+00:00",
"created_at": "2026-03-25T12:00:00+00:00",
"updated_at": "2026-03-25T14:30:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T14:30:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:write scope
422check_status_errorVerification check failed (e.g., no domain configured)

Retry Verificationโ€‹

Starts the DNS check again for a domain whose verification_status is failed or revoked. Use this after adding or fixing the DKIM records. check-status only reads the current status and does not restart a failed check.

POST /v1/email-domain/retry

Authenticationโ€‹

Requires an API key with the settings:write scope.

Example Requestโ€‹

curl -X POST "https://app.equipdash.com/api/v1/email-domain/retry" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Responseโ€‹

Success (200 OK)โ€‹

Returns the email domain with verification_status set to pending. Read dkim_records from the response: if the original records could not be reused, new ones are issued and the old ones no longer work.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:write scope
422retry_errorNo domain configured, the domain is already verified, or the check could not be started

Remove Email Domainโ€‹

Remove the custom email domain configuration. After removal, all transactional emails will be sent from the default EquipDash address.

DELETE /v1/email-domain

Authenticationโ€‹

Requires an API key with the settings:write scope.

Example Requestโ€‹

curl -X DELETE "https://app.equipdash.com/api/v1/email-domain" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Responseโ€‹

Success (204 No Content)โ€‹

Returns an empty response body.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:write scope
422remove_errorDomain removal failed (e.g., no domain configured)

Notesโ€‹

  • This action cannot be undone. You will need to reconfigure and re-verify the domain if you want to use it again.
  • Any DKIM DNS records can be safely removed from your DNS after deletion.

Toggle Email Domainโ€‹

Enable or disable the custom email domain without removing it. When disabled, emails are sent from the default EquipDash address. The domain must be verified before it can be enabled.

PATCH /v1/email-domain/toggle

Authenticationโ€‹

Requires an API key with the settings:write scope.

Request Bodyโ€‹

FieldTypeRequiredDescription
enabledbooleanYestrue to enable, false to disable

Example Requestโ€‹

curl -X PATCH "https://app.equipdash.com/api/v1/email-domain/toggle" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"enabled": false
}'

Responseโ€‹

Success (200 OK)โ€‹

Returns the email domain with the updated enabled status.

{
"data": {
"id": 1,
"domain": "example.com",
"from_email": "bookings@example.com",
"from_name": "My Business",
"verification_status": "verified",
"dkim_records": [
{
"type": "CNAME",
"name": "abc123._domainkey.example.com",
"value": "abc123.dkim.amazonses.com"
}
],
"enabled": false,
"verified_at": "2026-03-25T14:30:00+00:00",
"last_checked_at": "2026-03-25T14:30:00+00:00",
"created_at": "2026-03-25T12:00:00+00:00",
"updated_at": "2026-03-25T15:00:00+00:00"
},
"meta": {
"request_id": "req_abc123",
"timestamp": "2026-03-25T15:00:00+00:00"
}
}

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks settings:write scope
422validation_errorInvalid request data
422toggle_errorToggle failed (e.g., no domain configured, or domain not verified)

Verification Workflowโ€‹

Setting up a custom email domain follows this workflow:

  1. Create the email domain via POST /v1/email-domain with your domain, sender email, and sender name
  2. Add DNS records - take the returned dkim_records and create CNAME records in your DNS provider
  3. Wait for propagation - DNS changes can take minutes to 72 hours to propagate
  4. Check status - poll POST /v1/email-domain/check-status until verification_status changes from pending to verified
  5. Send emails - once verified and enabled, all transactional emails use your custom domain

If the records are not found within 72 hours, verification_status becomes failed and the account's admins get an email. Fix the records, then call POST /v1/email-domain/retry.

Create domain (POST)  โ†’  Add DKIM to DNS  โ†’  Poll status  โ†’  Verified!
โ†“ โ†“
"pending" "verified"

Common Use Casesโ€‹

Setting Up a Custom Domainโ€‹

# Step 1: Create the domain
curl -X POST "https://app.equipdash.com/api/v1/email-domain" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{
"domain": "myshop.com",
"from_email": "rentals@myshop.com",
"from_name": "My Rental Shop"
}'

# Step 2: Add the returned DKIM CNAME records to your DNS

# Step 3: Check verification status
curl -X POST "https://app.equipdash.com/api/v1/email-domain/check-status" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."

Temporarily Disabling Custom Domainโ€‹

curl -X PATCH "https://app.equipdash.com/api/v1/email-domain/toggle" \
-H "Authorization: Bearer eqd_live_abc123xyz789..." \
-H "Content-Type: application/json" \
-d '{"enabled": false}'