> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# supportMacros

> List the store's macros. Ordered by name A–Z by default.

**Required scopes:** [`support_config_read`](https://developers.redo.com/docs/api-reference/v3/reference/scopes#scope-support_config_read)

## Arguments

**after** `String`

Forward pagination cursor — returns macros after it.

**before** `String`

Backward pagination cursor — returns macros before it.

**first** `Int`

Forward pagination: returns the first N macros (max 100, default 25). Use with `after`; mutually exclusive with `last`/`before`.

**last** `Int`

Backward pagination: returns the last N macros (max 100, default 25). Use with `before`; mutually exclusive with `first`/`after`.

**orderBy** `[SupportMacroOrderBy](/docs/api-reference/v3/reference/support/support-macro-order-by)`

Which key to sort by (defaults to the first key, newest-first). Combine with `reverse` to flip direction.

**reverse** `Boolean`

Reverses the sort direction selected by `orderBy` (or its default).

**search** `String`

Case-insensitive substring match on the name.

## Returns

**supportMacros** `[SupportMacroConnection!](/docs/api-reference/v3/pagination)` *required*

A paginated list of SupportMacro items.

**fields**

**edges** `[\[SupportMacroEdge!\]!](/docs/api-reference/v3/pagination)` *required*

The list of edges (each a node plus its pagination `cursor`).

**fields**

**cursor** `String!` *required*

Opaque cursor for this item; pass to `after`/`before` to page from here.

**node** `[SupportMacro!](/docs/api-reference/v3/reference/support/support-macro)` *required*

The item at this edge.

**fields**

**addsInternalNote** `String`

Plain-text internal note the macro adds. Null adds none.

**addsTagNames** `[String!]!` *required*

Names of the tags the macro adds when applied. A name with no matching tag in the store is skipped.

**attachments** `[\[SupportMacroAttachment!\]!](/docs/api-reference/v3/reference/support/support-macro-attachment)` *required*

Files the macro attaches to a reply. Inline body images are part of bodyHtml and aren't listed here.

**body** `String!` *required*

Reply body as plain text. A variable appears as its bare name, such as customer\_first\_name, and the app fills it in from the ticket when the macro is used. This field returns variables unfilled. Variable names: current\_date, customer\_first\_name, customer\_full\_name, customer\_last\_name, customer\_email, agent\_first\_name, agent\_full\_name, agent\_last\_name, recent\_claim\_created\_date, recent\_claim\_processed\_date, recent\_claim\_status, recent\_order\_date, recent\_order\_delivery\_status, recent\_order\_fulfillment\_status, recent\_return\_status, recent\_order\_price, recent\_order\_returned\_date, recent\_order\_shipping\_address, recent\_order\_shipping\_date, recent\_order\_tracking\_number, recent\_order\_tracking\_url\_link, recent\_order\_number, recent\_return\_created\_date, recent\_return\_processed\_date, store\_name.

**bodyHtml** `String!` *required*

Reply body as HTML, with the same unfilled variables, each as \<span data-variable="customer\_first\_name">customer\_first\_name\</span>. Inline images use signed links that expire after one hour; query again for fresh ones.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the macro was created.

**id** `ID!` *required*

The id of this macro.

**name** `String!` *required*

Name shown in the macro picker. Unique within the store.

**setsEmailSubject** `String`

Email subject the macro sets on the thread. Null leaves it unchanged.

**setsStatus** `[SupportMacroStatus](/docs/api-reference/v3/reference/support/support-macro-status)`

Status the macro sets when applied. Null leaves the status unchanged.

**snoozeDuration** `[SupportMacroSnoozeDuration](/docs/api-reference/v3/reference/support/support-macro-snooze-duration)`

How long the ticket is snoozed. Set only when setsStatus is SNOOZED.

**nodes** `[\[SupportMacro!\]!](/docs/api-reference/v3/reference/support/support-macro)` *required*

The nodes in this page, without the edge/cursor wrapper — a convenience over `edges`.

**fields**

**addsInternalNote** `String`

Plain-text internal note the macro adds. Null adds none.

**addsTagNames** `[String!]!` *required*

Names of the tags the macro adds when applied. A name with no matching tag in the store is skipped.

**attachments** `[\[SupportMacroAttachment!\]!](/docs/api-reference/v3/reference/support/support-macro-attachment)` *required*

Files the macro attaches to a reply. Inline body images are part of bodyHtml and aren't listed here.

**fields**

**description** `String`

File description as shown in the app. Null when none was saved.

**id** `ID!` *required*

The id of this attachment.

**mimeType** `String`

MIME type, such as image/png. Null for some imported files.

**url** `String`

Signed download link, valid for one hour. Null when it can't be signed right now; the attachment still exists.

**body** `String!` *required*

Reply body as plain text. A variable appears as its bare name, such as customer\_first\_name, and the app fills it in from the ticket when the macro is used. This field returns variables unfilled. Variable names: current\_date, customer\_first\_name, customer\_full\_name, customer\_last\_name, customer\_email, agent\_first\_name, agent\_full\_name, agent\_last\_name, recent\_claim\_created\_date, recent\_claim\_processed\_date, recent\_claim\_status, recent\_order\_date, recent\_order\_delivery\_status, recent\_order\_fulfillment\_status, recent\_return\_status, recent\_order\_price, recent\_order\_returned\_date, recent\_order\_shipping\_address, recent\_order\_shipping\_date, recent\_order\_tracking\_number, recent\_order\_tracking\_url\_link, recent\_order\_number, recent\_return\_created\_date, recent\_return\_processed\_date, store\_name.

**bodyHtml** `String!` *required*

Reply body as HTML, with the same unfilled variables, each as \<span data-variable="customer\_first\_name">customer\_first\_name\</span>. Inline images use signed links that expire after one hour; query again for fresh ones.

**createdAt** `[DateTime!](/docs/api-reference/v3/reference/common/date-time)` *required*

When the macro was created.

**id** `ID!` *required*

The id of this macro.

**name** `String!` *required*

Name shown in the macro picker. Unique within the store.

**setsEmailSubject** `String`

Email subject the macro sets on the thread. Null leaves it unchanged.

**setsStatus** `[SupportMacroStatus](/docs/api-reference/v3/reference/support/support-macro-status)`

Status the macro sets when applied. Null leaves the status unchanged.

**snoozeDuration** `[SupportMacroSnoozeDuration](/docs/api-reference/v3/reference/support/support-macro-snooze-duration)`

How long the ticket is snoozed. Set only when setsStatus is SNOOZED.

**pageInfo** `[PageInfo!](/docs/api-reference/v3/pagination)` *required*

Pagination metadata for the current page.

**fields**

**endCursor** `String`

Cursor of the last edge in this page; pass to `after` to page forward.

**hasNextPage** `Boolean!` *required*

Whether more items exist after this page (drives forward pagination with `first`/`after`).

**hasPreviousPage** `Boolean!` *required*

Whether more items exist before this page (drives backward pagination with `last`/`before`).

**startCursor** `String`

Cursor of the first edge in this page; pass to `before` to page backward.

## Example

```graphql theme={null}
query {
  supportMacros(after: "...", before: "...", first: 10, last: 10, orderBy: CREATED_AT, reverse: true, search: "...") {
    nodes {
      addsInternalNote
      addsTagNames
      body
      bodyHtml
      createdAt
      id
      name
      setsEmailSubject
      # ...
    }
    pageInfo { hasNextPage endCursor }
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.