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

# Connect Customer.io

> Connect Customer.io from Integrations — Site ID, API Key, Data Region (US or EU), Connection Name, and auto-send events.

**Customer.io** receives Zippendo shipping and order events so you can trigger campaigns. The catalog card copy is: **Trigger Customer.io campaigns from shipping events.**

This page is the Customer.io connect form. Shared chrome: [Connect an integration](/docs/how-to/connect-an-integration). Inventory: [Connect a carrier or integration](/docs/how-to/connect-index). Conditional logic: [Automations](/docs/how-to/automations). Provider essay: [Customer.io](/docs/integrations/customer-io).

Creating a connection uses the same plan gate as outbound webhooks (**Growth** and above). Nordlys on this page is **Pro**, so **Connect** is unlocked.

## Prerequisites

* Customer.io **Site ID** and **API Key**.
* Whether the workspace uses the **US** or **EU** data region.

## Where to get Site ID and API Key

Zippendo uses Customer.io **Track API** credentials (**Site ID** + **API Key**). Creating them is **Workspace Settings → API and webhook credentials** in **your** account (login required). The public docs page below explains the Track API and those two values.

<Frame caption="Customer.io docs: Track API uses Site ID and API Key (create them in your own workspace settings)">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/10-customerio-track-api-key.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=fb9e9ea35f858b5d64db7f70cea05606" alt="Customer.io Track API integrations docs explaining Site ID and API Key" width="2880" height="2200" data-path="images/how-to/connect-customer-io/10-customerio-track-api-key.png" />
</Frame>

## Connect from Catalog

<Steps>
  <Step title="Open Catalog">
    Sidebar **Integrations**. Page title **Integrations**. Description: **Connect downstream tools to receive shipping and order events from Zippendo.** Tabs: **Connected** (`?tab=connected`) and **Catalog** (`?tab=catalog`).
  </Step>

  <Step title="Find Customer.io">
    Card title **Customer.io**. Links: **Use in automations** and **Read more** (`https://zippendo.com/docs/integrations/customer-io`). Button **Connect**, or **Add connection** after the first Customer.io connection.
  </Step>

  <Step title="Click Connect">
    Modal id `connect-integration-modal`. Title **Connect Customer.io**. Subtitle: **Trigger Customer.io campaigns from shipping events**.
  </Step>

  <Step title="Fill required fields">
    **Connection Name \***, **Site ID \***, **API Key \***, and **Data Region \***. Tick **Auto-send events** if you want Zippendo to push without an automation.
  </Step>

  <Step title="Connect">
    **Connect** stays disabled until **Connection Name**, **Site ID**, **API Key**, and **Data Region** are stored. The region select *shows* **US (track.customer.io)** before you touch it, but you still have to open the select and pick **US (track.customer.io)** or **EU (track-eu.customer.io)** so the value is saved. Success toast: **Integration connected successfully**. Failure: **Failed to create connection** (or **This feature is not available on your current plan.**).
  </Step>
</Steps>

<Frame caption="Customer.io on Catalog — Use in automations, Read more, Connect">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/01-catalog-card-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=82cce2e82184463c88693b3dff971be7" alt="Integrations Catalog with the Customer.io card, Use in automations, Read more, and Connect" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-customer-io/01-catalog-card-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/01-catalog-card-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=b1e843d3c4b467d53ba3304228fc96da" alt="Integrations Catalog with the Customer.io card, Use in automations, Read more, and Connect" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-customer-io/01-catalog-card-dark.png" />
</Frame>

<Frame caption="Connect Customer.io — Site ID, API Key, Data Region, Auto-send events">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/02-connect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=35d55a06301ef86fe9d63e0eb83ad986" alt="Connect Customer.io dialog with Connection Name, Site ID, API Key, Data Region, and event checkboxes" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-customer-io/02-connect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/02-connect-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=31ff285b75993702b5a186e7d1f0c052" alt="Connect Customer.io dialog with Connection Name, Site ID, API Key, Data Region, and event checkboxes" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-customer-io/02-connect-modal-dark.png" />
</Frame>

## Shared fields

These appear on every integration connect dialog, including Customer.io.

