> ## 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 Slack, Klaviyo, and other apps

> Connect Klaviyo, Slack, Customer.io, Mailchimp, SendGrid, Zapier, or Make from Integrations — credentials, auto-send events, test, delivery log, and disconnect.

**Integrations** push shipment and order **events out** of Zippendo into Slack, Klaviyo, and similar tools. They are not [order channels](/docs/how-to/connect-woocommerce) (orders in) and not [app webhooks](/docs/how-to/webhooks) (a URL you host). Provider setup guides: [Integrations overview](/docs/integrations/overview). Conditional / multi-step logic: [Automations](/docs/how-to/automations).

Creating a connection uses the same plan gate as outbound webhooks (**Growth** and above). Nordlys on this page is **Pro**, so **Connect** is unlocked. Failures toast the API message (including **This feature is not available on your current plan.**).

## Where it lives

Sidebar **Integrations** → `/{org}/dashboard/integrations`.

Page title **Integrations**. Description: **Connect downstream tools to receive shipping and order events from Zippendo.**

Tabs are URL state (`?tab=`):

| Tab           | `?tab=`     | When to use it                                      |
| ------------- | ----------- | --------------------------------------------------- |
| **Connected** | `connected` | Providers that already have at least one connection |
| **Catalog**   | `catalog`   | Every provider                                      |

Default (not written into the URL): **Connected** if you already have a connection, otherwise **Catalog**. An explicit `?tab=` always wins.

Loading: a grid of skeleton cards.

## Catalog

Every provider card:

| Element                | What it is                                                                                        |
| ---------------------- | ------------------------------------------------------------------------------------------------- |
| Logo band              | Provider colour + logo                                                                            |
| Name                   | **Klaviyo**, **Slack**, **Customer.io**, **Mailchimp**, **SendGrid**, **Zapier**, **Make**        |
| Description            | Provider one-liner (see table below)                                                              |
| **Use in automations** | Link to **Automations**                                                                           |
| **Read more**          | Opens `https://zippendo.com/docs/integrations/{slug}` in a new tab                                |
| **Connect**            | Opens **Connect \{\{provider}}**. After the first connection the button reads **Add connection**. |

<Frame caption="Catalog — every provider; Slack already connected shows Add connection">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/01-catalog-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=ee73ac19a727baccb3c9758bb5876029" alt="Integrations Catalog grid with Klaviyo, Slack, Customer.io, Mailchimp, SendGrid, Zapier, and Make" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-an-integration/01-catalog-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/01-catalog-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=4ff776e3e303dd2d28c9881a4612ac4c" alt="Integrations Catalog grid with Klaviyo, Slack, Customer.io, Mailchimp, SendGrid, Zapier, and Make" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-an-integration/01-catalog-dark.png" />
</Frame>

### Providers and credential fields

These are the only catalog entries. Credential labels are exactly as on **Connect \{\{provider}}**. Required fields block **Connect** until filled.

| Provider                                       | Description on the card                                            | Credential fields                                                                                                                     |
| ---------------------------------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| **[Klaviyo](/docs/how-to/connect-klaviyo)**         | **Send shipping events to Klaviyo for email/SMS flows**            | **Private API Key \*** (password)                                                                                                     |
| **[Slack](/docs/how-to/connect-slack)**             | **Get notified in Slack when shipping events happen**              | **Incoming Webhook URL \*** (URL, placeholder `https://…`)                                                                            |
| **[Customer.io](/docs/how-to/connect-customer-io)** | **Trigger Customer.io campaigns from shipping events**             | **Site ID \***, **API Key \*** (password), **Data Region \*** — **US (track.customer.io)** (default) or **EU (track-eu.customer.io)** |
| **[Mailchimp](/docs/how-to/connect-mailchimp)**     | **Send shipping events to Mailchimp to trigger email automations** | **API Key \*** (password), **Audience/List ID \***                                                                                    |
| **[SendGrid](/docs/how-to/connect-sendgrid)**       | **Send branded emails via SendGrid Dynamic Templates**             | **API Key \*** (password), **From Email \***, **From Name \***                                                                        |
| **[Zapier](/docs/how-to/connect-zapier)**           | **Send events to Zapier to trigger any workflow automation**       | **Catch Hook URL \*** (URL)                                                                                                           |
| **[Make](/docs/how-to/connect-make)**               | **Send events to Make.com to trigger scenario automations**        | **Custom Webhook URL \*** (URL)                                                                                                       |

