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

# Customer.io

> Messaging automation across campaigns, broadcasts, transactional email, segments, customers, and message delivery.

Customer.io is included in Archal's environment catalog. Use it in a sandbox for messaging automation across campaigns, broadcasts, transactional email, segments, customers, and message delivery.

| | |
| - | - |
| Environment ID | `customerio` |
| Transport | REST |
| State | JSON |
| Contract | `archal.environment-state.customerio` version `1` |
| Channel | Public |
| Curated samples | 5 |

Public means the environment is released and startable. It still describes a bounded provider surface, not a promise that every upstream operation exists.

## Compatibility boundary

**Local catalog validation:** All five published samples passed. Checks cover the state contract, relationships, artifact hash, secret scan, and size limit.

> [!NOTE]
>
> Local catalog validation is not hosted proof. Archal checks current certification, reset, and isolation evidence before admitting new sandboxes. Use the authenticated environment catalog for live availability.

* Does not claim actual message delivery or complete Customer.io campaign execution.

## Curated starting states

List the five samples with `archal sample list customerio`. Each sample is a versioned starting state with a representative read, mutation, expected diff, reset expectation, and verified artifact hash.

> [accordion] Customer.io campaign baseline
>
> List one campaign, one segment, and one synthetic person before creating another manual segment.
>
> **Sample ID:** `customerio.campaign-baseline.v1`
>
> **Category:** `minimal`
>
> **Starting state:** 3 records across `campaigns`: 1, `people`: 1, `segments`: 1
>
> **Supported surface:** Stateful campaigns, audiences, people, messages, and event-triggered records.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.segments`
>
> **First read:** `GET /v1/campaigns`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/segments`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "segment": {
>     "description": "Signed up in the last seven days without completing workspace activation.",
>     "name": "Trial users awaiting activation"
>   }
> }
> ```
>
> **Expected diff:** changes include `segments`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Does not claim actual message delivery or complete Customer.io campaign execution.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show customerio.campaign-baseline.v1 --raw > archal-customerio-campaign-baseline.json
> archal state validate customerio archal-customerio-campaign-baseline.json
> archal session create customerio \
>   --state customerio=archal-customerio-campaign-baseline.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show customerio.campaign-baseline.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/customerio/campaign-baseline/state.json` and is 999 bytes. The CLI verifies SHA-256 `bfcd2ab19d31de0496221d54e1128fd5946b78ce38f6699792cbd905b019d3fc` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Customer.io lifecycle messaging team
>
> Model a small lifecycle team with campaigns, a broadcast, audience segment, person, and sent message.
>
> **Sample ID:** `customerio.lifecycle-messaging-team.v1`
>
> **Category:** `small-team`
>
> **Starting state:** 6 records across `broadcasts`: 1, `campaigns`: 2, `messages`: 1, `people`: 1, `segments`: 1
>
> **Supported surface:** Stateful campaigns, audiences, people, messages, and event-triggered records.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.segments`
>
> **First read:** `GET /v1/campaigns`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/segments`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "segment": {
>     "description": "Signed up in the last seven days without completing workspace activation.",
>     "name": "Trial users awaiting activation"
>   }
> }
> ```
>
> **Expected diff:** changes include `segments`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Does not claim actual message delivery or complete Customer.io campaign execution.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show customerio.lifecycle-messaging-team.v1 --raw > archal-customerio-lifecycle-messaging-team.json
> archal state validate customerio archal-customerio-lifecycle-messaging-team.json
> archal session create customerio \
>   --state customerio=archal-customerio-lifecycle-messaging-team.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show customerio.lifecycle-messaging-team.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/customerio/lifecycle-messaging-team/state.json` and is 1,523 bytes. The CLI verifies SHA-256 `502d10ceeb76d261bf34cdb7c229b86dc0064d5a05cf21cacd33d34305e40a53` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Customer.io populated audience
>
> Exercise connector-lifecycle campaigns across six people, mixed delivery outcomes, reusable assets, and linked design-studio content.
>
> **Sample ID:** `customerio.active-audience.v1`
>
> **Category:** `populated`
>
> **Starting state:** 27 records across `asset_files`: 2, `asset_folders`: 1, `broadcasts`: 1, `campaigns`: 2, `design_studio_components`: 2, `design_studio_email_translations`: 1, `design_studio_emails`: 2, `design_studio_folders`: 1, `messages`: 6, `people`: 6, `segments`: 3
>
> **Supported surface:** Stateful campaigns, audiences, people, messages, and event-triggered records.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.segments`
>
> **First read:** `GET /v1/campaigns`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/segments`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "segment": {
>     "description": "Signed up in the last seven days without completing workspace activation.",
>     "name": "Trial users awaiting activation"
>   }
> }
> ```
>
> **Expected diff:** changes include `segments`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Does not claim actual message delivery or complete Customer.io campaign execution.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show customerio.active-audience.v1 --raw > archal-customerio-active-audience.json
> archal state validate customerio archal-customerio-active-audience.json
> archal session create customerio \
>   --state customerio=archal-customerio-active-audience.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show customerio.active-audience.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/customerio/active-audience/state.json` and is 7,812 bytes. The CLI verifies SHA-256 `9ff391346cdaa4235e33a517df5da8cf7506e29907bb7ab85b05228eec6fd923` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Customer.io failed delivery
>
> Read a permanently failed transactional delivery while the person remains active, then create a remediation review segment.
>
> **Sample ID:** `customerio.failed-delivery.v1`
>
> **Category:** `edge-case`
>
> **Starting state:** 4 records across `campaigns`: 1, `messages`: 1, `people`: 1, `segments`: 1
>
> **Supported surface:** Stateful campaigns, audiences, people, messages, and event-triggered records.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.segments`
>
> **First read:** `GET /v1/messages/dgs_sample_failed_message`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/segments`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "segment": {
>     "description": "Active audience records whose latest transactional delivery failed permanently.",
>     "name": "Permanent bounce review"
>   }
> }
> ```
>
> **Expected diff:** changes include `segments`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Does not claim actual message delivery or complete Customer.io campaign execution.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show customerio.failed-delivery.v1 --raw > archal-customerio-failed-delivery.json
> archal state validate customerio archal-customerio-failed-delivery.json
> archal session create customerio \
>   --state customerio=archal-customerio-failed-delivery.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show customerio.failed-delivery.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/customerio/failed-delivery/state.json` and is 1,551 bytes. The CLI verifies SHA-256 `a54d726fbb2aaa565ef260b1214ce8c7bccc1f8e8d8e85f23cb20ef1c5c6a2d2` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

