> ## 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.

# CommerceAgentOutreach

> An outbound message that opened or continued a conversation, and what sent it.

**automation**

The marketing automation that sent this outreach, if one did.

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

**fields**

**analytics** *required*

Analytics for this marketing automation, grouped by what is being measured.

**fields**

**messaging** *required*

Email and SMS performance, read from the analytics warehouse: what was sent, how it was engaged with, and the orders and revenue attributed to it. Covers messages sent by the automation's own send steps; Recover conversations are measured separately and are not included here.

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

**fields**

**Arguments**

**attributionWindowDays** `Int`

How many days after a message an order still counts toward it, 1-30.

**endDate** *required*

Last day to report on, inclusive, in the store's timezone. The range may span at most 400 days.

**startDate** *required*

First day to report on, inclusive, in the store's timezone. Must be on or before `endDate`, and the range may span at most 400 days.

**category** *required*

Which trigger family this marketing automation belongs to.

**createdAt** *required*

When the automation was created.

**description** `String`

The merchant's description of what this automation does.

**enabled** `Boolean!` *required*

Whether the automation is currently running.

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

The id of this automation.

**legacyId** `String!` *required*

The automation's legacy Mongo ObjectId (24-char hex) from before the CockroachDB migration.

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

The merchant-facing name of the automation.

**publishedAt**

When the current version was published. Null while it has only ever been a draft.

**steps** *required*

The nodes that make up this automation, including graph edges as step ids. A type this API version does not model field-by-field is returned as MarketingAutomationUnknownStep.

**stepsJson** *required*

`steps` with every field selected, as JSON: one element per step, with `__typename`. Null and invalid stored steps are \[]. Webhook header values and OAuth client secrets are omitted. Edits go through operations.

**updatedAt** *required*

When the automation was last updated.

**automationKind**

Which kind of automation sent it. Null unless `origin` is `AUTOMATION`.

**campaign**

The campaign that sent this outreach, if one did.

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

**fields**

**analytics** *required*

Analytics for this campaign, grouped by what is being measured.

**fields**

**messaging** *required*

Email and SMS performance, read from the analytics warehouse: what was sent, how it was engaged with, and the orders and revenue attributed to it.

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

**fields**

**Arguments**

**attributionWindowDays** `Int`

How many days after a message an order still counts toward it, 1-30.

**endDate** *required*

Last day to report on, inclusive, in the store's timezone. The range may span at most 400 days.

**startDate** *required*

First day to report on, inclusive, in the store's timezone. Must be on or before `endDate`, and the range may span at most 400 days.

**canceledAt**

When the merchant canceled the campaign, if they did.

**channel** *required*

The channel this campaign sends on.

**createdAt** *required*

When the campaign was created.

**emailVariants** *required*

The email content this campaign sends, oldest arm first. A campaign that is not split-testing has exactly one entry; there is no separate `subject` on the campaign because a split test has more than one.

**fields**

**abTestWeight** `Float!` *required*

The share of recipients this variant was sent to. A campaign with a single variant weights it 1.

**position** `Int!` *required*

This variant's position within the campaign, starting at 0. Stable, so it names an arm of a split test across reports.

**template**

The content this variant sent. Null when the template has since been deleted.

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

**errorCode**

Why the campaign failed, when it did.

**excludedSegments** *required*

The segments held out of this campaign.

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

**fields**

**conditions**

Dynamic segment condition tree. Null for static and persona segments.

**countsRefreshedAt**

When the member counts were last recalculated. They are not live.

**createdAt** *required*

When the segment was created.

**description** `String`

The merchant's description of who this segment is for.

**emailSubscriberCount** `Int`

Members subscribed to email marketing as of `countsRefreshedAt`.

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

The id of this segment.

**legacyId** `String!` *required*

The segment's legacy Mongo ObjectId (24-char hex) from before the CockroachDB migration.

**memberCount** `Int`

Customers in the segment as of `countsRefreshedAt`. Null until it has first been counted.

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

The merchant-facing name of the segment.

**smsSubscriberCount** `Int`

Members subscribed to SMS marketing as of `countsRefreshedAt`.

**type** *required*

How membership of this segment is determined.

**updatedAt** *required*

When the segment was last updated.

**failedAt**

When the campaign failed to send, if it did.

**followUpConfig**

Follow-up email configuration when one was enabled.

