> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

# SendEmailTransmission

# Package: emails

# Namespace: EmailTransmissionService

# Method link: https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/send-email-transmission.md

## Permission Scopes:
Manage Email Marketing: SCOPE.DC-PROMOTE.EMAIL-MARKETING

## Introduction

Creates and sends an email transmission to one or more recipients.

The email is sent asynchronously. The returned transmission has `ACCEPTED` status.
Call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md) or listen for the `EmailTransmissionCreated` webhook to track delivery status.

---

## REST API

### Schema

```
 Method: sendEmailTransmission
 Description: Creates and sends an email transmission to one or more recipients.  The email is sent asynchronously. The returned transmission has `ACCEPTED` status. Call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md) or listen for the `EmailTransmissionCreated` webhook to track delivery status.
 URL: https://www.wixapis.com/email-transmissions/v1/email-transmissions/send
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  emailTransmission, emailTransmission.emailHtmlContent, emailTransmission.toRecipients, emailTransmission.type
 Method parameters: 
   param name: emailTransmission | type: EmailTransmission | description: An email transmission represents a single email send request, including its recipients, HTML content, sender information, type, and delivery status. Creating an email transmission triggers the email to be sent asynchronously to all specified recipients. | required: true 
     - name: marketingOptions | type: MarketingOptions | description: Options for marketing emails.  Used only when `type` is `MARKETING`.  
        - name: unsubscribeUrlPlaceholder | type: string | description: Placeholder in `emailHtmlContent` that gets replaced with a recipient-specific unsubscribe URL before the email is sent. Case-sensitive. For example, `{{unsubscribe_url}}` or `[UNSUBSCRIBE_URL]`. The placeholder must be unique within the HTML content.  If not set, an unsubscribe link in the site's default language is appended to the bottom of the email.  | validation: maxLength 100
        - name: emailSubject | type: string | description: Subject line of the email.  Default: None (email is sent without a subject line).  | validation: maxLength 200
        - name: emailHtmlContent | type: string | description: Full HTML content of the email.  Not returned in `queryEmailTransmissions`. Use `getEmailTransmission` to retrieve the HTML content of a specific transmission.  Stored for 30 days after the transmission is created. After that, this field returns `"<expired>"`. | required: true | validation: maxLength 1000000
        - name: metadata | type: object | description: Custom key-value pairs attached to the transmission to identify the context in which the email was sent. These values are passed to the email service provider and included in domain event payloads. Keys and values support alphanumeric characters only (letters and numbers, no spaces or special characters).  Default: `{}`  | validation: maxItems 10, format map
        - name: senderName | type: string | description: Display name shown as the sender.  Default: None (no display name is set).  | validation: minLength 1, maxLength 50
        - name: senderEmailAddress | type: string | description: Sender email address. Must be verified using the Sender Emails API before use.  If the provided address can't be used as a FROM address (for example, addresses from free email providers such as gmail.com), the email is sent from `no-reply@wixsitemail.com` and the provided address is automatically used as the reply-to address instead.  Default: `no-reply@wixsitemail.com`  | validation: format EMAIL
        - name: replyTo | type: Recipient | description: Recipient that receives replies to this email. When a recipient replies, the reply is directed to this address instead of the sender address.  Default: When `senderEmailAddress` is provided and the email is sent from the Wix shared sender address, replies are automatically directed to `senderEmailAddress`.  
           - ONE-OF: 
              - name: contactId | type: string | description: GUID of the contact to send the email to. The contact's email address is retrieved from the Contacts API.  | validation: format GUID
              - name: userId | type: string | description: GUID of the Wix user to send the email to. The user must be a site collaborator.  The user's email address is retrieved from the Users API.  | validation: format GUID
              - name: emailAddress | type: string | description: Email address to send the email to. A contact is created with this address if one doesn't already exist.  | validation: format EMAIL
           - name: name | type: string | description: Display name of the recipient.  | validation: minLength 1, maxLength 50
        - name: toRecipients | type: array<Recipient> | description: List of recipients the email is sent to. | required: true | validation: minItems 1, maxItems 100
        - name: type | type: Type | description: Email type. | required: true 
             - enum:
             -     TRANSACTIONAL: Email triggered by a specific action, such as an order confirmation or booking reminder. No unsubscribe link is added.
             -     MARKETING: Email sent to multiple recipients as part of a campaign, such as a newsletter or promotion. An unsubscribe link is automatically added.
   param name: idempotencyKey | type: idempotencyKey | description: Unique key used to prevent duplicate transmissions. If a request with the same idempotency key is received, the original response is returned without creating a new transmission.  | validation: format GUID
 Return type: SendEmailTransmissionResponse
  - name: emailTransmission | type: EmailTransmission | description: Sent email transmission.  
     - ONE-OF: 
        - name: marketingOptions | type: MarketingOptions | description: Options for marketing emails.  Used only when `type` is `MARKETING`.  
           - name: unsubscribeUrlPlaceholder | type: string | description: Placeholder in `emailHtmlContent` that gets replaced with a recipient-specific unsubscribe URL before the email is sent. Case-sensitive. For example, `{{unsubscribe_url}}` or `[UNSUBSCRIBE_URL]`. The placeholder must be unique within the HTML content.  If not set, an unsubscribe link in the site's default language is appended to the bottom of the email.  | validation: maxLength 100
     - name: id | type: string | description: Email transmission GUID.  | validation: format GUID
     - name: createdDate | type: string | description: Date and time the email transmission was created.  | validation: format date-time
     - name: updatedDate | type: string | description: Date and time the email transmission was last updated.  | validation: format date-time
     - name: revision | type: string | description: Revision number, which increments by 1 each time the email transmission is updated.  | validation: format int64
     - name: emailSubject | type: string | description: Subject line of the email.  Default: None (email is sent without a subject line).  | validation: maxLength 200
     - name: emailHtmlContent | type: string | description: Full HTML content of the email.  Not returned in `queryEmailTransmissions`. Use `getEmailTransmission` to retrieve the HTML content of a specific transmission.  Stored for 30 days after the transmission is created. After that, this field returns `"<expired>"`.  | validation: maxLength 1000000
     - name: metadata | type: object | description: Custom key-value pairs attached to the transmission to identify the context in which the email was sent. These values are passed to the email service provider and included in domain event payloads. Keys and values support alphanumeric characters only (letters and numbers, no spaces or special characters).  Default: `{}`  | validation: maxItems 10, format map
     - name: senderName | type: string | description: Display name shown as the sender.  Default: None (no display name is set).  | validation: minLength 1, maxLength 50
     - name: senderEmailAddress | type: string | description: Sender email address. Must be verified using the Sender Emails API before use.  If the provided address can't be used as a FROM address (for example, addresses from free email providers such as gmail.com), the email is sent from `no-reply@wixsitemail.com` and the provided address is automatically used as the reply-to address instead.  Default: `no-reply@wixsitemail.com`  | validation: format EMAIL
     - name: replyTo | type: Recipient | description: Recipient that receives replies to this email. When a recipient replies, the reply is directed to this address instead of the sender address.  Default: When `senderEmailAddress` is provided and the email is sent from the Wix shared sender address, replies are automatically directed to `senderEmailAddress`.  
        - ONE-OF: 
           - name: contactId | type: string | description: GUID of the contact to send the email to. The contact's email address is retrieved from the Contacts API.  | validation: format GUID
           - name: userId | type: string | description: GUID of the Wix user to send the email to. The user must be a site collaborator.  The user's email address is retrieved from the Users API.  | validation: format GUID
           - name: emailAddress | type: string | description: Email address to send the email to. A contact is created with this address if one doesn't already exist.  | validation: format EMAIL
        - name: name | type: string | description: Display name of the recipient.  | validation: minLength 1, maxLength 50
        - name: failureReason | type: FailureReason | description: Reason why the email couldn't be delivered to this recipient. `NONE` means the email was successfully sent.  Returned once the transmission reaches `PROCESSED` status.  
             - enum:
             -     NONE: Email was successfully sent to this recipient.
             -     RECIPIENT_NOT_FOUND: Contact or user wasn't found by the provided ID.
             -     EMAIL_ADDRESS_MISSING: Contact or user doesn't have an email address.
             -     EMAIL_ADDRESS_INVALID: Email address doesn't exist or is invalid.
             -     EMAIL_ADDRESS_BOUNCED: Email address has previously bounced and can't be sent to.
             -     MARKETING_CONSENT_NOT_GIVEN: Recipient hasn't given consent to receive marketing emails.
             -     NOT_SITE_COLLABORATOR: User isn't a collaborator on this site. Only site collaborators can be specified as recipients by user ID.
     - name: toRecipients | type: array<Recipient> | description: List of recipients the email is sent to.  | validation: minItems 1, maxItems 100
     - name: type | type: Type | description: Email type.  
         - enum:
         -     TRANSACTIONAL: Email triggered by a specific action, such as an order confirmation or booking reminder. No unsubscribe link is added.
         -     MARKETING: Email sent to multiple recipients as part of a campaign, such as a newsletter or promotion. An unsubscribe link is automatically added.
     - name: status | type: Status | description: Current status of the email transmission.  
         - enum:
         -     ACCEPTED: Email transmission was accepted and is queued for processing.
         -     IN_PROGRESS: Email transmission is being processed. The content is being checked, recipients are being resolved, and emails are being sent.
         -     PROCESSED: Email transmission has been fully processed. Per-recipient delivery information is available in `toRecipients`.
         -     REJECTED: Email transmission failed an abuse check. No emails were sent. See `rejectedOptions` for details.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_METADATA | Description: One or more metadata keys or values contain invalid characters. Keys and values must consist of 1-50 alphanumeric characters.
   HTTP Code: 403 | Status Code: PERMISSION_DENIED | Application Code: ACCOUNT_SUSPENDED | Description: This site's account is suspended due to a terms of service violation.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: OUT_OF_QUOTA | Description: The site has reached its email sending quota. Upgrade the site's Email Marketing plan to send more emails.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: UNVERIFIED_SENDER_EMAIL | Description: The provided `senderEmailAddress` hasn't been verified. Verify the sender email using the Sender Emails API before sending.


```