Per-event extras such as Klaviyo metric overrides exist on the API only. They are **not** fields on this modal.

## Connected

Same cards, filtered to providers with ≥1 connection. A green **Connected** pill sits on the logo. The header shows **\{\{count}} connection(s)**.

### Empty

| Copy        | Text                                                                                             |
| ----------- | ------------------------------------------------------------------------------------------------ |
| Title       | **No integrations connected yet**                                                                |
| Description | **Open the catalog to connect your first integration and start sending events out of Zippendo.** |
| Button      | **Open catalog** — switches to **Catalog**                                                       |

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

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

### Connection row

Each connection is a nested card:

| Element            | What it shows                                                                                                                                                                    |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name               | The **Connection Name** you entered                                                                                                                                              |
| Meta               | **\{\{count}} event(s)** · **Paused** if `isActive` is false (there is **no** pause toggle on this screen)                                                                       |
| Send (paper plane) | **Send test event**. Toast **Test event sent** / **Failed to send test event** (`INTEGRATION_DELIVERY_FAILED` when the provider rejects it). Disabled while a test is in flight. |
| Plug               | **View delivery log**                                                                                                                                                            |
| Gear               | **Edit connection**                                                                                                                                                              |
| Trash              | **Delete connection** — opens **Disconnect Integration**                                                                                                                         |

## Connect \{\{provider}}

Modal id `connect-integration-modal`. Title **Connect \{\{provider}}**. Subtitle is the provider description. Footer **Cancel** / **Connect** (spinner while creating). **Connect** stays disabled until **Connection Name** and every required credential have a value.

<Frame caption="Connect Slack — Connection Name, Incoming Webhook URL, Auto-send events">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/03-connect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=5310957514a50cf5ec1931e626f1ed94" alt="Connect Slack dialog with Connection Name, Incoming Webhook URL, and event checkboxes" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-an-integration/03-connect-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/03-connect-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=c11a4fe9c5f068b4a8240e9495b23249" alt="Connect Slack dialog with Connection Name, Incoming Webhook URL, and event checkboxes" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-an-integration/03-connect-modal-dark.png" />
</Frame>

| Field                  | Required     | Details                                                                                                                                                                                  |
| ---------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Connection Name \*** | Yes          | Placeholder **e.g., My \{\{provider}}**. Max 100 characters.                                                                                                                             |
| Credential fields      | Per provider | See the table above. URL fields use placeholder `https://…`. Password fields are masked. Select fields start at their default. Placeholder **Select an option** / **Enter \{\{field}}**. |
| 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. **Connect** does **not** require any event. Empty means Zippendo will not auto-push; **Send test event** still works.                                                     |

**Select All** / **Deselect All** toggles every event this provider supports (not the full webhook catalog).

Toasts: **Integration connected successfully** / **Failed to create connection**.

<Steps>
  <Step title="Open Catalog">
    Sidebar **Integrations** → **Catalog** (or **Open catalog** from the empty Connected state).
  </Step>

  <Step title="Connect">
    Click **Connect** on the provider card.
  </Step>

  <Step title="Name and credentials">
    Fill **Connection Name \*** and the required keys. Paste a Slack incoming webhook, Klaviyo private key, and so on.
  </Step>

  <Step title="Pick events">
    Tick the events this connection should receive, or leave them empty and use automations instead.
  </Step>

  <Step title="Connect">
    Click **Connect**, then **Send test event** on the new row.
  </Step>
</Steps>

### Auto-send event checkboxes

Groups: **Shipments**, **Orders**, **Tracking**. Only events the provider supports are shown.