**fields**

**delayMs** `Float`

Delay after the original send before the follow-up goes out.

**enabled** `Boolean!` *required*

Whether a follow-up send is configured.

**engagementPeriod**

Engagement window, in days, used to pick recipients.

**originalCampaignLegacyId** `String`

Legacy Mongo ObjectId of the campaign this follow-up was created from.

**subjectLine** `String`

Subject line for the follow-up email.

**fromAddress**

The from address recorded when the campaign sent. Null for drafts and for SMS campaigns.

**fields**

**email** `String!` *required*

The mailbox address.

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

The display name shown alongside the address.

**fromSender**

The From mailbox chosen for this campaign. Null when the store default should be used, and for SMS.

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

**fields**

**createdAt** *required*

When the address was added.

**email** `String!` *required*

The mailbox address.

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

The id of this sender address. Pass it to `updateCampaign`.

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

The display name shown alongside the address.

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

The id of this campaign.

**legacyId** `String!` *required*

The campaign's legacy Mongo ObjectId (24-char hex) from before the CockroachDB migration.

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

The merchant-facing name of the campaign.

**replyToAddress**

The reply-to address recorded when the campaign sent. Null when none was set.

**fields**

**email** `String!` *required*

The mailbox address.

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

The display name shown alongside the address.

**replyToSender**

The Reply-To mailbox chosen for this campaign. Null when the store default should be used.

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

**fields**

**createdAt** *required*

When the address was added.

**email** `String!` *required*

The mailbox address.

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

The id of this sender address. Pass it to `updateCampaign`.

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

The display name shown alongside the address.

**scheduledAt**

When the campaign is scheduled to start sending. Null for drafts, and for campaigns scheduled in each recipient's local time.

**scheduledAtTimeZone** `String`

IANA time zone the merchant picked when scheduling a single UTC instant. Null for drafts and local-time sends.

**scheduledLocalFallbackTimeZone** `String`

IANA time zone used when a recipient has no time zone, for local-time sends. Null when `scheduledAt` is set.

**scheduledLocalTime** `String`

For campaigns scheduled in each recipient's local time, the wall-clock time they send at, as `YYYY-MM-DDTHH:mm:ss`. Null when `scheduledAt` is set.

**segments** *required*

The segments this campaign was sent to.

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

**fields**

**conditions**

Dynamic segment condition tree. Null for static and persona segments.

**countsRefreshedAt**

When the member counts were last recalculated. They are not live.

**createdAt** *required*

When the segment was created.

**description** `String`

The merchant's description of who this segment is for.

**emailSubscriberCount** `Int`

Members subscribed to email marketing as of `countsRefreshedAt`.

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

The id of this segment.

**legacyId** `String!` *required*

The segment's legacy Mongo ObjectId (24-char hex) from before the CockroachDB migration.

**memberCount** `Int`

Customers in the segment as of `countsRefreshedAt`. Null until it has first been counted.

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

The merchant-facing name of the segment.

**smsSubscriberCount** `Int`

Members subscribed to SMS marketing as of `countsRefreshedAt`.

**type** *required*

How membership of this segment is determined.

**updatedAt** *required*

When the segment was last updated.

**sentAt**

When the campaign finished sending. Null until it has finished.

**smsVariants** *required*

The SMS content this campaign sends, oldest arm first. Empty for email campaigns.

**fields**

**abTestWeight** `Float!` *required*

The share of recipients this variant was sent to. A campaign with a single variant weights it 1.

**position** `Int!` *required*

This variant's position within the campaign, starting at 0.

**template**

The content this variant sent. Null when the template has since been deleted.

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

**status** *required*

Derived lifecycle status from schedule, send, failure, and cancellation timestamps.

**tags** `[String!]!` *required*

Tags the merchant applied to this campaign, in the order they applied them. Free-form and merchant-defined — Redo attaches no meaning to them, so they are the place a store's own categorisation (a promotion name, a season, a product line) is kept. Empty when the campaign is untagged.

**updatedAt** *required*

When the campaign was last updated.

**createdAt** *required*

When the outreach was sent.

**generationMode**

How the message was written.

**origin**

What started this outreach.

**sentViaHumanQueue** `Boolean!` *required*

Whether a person on the merchant's team approved the message before it sent.

**trigger** `String`

The trigger key that fired this outreach, such as a checkout abandonment event.


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