| Field                  | Required | What it is                                                                                                                                                             |
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connection Name \*** | Yes      | Placeholder **e.g., My Customer.io**. Max 100 characters.                                                                                                              |
| Hint                   | —        | **Need conditional logic, delays, or multi-step workflows? Create an automation instead.** **Create an automation** links to Automations.                              |
| **Auto-send events**   | No       | Checkbox grid. **Select All** / **Deselect All** toggles every event this provider supports. Empty means Zippendo will not auto-push; **Send test event** still works. |

## Customer.io credentials

| Field              | Required | Control                                  | Details                                                                                                                                                            |
| ------------------ | -------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Site ID \***     | Yes      | Text. Placeholder **Enter site id**      | Track API site identifier.                                                                                                                                         |
| **API Key \***     | Yes      | Password. Placeholder **Enter api key**  | Masked. Never shown again after connect.                                                                                                                           |
| **Data Region \*** | Yes      | Select. Placeholder **Select an option** | **US (track.customer.io)** or **EU (track-eu.customer.io)**. The control displays US before you interact, but **Connect** stays disabled until you pick an option. |

Footer: **Cancel** / **Connect**.

<Warning>
  The wrong **Data Region** causes authentication failures on delivery. EU workspaces must use **EU (track-eu.customer.io)**.
</Warning>

**Event Name Override** exists on the API (`eventConfig`) only. It is **not** a field on Connect or Edit. Override the name from an automation inspector instead — [Automations](/docs/how-to/automations).

## Auto-send events Customer.io supports

Groups shown: **Shipments**, **Orders**, **Tracking**.

| Checkbox                | Event                 |
| ----------------------- | --------------------- |
| **Shipment Created**    | `shipment.created`    |
| **Shipment Dispatched** | `shipment.dispatched` |
| **Shipment Cancelled**  | `shipment.cancelled`  |
| **Order Created**       | `order.created`       |
| **Order Updated**       | `order.updated`       |
| **Tracking Updated**    | `tracking.updated`    |

Not on this modal: **Shipment Updated**, **Shipment Error**, **Order Cancelled**.

<Frame caption="Customer.io Auto-send events — Orders and Tracking Updated">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/07-events-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=31e81b6ac8edda0d4700f0b1a1e70a7a" alt="Connect Customer.io dialog scrolled to Order and Tracking event checkboxes" className="block dark:hidden" width="2880" height="2800" data-path="images/how-to/connect-customer-io/07-events-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/07-events-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=3ef713d65b671ac9a542829a94068253" alt="Connect Customer.io dialog scrolled to Order and Tracking event checkboxes" className="hidden dark:block" width="2880" height="2800" data-path="images/how-to/connect-customer-io/07-events-dark.png" />
</Frame>

## After you connect

**Connected** shows a green **Connected** pill and **\{\{count}} connection(s)**. Each row: name, **\{\{count}} event(s)** (and **Paused** if inactive — there is **no** pause toggle), **Send test event**, **View delivery log**, **Edit connection**, **Delete connection**.

<Frame caption="Connected — Customer.io row with test, log, edit, and disconnect">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/03-connected-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=351480214ff96ac30ea3afa7e9ea4383" alt="Integrations Connected tab with a Customer.io connection and action icons" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-customer-io/03-connected-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/03-connected-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=728911f53f732c68b5dcfa0b67870abd" alt="Integrations Connected tab with a Customer.io connection and action icons" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-customer-io/03-connected-dark.png" />
</Frame>

There is **no** Sandbox Mode checkbox. Use **Send test event** (toast **Test event sent** / **Failed to send test event**).

## Edit Customer.io Connection

Modal id `edit-integration-connection-modal`. Title **Edit Customer.io Connection**. Subtitle **Update the configuration for \{\{connection}}**. **Save Changes** disabled while **Connection Name \*** is empty.

<Frame caption="Edit Customer.io Connection — credentials and Auto-send events">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/04-edit-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=3089cfb7620554ebb10a475a8e321de8" alt="Edit Customer.io Connection dialog with Connection Name, Site ID, API Key, Data Region, and Auto-send events" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-customer-io/04-edit-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/04-edit-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=dc5a98811c366491d3767e0eb337479b" alt="Edit Customer.io Connection dialog with Connection Name, Site ID, API Key, Data Region, and Auto-send events" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-customer-io/04-edit-modal-dark.png" />
</Frame>

