Skip to main content
POST
/
marketing
/
v3
/
transactional
/
single-email
/
send
Send a single send transactional email asynchronously.
curl --request POST \
  --url https://api.hubapi.com/marketing/v3/transactional/single-email/send \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "emailId": 123,
  "message": {
    "to": "<string>",
    "bcc": [
      "<string>"
    ],
    "cc": [
      "<string>"
    ],
    "from": "<string>",
    "replyTo": [
      "<string>"
    ],
    "sendId": "<string>"
  },
  "contactProperties": {},
  "customProperties": {}
}
'
{
  "status": "CANCELED",
  "statusId": "<string>",
  "completedAt": "2023-11-07T05:31:56Z",
  "eventId": {
    "created": "2023-11-07T05:31:56Z",
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  },
  "message": "<string>",
  "requestedAt": "2023-11-07T05:31:56Z",
  "sendResult": "ADDRESS_LIST_BOMBED",
  "startedAt": "2023-11-07T05:31:56Z"
}

Documentation Index

Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Supported products

Authorizations

Authorization
string
header
required

The access token received from the authorization server in the OAuth 2.0 flow.

Body

application/json

A request to send a single transactional email asynchronously.

emailId
integer<int64>
required

The content ID for the transactional email, which can be found in email tool UI.

message
object
required

A JSON object containing anything you want to override.

contactProperties
object

The contactProperties field is a map of contact property values. Each contact property value contains a name and value property. Each property will get set on the contact record and will be visible in the template under {{ contact.NAME }}. Use these properties when you want to set a contact property while you’re sending the email. For example, when sending a reciept you may want to set a last_paid_date property, as the sending of the receipt will have information about the last payment.

customProperties
object

The customProperties field is a map of property values. Each property value contains a name and value property. Each property will be visible in the template under {{ custom.NAME }}. Note: Custom properties do not currently support arrays. To provide a listing in an email, one workaround is to build an HTML list (either with tables or ul) and specify it as a custom property.

Response

successful operation

Describes the status of an email send request.

status
enum<string>
required

Status of the send request.

Available options:
CANCELED,
COMPLETE,
PENDING,
PROCESSING
statusId
string
required

Identifier used to query the status of the send.

completedAt
string<date-time>

Time when the send was completed.

eventId
object

The ID of a send event.

message
string

A human readable message describing the error along with remediation steps where appropriate

requestedAt
string<date-time>

Time when the send was requested.

sendResult
enum<string>

Result of the send.

Available options:
ADDRESS_LIST_BOMBED,
ADDRESS_ONLY_ACCEPTED_ON_PROD,
ADDRESS_OPTED_OUT,
ATTACHMENT_DOWNLOAD_QUEUE_FULL,
BLOCKED_ADDRESS,
BLOCKED_DOMAIN,
BRAND_RECIPIENT_FATIGUE_SUPPRESSED,
CAMPAIGN_CANCELLED,
CANCELLED_ABUSE,
CORRUPT_INPUT,
EMAIL_DISABLED,
EMAIL_UNCONFIRMED,
GDPR_DOI_ENABLED,
GRAYMAIL_SUPPRESSED,
HUBL_LIMIT_EXCEEDED,
IDEMPOTENT_FAIL,
IDEMPOTENT_IGNORE,
INVALID_APP_ID_ATTRIBUTION,
INVALID_FROM_ADDRESS,
INVALID_TO_ADDRESS,
LOW_CONTACT_QUALITY_SCORE,
MISSING_CONTENT,
MISSING_REQUIRED_PARAMETER,
MISSING_TEMPLATE_PROPERTIES,
MTA_IGNORE,
NON_MARKETABLE_CONTACT,
PORTAL_AUTHENTICATION_FAILURE,
PORTAL_EXPIRED,
PORTAL_MISSING_MARKETING_SCOPE,
PORTAL_NOT_AUTHORIZED_FOR_APPLICATION,
PORTAL_OVER_LIMIT,
PORTAL_SUSPENDED,
PREVIOUS_SPAM,
PREVIOUSLY_BOUNCED,
PREVIOUSLY_UNSUBSCRIBED_BRAND,
PREVIOUSLY_UNSUBSCRIBED_BUSINESS_UNIT,
PREVIOUSLY_UNSUBSCRIBED_MESSAGE,
PREVIOUSLY_UNSUBSCRIBED_PORTAL,
QUARANTINED_ADDRESS,
QUEUED,
RECIPIENT_FATIGUE_SUPPRESSED,
SENT,
TEMPLATE_RENDER_EXCEPTION,
THROTTLED,
TOO_MANY_RECIPIENTS,
UBB_GOVERNANCE_MISSING,
UNCONFIGURED_SENDING_DOMAIN,
UNDELIVERABLE,
VALIDATION_FAILED
startedAt
string<date-time>

Time when the send began processing.

Last modified on March 30, 2026