> [accordion] Customer.io campaign trigger workflow
>
> Inspect an API-triggered connector-activation campaign and person, enqueue one provider-shaped campaign trigger, and verify reset.
>
> **Sample ID:** `customerio.campaign-trigger-workflow.v1`
>
> **Category:** `workflow`
>
> **Starting state:** 4 records across `campaigns`: 1, `messages`: 1, `people`: 1, `segments`: 1
>
> **Supported surface:** Stateful campaigns, audiences, people, messages, and event-triggered records.
>
> **Required capabilities:** `state.read`, `state.load`, `state.reset`, `rest.segments`
>
> **First read:** `GET /v1/campaigns`. Expected result: HTTP 200.
>
> **Representative mutation:** `POST /v1/campaigns/104/triggers`. Expected result: HTTP 200.
>
> **Mutation input**
>
> ```json theme={null}
> {
>   "data": {
>     "connection_status": "verified",
>     "person_id": "sample-workflow-person",
>     "provider": "slack"
>   }
> }
> ```
>
> **Expected diff:** changes include `triggers`. Exact match required: no. Hosted promotion must observe every listed path after the provider-native mutation; dynamic provider ids and timestamps are excluded from exact matching.
>
> **Expected reset:** restores loaded sample.
>
> **Known limits**
>
> * Does not claim actual message delivery or complete Customer.io campaign execution.
>
> **Start this sample**
>
> ```bash theme={null}
> archal sample show customerio.campaign-trigger-workflow.v1 --raw > archal-customerio-campaign-trigger-workflow.json
> archal state validate customerio archal-customerio-campaign-trigger-workflow.json
> archal session create customerio \
>   --state customerio=archal-customerio-campaign-trigger-workflow.json
> ```
>
> **Inspect the raw state**
>
> ```bash theme={null}
> archal sample show customerio.campaign-trigger-workflow.v1 --raw
> ```
>
> The packaged JSON artifact is `samples/states/customerio/campaign-trigger-workflow/state.json` and is 1,459 bytes. The CLI verifies SHA-256 `355ebad25dda948372307ab8e332ccfe1c204e4eab74e0e2da025dc3bfa89402` before printing it.
>
> Catalog validation: **Passed**. Hosted availability is determined by Archal's live certification and admission system, not this static page.

## Use custom state

Start from a sample when possible. For custom state, inspect the contract with `archal environment describe customerio`, then validate the file before creating a sandbox:

```bash theme={null}
archal state validate customerio state.json
```

Loading state replaces the current collections and establishes a new reset baseline. See [Starting state](https://docs.archal.ai/sandboxes/starting-state.md) before replacing state in an existing sandbox.


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