> 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

# QueryEmailTransmissions

# Package: emails

# Namespace: EmailTransmissionService

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

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

## Introduction

Retrieves a list of up to 100 email transmissions, given the provided paging, filtering, and sorting.

`emailHtmlContent` is not returned in the results. To retrieve the full HTML content of a specific transmission,
call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md).

Query Email Transmissions runs with these defaults, which you can override:

- `updatedDate` is sorted in `DESC` order
- `paging.limit` is `50`

To learn about working with Query methods, see [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language.md),
[Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging.md),
and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection.md).

---

## REST API

### Schema

```
 Method: queryEmailTransmissions
 Description: Retrieves a list of up to 100 email transmissions, given the provided paging, filtering, and sorting.  `emailHtmlContent` is not returned in the results. To retrieve the full HTML content of a specific transmission, call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md).  Query Email Transmissions runs with these defaults, which you can override:  - `updatedDate` is sorted in `DESC` order - `paging.limit` is `50`  To learn about working with Query methods, see [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language.md), [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging.md), and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection.md).
 URL: https://www.wixapis.com/email-transmissions/v1/email-transmissions/query
 Method: POST
 Method parameters:
   param name: query | type: CursorQuery    
     - name: cursorPaging | type: CursorPaging | description: Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`.  
        - name: limit | type: integer | description: Number of items to load.  | validation: minimum 0, maximum 100, format int32
        - name: cursor | type: string | description: Pointer to the next or previous page in the list of results.  You can get the relevant cursor token from the `pagingMetadata` object in the previous call's response. Not relevant for the first request.  | validation: maxLength 1000
        - name: filter | type: object | description: Filter object in the following format: `"filter" : { "fieldName1": "value1", "fieldName2":{"$operator":"value2"} }` Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains`  
        - name: sort | type: array<Sorting> | description: Sort object in the following format: `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]`  | validation: maxItems 4
           - name: fieldName | type: string | description: Name of the field to sort by.  | validation: minLength 1, maxLength 50
           - name: order | type: SortOrder | description: Sort order.  
                 - enum: ASC, DESC
 Query fields:
   - field: id | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: type | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: status | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: updatedDate | operators: $eq, $ne, $exists, $in, $hasSome, $lt, $lte, $gt, $gte | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: emailSubject | operators: $eq, $ne, $exists, $in, $hasSome, $startsWith, $gt, $lt, $lte, $gte | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
 Return type: QueryEmailTransmissionsResponse
  - name: emailTransmissions | type: array<EmailTransmission> | description: Retrieved email transmissions.  
     - 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.
  - name: pagingMetadata | type: CursorPagingMetadata | description: Paging metadata.  
     - name: count | type: integer | description: Number of items returned in the response.  | validation: format int32
     - name: cursors | type: Cursors | description: Offset that was requested.  
        - name: next | type: string | description: Cursor pointing to next page in the list of results.  | validation: maxLength 1000
        - name: prev | type: string | description: Cursor pointing to previous page in the list of results.  | validation: maxLength 1000
     - name: hasNext | type: boolean | description: Indicates if there are more results after the current page. If `true`, another page of results can be retrieved. If `false`, this is the last page.  


```

### Examples

### Query email transmissions
Retrieve email transmissions filtered by status, sorted by most recently updated.