### Examples

### Send a transactional email
Send a transactional email to a contact by contact ID.

```curl
curl -X POST \
'https://www.wixapis.com/email-transmissions/v1/email-transmissions/send' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "emailTransmission": {
    "emailSubject": "Your order has been confirmed",
    "emailHtmlContent": "<p>Hi John, your order #12345 has been confirmed. Thank you for shopping with us!</p>",
    "senderName": "My Store",
    "senderEmailAddress": "store@myshop.com",
    "replyTo": {
      "emailAddress": "store@myshop.com"
    },
    "toRecipients": [
      {
        "contactId": "2b79d09c-6c61-4fe3-9769-2c791343e8d3"
      }
    ],
    "type": "TRANSACTIONAL"
  },
  "idempotencyKey": "d7a341c4-196b-46e7-813c-2b0fc1847ec6"
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.emailTransmissions.emailTransmissions.sendEmailTransmission(emailTransmission, options)
 Description: Creates and sends an email transmission to one or more recipients.  The email is sent asynchronously. The returned transmission has `ACCEPTED` status. Call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md) or listen for the `EmailTransmissionCreated` webhook to track delivery status.
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  emailTransmission, emailTransmission.emailHtmlContent, emailTransmission.toRecipients, emailTransmission.toRecipients, emailTransmission.type
 Method parameters: 
   param name: emailTransmission | type: EmailTransmission | description: An email transmission represents a single email send request, including its recipients, HTML content, sender information, type, and delivery status. Creating an email transmission triggers the email to be sent asynchronously to all specified recipients. | required: true 
     - name: marketingOptions | type: MarketingOptions | description: Options for marketing emails.  Used only when `type` is `MARKETING`.  
        - name: unsubscribeUrlPlaceholder | type: string | description: Placeholder in `emailHtmlContent` that gets replaced with a recipient-specific unsubscribe URL before the email is sent. Case-sensitive. For example, `{{unsubscribe_url}}` or `[UNSUBSCRIBE_URL]`. The placeholder must be unique within the HTML content.  If not set, an unsubscribe link in the site's default language is appended to the bottom of the email.  | validation: maxLength 100
        - name: emailSubject | type: string | description: Subject line of the email.  Default: None (email is sent without a subject line).  | validation: maxLength 200
        - name: emailHtmlContent | type: string | description: Full HTML content of the email.  Not returned in `queryEmailTransmissions`. Use `getEmailTransmission` to retrieve the HTML content of a specific transmission.  Stored for 30 days after the transmission is created. After that, this field returns `"<expired>"`. | required: true | validation: maxLength 1000000
        - name: metadata | type: object | description: Custom key-value pairs attached to the transmission to identify the context in which the email was sent. These values are passed to the email service provider and included in domain event payloads. Keys and values support alphanumeric characters only (letters and numbers, no spaces or special characters).  Default: `{}`  | validation: maxItems 10, format map
        - name: senderName | type: string | description: Display name shown as the sender.  Default: None (no display name is set).  | validation: minLength 1, maxLength 50
        - name: senderEmailAddress | type: string | description: Sender email address. Must be verified using the Sender Emails API before use.  If the provided address can't be used as a FROM address (for example, addresses from free email providers such as gmail.com), the email is sent from `no-reply@wixsitemail.com` and the provided address is automatically used as the reply-to address instead.  Default: `no-reply@wixsitemail.com`  | validation: format EMAIL
        - name: replyTo | type: Recipient | description: Recipient that receives replies to this email. When a recipient replies, the reply is directed to this address instead of the sender address.  Default: When `senderEmailAddress` is provided and the email is sent from the Wix shared sender address, replies are automatically directed to `senderEmailAddress`.  
           - ONE-OF: - required: true
              - name: contactId | type: string | description: GUID of the contact to send the email to. The contact's email address is retrieved from the Contacts API.  | validation: format GUID
              - name: userId | type: string | description: GUID of the Wix user to send the email to. The user must be a site collaborator.  The user's email address is retrieved from the Users API.  | validation: format GUID
              - name: emailAddress | type: string | description: Email address to send the email to. A contact is created with this address if one doesn't already exist.  | validation: format EMAIL
           - name: name | type: string | description: Display name of the recipient.  | validation: minLength 1, maxLength 50
        - name: toRecipients | type: array<Recipient> | description: List of recipients the email is sent to. | required: true | validation: minItems 1, maxItems 100
        - name: type | type: Type | description: Email type. | required: true 
             - enum:
             -     TRANSACTIONAL: Email triggered by a specific action, such as an order confirmation or booking reminder. No unsubscribe link is added.
             -     MARKETING: Email sent to multiple recipients as part of a campaign, such as a newsletter or promotion. An unsubscribe link is automatically added.
   param name: options | type: SendEmailTransmissionOptions  none  
        - name: idempotencyKey | type: string | description: Unique key used to prevent duplicate transmissions. If a request with the same idempotency key is received, the original response is returned without creating a new transmission.  | validation: format GUID
 Return type: PROMISE<SendEmailTransmissionResponse>
  - name: emailTransmission | type: EmailTransmission | description: Sent email transmission.  
     - ONE-OF: 
        - name: marketingOptions | type: MarketingOptions | description: Options for marketing emails.  Used only when `type` is `MARKETING`.  
           - name: unsubscribeUrlPlaceholder | type: string | description: Placeholder in `emailHtmlContent` that gets replaced with a recipient-specific unsubscribe URL before the email is sent. Case-sensitive. For example, `{{unsubscribe_url}}` or `[UNSUBSCRIBE_URL]`. The placeholder must be unique within the HTML content.  If not set, an unsubscribe link in the site's default language is appended to the bottom of the email.  | validation: maxLength 100
     - name: _id | type: string | description: Email transmission GUID.  | validation: format GUID
     - name: _createdDate | type: Date | description: Date and time the email transmission was created.  
     - name: _updatedDate | type: Date | description: Date and time the email transmission was last updated.  
     - name: revision | type: string | description: Revision number, which increments by 1 each time the email transmission is updated.  | validation: format int64
     - name: emailSubject | type: string | description: Subject line of the email.  Default: None (email is sent without a subject line).  | validation: maxLength 200
     - name: emailHtmlContent | type: string | description: Full HTML content of the email.  Not returned in `queryEmailTransmissions`. Use `getEmailTransmission` to retrieve the HTML content of a specific transmission.  Stored for 30 days after the transmission is created. After that, this field returns `"<expired>"`.  | validation: maxLength 1000000
     - name: metadata | type: object | description: Custom key-value pairs attached to the transmission to identify the context in which the email was sent. These values are passed to the email service provider and included in domain event payloads. Keys and values support alphanumeric characters only (letters and numbers, no spaces or special characters).  Default: `{}`  | validation: maxItems 10, format map
     - name: senderName | type: string | description: Display name shown as the sender.  Default: None (no display name is set).  | validation: minLength 1, maxLength 50
     - name: senderEmailAddress | type: string | description: Sender email address. Must be verified using the Sender Emails API before use.  If the provided address can't be used as a FROM address (for example, addresses from free email providers such as gmail.com), the email is sent from `no-reply@wixsitemail.com` and the provided address is automatically used as the reply-to address instead.  Default: `no-reply@wixsitemail.com`  | validation: format EMAIL
     - name: replyTo | type: Recipient | description: Recipient that receives replies to this email. When a recipient replies, the reply is directed to this address instead of the sender address.  Default: When `senderEmailAddress` is provided and the email is sent from the Wix shared sender address, replies are automatically directed to `senderEmailAddress`.  
        - ONE-OF: - required: true
           - name: contactId | type: string | description: GUID of the contact to send the email to. The contact's email address is retrieved from the Contacts API.  | validation: format GUID
           - name: userId | type: string | description: GUID of the Wix user to send the email to. The user must be a site collaborator.  The user's email address is retrieved from the Users API.  | validation: format GUID
           - name: emailAddress | type: string | description: Email address to send the email to. A contact is created with this address if one doesn't already exist.  | validation: format EMAIL
        - name: name | type: string | description: Display name of the recipient.  | validation: minLength 1, maxLength 50
        - name: failureReason | type: FailureReason | description: Reason why the email couldn't be delivered to this recipient. `NONE` means the email was successfully sent.  Returned once the transmission reaches `PROCESSED` status.  
             - enum:
             -     NONE: Email was successfully sent to this recipient.
             -     RECIPIENT_NOT_FOUND: Contact or user wasn't found by the provided ID.
             -     EMAIL_ADDRESS_MISSING: Contact or user doesn't have an email address.
             -     EMAIL_ADDRESS_INVALID: Email address doesn't exist or is invalid.
             -     EMAIL_ADDRESS_BOUNCED: Email address has previously bounced and can't be sent to.
             -     MARKETING_CONSENT_NOT_GIVEN: Recipient hasn't given consent to receive marketing emails.
             -     NOT_SITE_COLLABORATOR: User isn't a collaborator on this site. Only site collaborators can be specified as recipients by user ID.
     - name: toRecipients | type: array<Recipient> | description: List of recipients the email is sent to.  | validation: minItems 1, maxItems 100
     - name: type | type: Type | description: Email type.  
         - enum:
         -     TRANSACTIONAL: Email triggered by a specific action, such as an order confirmation or booking reminder. No unsubscribe link is added.
         -     MARKETING: Email sent to multiple recipients as part of a campaign, such as a newsletter or promotion. An unsubscribe link is automatically added.
     - name: status | type: Status | description: Current status of the email transmission.  
         - enum:
         -     ACCEPTED: Email transmission was accepted and is queued for processing.
         -     IN_PROGRESS: Email transmission is being processed. The content is being checked, recipients are being resolved, and emails are being sent.
         -     PROCESSED: Email transmission has been fully processed. Per-recipient delivery information is available in `toRecipients`.
         -     REJECTED: Email transmission failed an abuse check. No emails were sent. See `rejectedOptions` for details.

 Possible Errors:
   HTTP Code: 400 | Status Code: INVALID_ARGUMENT | Application Code: INVALID_METADATA | Description: One or more metadata keys or values contain invalid characters. Keys and values must consist of 1-50 alphanumeric characters.
   HTTP Code: 403 | Status Code: PERMISSION_DENIED | Application Code: ACCOUNT_SUSPENDED | Description: This site's account is suspended due to a terms of service violation.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: OUT_OF_QUOTA | Description: The site has reached its email sending quota. Upgrade the site's Email Marketing plan to send more emails.
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: UNVERIFIED_SENDER_EMAIL | Description: The provided `senderEmailAddress` hasn't been verified. Verify the sender email using the Sender Emails API before sending.


```