| Field                  | Details                                                                                                                                      |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connection Name \*** | Same as create.                                                                                                                              |
| **Site ID \***         | Placeholder **Enter new site id or leave to keep existing**.                                                                                 |
| **API Key \***         | Placeholder **Enter new api key or leave to keep existing**. Password.                                                                       |
| **Data Region \***     | Native select: **US (track.customer.io)** / **EU (track-eu.customer.io)**. Stored region is not shown; the control starts at the US default. |
| **Auto-send events**   | Same Customer.io checkboxes as create.                                                                                                       |

Toasts: **Integration updated successfully** / **Failed to update connection**.

<Warning>
  Leave every credential blank to keep the stored values. Filling any credential field **replaces** the whole credential set — fill **Site ID**, **API Key**, and **Data Region** together if you are rotating secrets.
</Warning>

## Delivery log and test

**View delivery log** — modal id `integration-delivery-log-modal`. Title **Delivery Log**. Subtitle **Recent deliveries for \{\{connection}}**. **Close**. Empty: **No deliveries yet**. Rows show event name, HTTP status, duration in `ms`, relative time, and error text.

<Frame caption="Delivery Log — empty until the first auto-send or Send test event">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/05-delivery-log-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=a90ff05bed815ae3cb7a5775993f3227" alt="Delivery Log modal showing No deliveries yet for a Customer.io connection" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-customer-io/05-delivery-log-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/05-delivery-log-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=6d9fda257ecf16c7f5f5e21bbee63590" alt="Delivery Log modal showing No deliveries yet for a Customer.io connection" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-customer-io/05-delivery-log-dark.png" />
</Frame>

**Send test event** enqueues `integration.test`. It does not require any auto-send checkbox.

## Disconnect

Trash opens **Disconnect Integration**. Description: **Are you sure you want to disconnect this integration? This will stop all event deliveries and delete the delivery history.** Type **DELETE** to enable **Disconnect**. Label: **Type DELETE to confirm**.

Toasts: **Integration disconnected** / **Failed to delete connection**. Missing row: **Integration not found.** (`ORG_INTEGRATION_NOT_FOUND`).

<Frame caption="Disconnect Integration — type DELETE to confirm">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/06-disconnect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=d2c933a390f531693ff91c05a4c4b74b" alt="Disconnect Integration confirmation requiring DELETE" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-customer-io/06-disconnect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-customer-io/06-disconnect-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=828de48804fbd141ebf4cc4f3a7d480b" alt="Disconnect Integration confirmation requiring DELETE" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-customer-io/06-disconnect-modal-dark.png" />
</Frame>

<Check>
  You are done when **Connected** lists Customer.io with a **Connected** pill and **Send test event** toasts **Test event sent**.
</Check>

## Automations

Palette: **Send Customer.io Event** — **Sends an event to Customer.io via a connected integration** (`action.integration.customerio`).

| Field                   | Required                         | Details                                                                                                                                                      |
| ----------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Connection**          | Yes (**Connection is required**) | **Select a connection**. Helper: **Select an existing customerio connection. Manage connections in Settings > Integrations.** Empty: **No items available**. |
| **Event name override** | No                               | Placeholder **e.g. Shipment Dispatched**. Helper: **Optional. Override the default event/metric name sent to the provider.**                                 |
| **Custom properties**   | No                               | **Add**. Key **key**, value **\{\{shipment.reference}}**.                                                                                                    |

Full node list: [Automations](/docs/how-to/automations).

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index)
* [Connect an integration](/docs/how-to/connect-an-integration)
* [Carrier credentials](/docs/how-to/carrier-credentials)
* [Sandbox mode](/docs/how-to/sandbox-mode)
* [Request a carrier integration](/docs/how-to/request-carrier-integration)
* [Carriers](/docs/tutorials/carriers)
* [Automations](/docs/how-to/automations)
* [Customer.io](/docs/integrations/customer-io)
* [Integrations troubleshooting](/docs/integrations/troubleshooting)