```curl
curl -X POST \
'https://www.wixapis.com/email-transmissions/v1/email-transmissions/query' \
-H 'Authorization: <AUTH>' \
-H 'Content-Type: application/json' \
-d '{
  "query": {
    "filter": {
      "status": {"$eq": "PROCESSED"}
    },
    "sort": [{"fieldName": "updatedDate", "order": "DESC"}],
    "cursorPaging": {"limit": 3}
  }
}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.emailTransmissions.emailTransmissions.queryEmailTransmissions(query)
 Description: Retrieves a list of up to 100 email transmissions, given the provided paging, filtering, and sorting.  `emailHtmlContent` is not returned in the results. To retrieve the full HTML content of a specific transmission, call [Get Email Transmission](https://dev.wix.com/docs/api-reference/business-management/marketing/emails/email-transmission-v1/get-email-transmission.md).  Query Email Transmissions runs with these defaults, which you can override:  - `updatedDate` is sorted in `DESC` order - `paging.limit` is `50`  To learn about working with Query methods, see [API Query Language](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-the-wix-api-query-language.md), [Sorting and Paging](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-sorting-and-paging.md), and [Field Projection](https://dev.wix.com/docs/api-reference/articles/work-with-wix-apis/data-retrieval/about-field-projection.md).
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  query
 Method parameters: 
   param name: query | type: EmailTransmissionQuery   | required: true 
     - name: cursorPaging | type: CursorPaging | description: Cursor token pointing to a page of results. Not used in the first request. Following requests use the cursor token and not `filter` or `sort`.  
        - name: limit | type: integer | description: Number of items to load.  | validation: minimum 0, maximum 100, format int32
        - name: cursor | type: string | description: Pointer to the next or previous page in the list of results.  You can get the relevant cursor token from the `pagingMetadata` object in the previous call's response. Not relevant for the first request.  | validation: maxLength 1000
        - name: filter | type: object | description: Filter object in the following format: `"filter" : { "fieldName1": "value1", "fieldName2":{"$operator":"value2"} }` Example of operators: `$eq`, `$ne`, `$lt`, `$lte`, `$gt`, `$gte`, `$in`, `$hasSome`, `$hasAll`, `$startsWith`, `$contains`  
        - name: sort | type: array<Sorting> | description: Sort object in the following format: `[{"fieldName":"sortField1","order":"ASC"},{"fieldName":"sortField2","order":"DESC"}]`  | validation: maxItems 4
           - name: fieldName | type: string | description: Name of the field to sort by.  | validation: minLength 1, maxLength 50
           - name: order | type: SortOrder | description: Sort order.  
                 - enum: ASC, DESC
 Query fields:
   - field: _id | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: type | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: status | operators: $eq, $ne, $in | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: _updatedDate | operators: $eq, $ne, $exists, $in, $hasSome, $lt, $lte, $gt, $gte | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
   - field: emailSubject | operators: $eq, $ne, $exists, $in, $hasSome, $startsWith, $gt, $lt, $lte, $gte | sort: ASC, DESC | aggregatable: undefined | searchable: undefined
 Return type: PROMISE<QueryEmailTransmissionsResponse>
  - name: emailTransmissions | type: array<EmailTransmission> | description: Retrieved email transmissions.  
     - 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: 
           - 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.
  - name: pagingMetadata | type: CursorPagingMetadata | description: Paging metadata.  
     - name: count | type: integer | description: Number of items returned in the response.  | validation: format int32
     - name: cursors | type: Cursors | description: Offset that was requested.  
        - name: next | type: string | description: Cursor pointing to next page in the list of results.  | validation: maxLength 1000
        - name: prev | type: string | description: Cursor pointing to previous page in the list of results.  | validation: maxLength 1000
     - name: hasNext | type: boolean | description: Indicates if there are more results after the current page. If `true`, another page of results can be retrieved. If `false`, this is the last page.  


```

### Examples

### Query email transmissions
Retrieve email transmissions filtered by status, sorted by most recently updated.

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

async function queryEmailTransmissions() {
  const response = await emailTransmissions.queryEmailTransmissions(
    {
      filter: { status: { $eq: "PROCESSED" } },
      sort: [{ fieldName: "updatedDate", order: "DESC" }],
      cursorPaging: { limit: 3 },
    },
  );
}

/* Promise resolves to:
 * {
 *   "emailTransmissions": [
 *     {
 *       "_id": "dd266d88-6aac-48f5-a7b4-4ce61a92732f",
 *       "_createdDate": "2026-07-20T14:43:11.093Z",
 *       "_updatedDate": "2026-07-20T14:43:12.579Z",
 *       "emailSubject": "Your order has been confirmed",
 *       "emailHtmlContent": "",
 *       "senderName": "My Store",
 *       "toRecipients": [
 *         {
 *           "contactId": "2b79d09c-6c61-4fe3-9769-2c791343e8d3",
 *           "failureReason": "EMAIL_ADDRESS_BOUNCED"
 *         }
 *       ],
 *       "type": "TRANSACTIONAL",
 *       "status": "PROCESSED"
 *     }
 *   ],
 *   "pagingMetadata": {
 *     "count": 1,
 *     "hasNext": false
 *   }
 * }
 */

```

### queryEmailTransmissions (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 queryEmailTransmissions(query) {
  const response = await myWixClient.emailTransmissions.queryEmailTransmissions(query);
};
```

---