### Examples

### Send a transactional email
Send a transactional email to a contact by contact ID.

```javascript
import { emailTransmissions } from "@wix/email-transmissions";

async function sendEmailTransmission() {
  const response = await emailTransmissions.sendEmailTransmission(
    {
      emailSubject: "Your order has been confirmed",
      emailHtmlContent: "<p>Hi John, your order #12345 has been confirmed. Thank you for shopping with us!</p>",
      senderName: "My Store",
      toRecipients: [
        {
          contactId: "2b79d09c-6c61-4fe3-9769-2c791343e8d3",
        },
      ],
      type: "TRANSACTIONAL",
    },
    {
      idempotencyKey: "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    },
  );
}

/* Promise resolves to:
 * {
 *   "emailTransmission": {
 *     "_id": "dd266d88-6aac-48f5-a7b4-4ce61a92732f",
 *     "_createdDate": "2026-07-20T14:43:11.093Z",
 *     "_updatedDate": "2026-07-20T14:43:11.093Z",
 *     "emailSubject": "Your order has been confirmed",
 *     "emailHtmlContent": "<p>Hi John, your order #12345 has been confirmed. Thank you for shopping with us!</p>",
 *     "senderName": "My Store",
 *     "toRecipients": [
 *       {
 *         "contactId": "2b79d09c-6c61-4fe3-9769-2c791343e8d3",
 *         "failureReason": "NONE"
 *       }
 *     ],
 *     "type": "TRANSACTIONAL",
 *     "status": "ACCEPTED"
 *   }
 * }
 */

```

### sendEmailTransmission (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).

```javascript
import { createClient } from '@wix/sdk';
import { emailTransmissions } from '@wix/email-transmissions';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { emailTransmissions },
  // Include the auth strategy and host as relevant
});


async function sendEmailTransmission(emailTransmission,options) {
  const response = await myWixClient.emailTransmissions.sendEmailTransmission(emailTransmission,options);
};
```

---