| Checkbox                | Event                 | Slack | Klaviyo | Customer.io | Mailchimp | SendGrid | Zapier | Make |
| ----------------------- | --------------------- | ----- | ------- | ----------- | --------- | -------- | ------ | ---- |
| **Shipment Created**    | `shipment.created`    | ✓     | ✓       | ✓           | ✓         | ✓        | ✓      | ✓    |
| **Shipment Updated**    | `shipment.updated`    |       |         |             |           |          | ✓      | ✓    |
| **Shipment Dispatched** | `shipment.dispatched` | ✓     | ✓       | ✓           | ✓         | ✓        | ✓      | ✓    |
| **Shipment Cancelled**  | `shipment.cancelled`  | ✓     | ✓       | ✓           | ✓         | ✓        | ✓      | ✓    |
| **Shipment Error**      | `shipment.error`      | ✓     |         |             |           |          | ✓      | ✓    |
| **Order Created**       | `order.created`       | ✓     | ✓       | ✓           | ✓         |          | ✓      | ✓    |
| **Order Updated**       | `order.updated`       |       | ✓       | ✓           | ✓         |          | ✓      | ✓    |
| **Order Cancelled**     | `order.cancelled`     | ✓     |         |             |           |          | ✓      | ✓    |
| **Tracking Updated**    | `tracking.updated`    |       | ✓       | ✓           | ✓         | ✓        | ✓      | ✓    |

Same labels as [app webhooks](/docs/how-to/webhooks). Carrier **tracking webhooks** are a different screen: [Carrier tracking webhooks](/docs/how-to/tracking-webhooks).

## Edit \{\{provider}} Connection

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

Credential placeholders: **Enter new \{\{field}} or leave to keep existing**. Stored secrets are never listed. Leave a field blank to keep the current value.

Same **Auto-send events** grid as create.

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

<Frame caption="Edit Slack Connection — rename, replace the webhook URL, retick events">
  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/04-edit-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=3f7ddc13667e77a668071e20c0a5d179" alt="Edit Slack Connection dialog with Connection Name, Incoming Webhook URL, and Auto-send events" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-an-integration/04-edit-modal-light.png" />

  <img src="https://mintcdn.com/zippendo/pwy1g1EbXWJlGtUC/images/how-to/connect-an-integration/04-edit-modal-dark.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=e5043bf7e8dd93058aa897d5c0aa695d" alt="Edit Slack Connection dialog with Connection Name, Incoming Webhook URL, and Auto-send events" className="hidden dark:block" width="2880" height="1800" data-path="images/how-to/connect-an-integration/04-edit-modal-dark.png" />
</Frame>

## Delivery Log

Modal id `integration-delivery-log-modal`. Title **Delivery Log**. Subtitle **Recent deliveries for \{\{connection}}**. **Close**.

| State   | What you see                                                                                                           |
| ------- | ---------------------------------------------------------------------------------------------------------------------- |
| Loading | Spinner                                                                                                                |
| Empty   | **No deliveries yet**                                                                                                  |
| Row     | Event name, HTTP status code, duration in `ms`, relative time, error text if the delivery failed. Green check / red X. |

<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-an-integration/05-delivery-log-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=5b927385d45d3d12abcd8ae1636c2dff" alt="Delivery Log modal showing No deliveries yet for a Slack connection" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-an-integration/05-delivery-log-light.png" />

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

## Disconnect Integration

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** (placeholder **DELETE**) to enable **Disconnect**. Label: **Type DELETE to confirm**. Buttons **Cancel** / **Disconnect**.

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-an-integration/06-disconnect-modal-light.png?fit=max&auto=format&n=pwy1g1EbXWJlGtUC&q=85&s=7cab20bad0cb04e49087dbb733cd4cd1" alt="Disconnect Integration confirmation requiring DELETE" className="block dark:hidden" width="2880" height="1800" data-path="images/how-to/connect-an-integration/06-disconnect-modal-light.png" />

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

<Check>
  You are done when **Connected** lists the provider with a **Connected** pill, **Send test event** toasts **Test event sent**, and **Delivery Log** shows a row (or **No deliveries yet** right after connect, before the first event).
</Check>

## Related

* [Connect a carrier or integration](/docs/how-to/connect-index) — one page per catalog app
* [Request a carrier integration](/docs/how-to/request-carrier-integration) — carriers not on All Carriers
* [Carrier credentials](/docs/how-to/carrier-credentials) — shared carrier connect chrome
* [Sandbox mode](/docs/how-to/sandbox-mode) — the **Sandbox Mode** checkbox on carriers
* [Carriers](/docs/tutorials/carriers)
* [Integrations overview](/docs/integrations/overview) — per-provider guides
* [Webhooks](/docs/how-to/webhooks) — HTTPS URL you host
* [Automations](/docs/how-to/automations) — filters, delays, branches
* [Tracking webhooks](/docs/how-to/tracking-webhooks) — carrier → Zippendo
