# Customer Io

> Customer.io through One

- Skill: `withoneai/customer-io` (Agent Skill)
- Install (CLI): `npx skillmds@latest add withoneai/customer-io`
- Raw SKILL.md: https://api.skillmd.com/api/skills/withoneai/customer-io/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: withoneai (https://skillmd.com/u/withoneai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/withoneai/customer-io

---


# Customer.io through One

Customer.io is a customer engagement platform that provides messaging automation, data-driven segmentation, and multichannel campaign orchestration, allowing teams to trigger personalized emails, SMS, push notifications, and in-app messages based on user behavior and lifecycle events.

One exposes Customer.io through four MCP tools. The table below carries real action ids from One's knowledge base, so for a common operation you can skip search and go straight to reading the action's parameters.

## How to run an action

1. Find the action in the table below, or call `search_one_platform_actions` with platform `customer-io` if it is not listed.
2. Call `get_one_action_knowledge` with the action id. Do this every time, including for actions in this table. The table gives you the id, not the parameters.
3. Call `execute_one_action` with parameters copied from that knowledge.

Never guess a parameter name, a body field, or an enum value. The knowledge has the real schema, and a guessed field is either a 400 or a silent write of the wrong thing.

## Before you start

Call `list_one_integrations` once and confirm Customer.io is connected. If it is missing, the user has not connected it: say so and point them at https://app.withone.ai rather than reaching for raw HTTP.

Each connection carries an `access` field. If it reports `{"policy": "methods", "methods": ["GET"]}` the agent is read-only here, so plan a read-only answer instead of attempting a write that will be refused.

## Before a write

Creates, updates, deletes and sends land on a real Customer.io account and cannot be recalled. State the action and the specific target in one line before the first write in a task, and let the user stop you. Reads need no confirmation.

## Actions

### Newsletters

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Newsletter | GET | `/v1/newsletters/{{newsletterId}}` | `conn_mod_def::GMXukPwNiwg::w2ehsKnHQhO9dZE9Ig1ZUg` |
| Get a Newsletter Translation | GET | `/v1/newsletters/{{newsletterId}}/language/{{language}}` | `conn_mod_def::GMXukAa9meA::L8x6f2J1ScGeIzzfLf4dzg` |
| Get a Newsletter Variant | GET | `/v1/newsletters/{{newsletterId}}/contents/{{contentId}}` | `conn_mod_def::GMXukAZfozA::MDMA_dM8TpS4Z_zVHd9pwQ` |
| Get Metrics for a Newsletter | GET | `/v1/newsletters/{{newsletterId}}/metrics` | `conn_mod_def::GMXuj2sIkBg::0NIjfLX1TCaGhHfssmmRLQ` |
| List Newsletters | GET | `/v1/newsletters` | `conn_mod_def::GMXukPu8Rlg::8mo_RqB5Tf-yaEA-zhi6OQ` |
| Add a Translation to a Newsletter | POST | `/v1/newsletters/{{newsletterId}}/language` | `conn_mod_def::GMXuj1y0u0A::2ljp8YB6RfmDiaAR1eoqWw` |
| Add a Translation to a Newsletter Test Group | POST | `/v1/newsletters/{{newsletterId}}/test_group/{{testGroupId}}/language` | `conn_mod_def::GMXuj5MZv_A::qAKrQvL5QrmVr0wY5pB7UQ` |
| Create a Newsletter | POST | `/v1/newsletters` | `conn_mod_def::GMXukPg_Bng::0-r9xsZARFCcnGEwzalYlA` |
| Create a Test Group for a Newsletter | POST | `/v1/newsletters/{{newsletterId}}/test_groups` | `conn_mod_def::GMXukAZfJjA::O718xexfSKG9vmw60BipUQ` |
| Delete a Newsletter | DELETE | `/v1/newsletters/{{newsletterId}}` | `conn_mod_def::GMXukPNV7hA::lEEtV7PQQRCyqBlJeuFYTA` |
| Delete a Translation in a Newsletter Test Group | DELETE | `/v1/newsletters/{{newsletterId}}/test_group/{{testGroupId}}/language/{{language}}` | `conn_mod_def::GMXukAcsp5A::GzpIRi_mR0SDNNOwcsvwMA` |
| Delete a Translation of a Newsletter | DELETE | `/v1/newsletters/{{newsletterId}}/language/{{language}}` | `conn_mod_def::GMXukAst0Pg::44OlkfyOTbyl6XvRtsG8ag` |

5 more Newsletters actions are available through search.

### Customers

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Customer's Attributes | GET | `/v1/customers/{{customerId}}/attributes` | `conn_mod_def::GMXuhkvSGDA::rdHR2x4wRzKQNgIe3AcsEw` |
| Get Customers by Email | GET | `/v1/customers` | `conn_mod_def::GMXuhlvlxXg::H6mjU7KQQTiiKw6cQVHXGQ` |
| List a Customer's Relationships | GET | `/v1/customers/{{customerId}}/relationships` | `conn_mod_def::GMXuhtItvVg::YEnOV-uYRVWghQtNDJPqWg` |
| List a Customer's Sent Messages | GET | `/v1/customers/{{customerId}}/messages` | `conn_mod_def::GMXuhtsGFTg::pfTKsqZYRiCMXuqdfcgaKA` |
| Lookup a Customer's Opt-Outs | GET | `/v1/customers/{{customerId}}/optouts` | `conn_mod_def::GMXukevh1EA::Y6GmAx-HQ0mG6_m9-k37kg` |
| List Customer Attributes and Devices | POST | `/v1/customers/attributes` | `conn_mod_def::GMXuhlu_C2g::I984xKHmQkuLNwtGXzPuFA` |
| Search for Customers | POST | `/v1/customers` | `conn_mod_def::GMXuhspe-cA::tQgMg68lRReZH1buMyBRWA` |
| Update a Customer's Opt-Outs | PUT | `/v1/customers/{{customerId}}/optouts` | `conn_mod_def::GMXukevW18A::zcF6IQssS86_GPOQKfC2Bg` |

### Segments

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Segment | GET | `/v1/segments/{{segmentId}}` | `conn_mod_def::GMXuklsqfeg::rm6qOXSVROC1jobCyGLINg` |
| Get a Segment's Customer Count | GET | `/v1/segments/{{segmentId}}/customer_count` | `conn_mod_def::GMXuksAFkYA::FA9XUfQWRPW4wMzC2Wn2TA` |
| Get a Segment's Dependencies | GET | `/v1/segments/{{segmentId}}/used_by` | `conn_mod_def::GMXuksoniDA::ZlhkMJy7TvGCQwDJKEEsag` |
| List a Customer's Segments | GET | `/v1/customers/{{customerId}}/segments` | `conn_mod_def::GMXuhsEHOLA::2c03h-XcQB-QQd_wpyk_Sg` |
| List Customers in a Segment | GET | `/v1/segments/{{segmentId}}/membership` | `conn_mod_def::GMXuks6KB5A::k7YCMAxJRN6KO8C82P0Bnw` |
| List Segments | GET | `/v1/segments` | `conn_mod_def::GMXukssxVxA::aQuv5Ay8R9eGTXfSId5ITA` |
| Create a Manual Segment | POST | `/v1/segments` | `conn_mod_def::GMXukmVo8ZA::m3y22mOaRw6ulIVb92S0ag` |
| Delete a Segment | DELETE | `/v1/segments/{{segmentId}}` | `conn_mod_def::GMXukl14lGg::ce5GlAt9Rke5bmtRGD2ESA` |

### Collections

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Collection | GET | `/v1/collections/{{collectionId}}` | `conn_mod_def::GMXuheNY_hg::Lzcx_9eiQMCCtlO20TbkjA` |
| List Your Collections | GET | `/v1/collections` | `conn_mod_def::GMXuheMhKSA::fQKB5ykGTOKpMRGL7mnK4A` |
| Lookup Collection Contents | GET | `/v1/collections/{{collectionId}}/content` | `conn_mod_def::GMXuheNC3gg::HkBYKaH0QxqQN_rwrCl-Sw` |
| Create a Collection | POST | `/v1/collections` | `conn_mod_def::GMXuhTdOmog::Di5PitAzSSaFmRPEiXTxHQ` |
| Delete a Collection | DELETE | `/v1/collections/{{collectionId}}` | `conn_mod_def::GMXuhdSoAZg::9igTfJBWSgKlsi-WDo9xHg` |
| Update a Collection | PUT | `/v1/collections/{{collectionId}}` | `conn_mod_def::GMXuheMxlEA::hnGgCPA9SkS4PKsv_SP12A` |
| Update Collection Contents | PUT | `/v1/collections/{{collectionId}}/content` | `conn_mod_def::GMXuhklpJrA::0ZHgfs55SVay600gxmCZ_g` |

### CampaignActions

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Campaign Action | GET | `/v1/campaigns/{{campaignId}}/actions/{{actionId}}` | `conn_mod_def::GMXuhBJnRCg::cy7iV8OLT0Ozlnpz9jFgsg` |
| Get a Campaign Action Translation | GET | `/v1/campaigns/{{campaignId}}/actions/{{actionId}}/language/{{language}}` | `conn_mod_def::GMXuhDgssyg::Vhamkm2CSwig68qe91r-9Q` |
| List a Campaign's Actions | GET | `/v1/campaigns/{{campaignId}}/actions` | `conn_mod_def::GMXuhTs5XZA::pexJHY8YR0awL7m4aGKv_w` |
| Update a Campaign Action | PUT | `/v1/campaigns/{{campaignId}}/actions/{{actionId}}` | `conn_mod_def::GMXuhX1kNVA::Ex2lZY7QRYOIxCbyA4vZKw` |
| Update a Campaign Action Translation | PUT | `/v1/campaigns/{{campaignId}}/actions/{{actionId}}/language/{{language}}` | `conn_mod_def::GMXuhU5najg::W7NHUF40THG6qG3sBa-eCQ` |

### ReportingWebhooks

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Reporting Webhook | GET | `/v1/reporting_webhooks/{{webhookId}}` | `conn_mod_def::GMXukd-aPnA::w_KdyW3KQtKjcqULeHWOGw` |
| List Reporting Webhooks | GET | `/v1/reporting_webhooks` | `conn_mod_def::GMXuklidpQA::E_dB8f-7TD-HlD77f2nHwg` |
| Create a Reporting Webhook | POST | `/v1/reporting_webhooks` | `conn_mod_def::GMXukeXQ6WA::XO8IGqnrQhW7yYq8GSGLzA` |
| Delete a Reporting Webhook | DELETE | `/v1/reporting_webhooks/{{webhookId}}` | `conn_mod_def::GMXukd9sLXg::Es3Tv50WQgWTYiVEUD3uxA` |
| Update a Reporting Webhook Configuration | PUT | `/v1/reporting_webhooks/{{webhookId}}` | `conn_mod_def::GMXukloAwyg::w-tydPCdQS6rBqeMTuEWeg` |

### EmailTranslations

| Action | Method | Path | Action id |
|---|---|---|---|
| Get an Email Translation | GET | `/v1/design_studio/emails/{{id}}/languages/{{language}}` | `conn_mod_def::GMXuiJceqpA::9EH3zCSYSZyZs6vA7m-gug` |
| List an Email's Translations | GET | `/v1/design_studio/emails/{{id}}/languages` | `conn_mod_def::GMXujGR1EwA::n9PIjyQsRP64PkJEpoTKQQ` |
| Create a Translation for an Email | POST | `/v1/design_studio/emails/{{id}}/languages` | `conn_mod_def::GMXuiAMslPA::6yP65gLuTFysLyhctzRQpQ` |
| Update an Email Translation | PUT | `/v1/design_studio/emails/{{id}}/languages/{{language}}` | `conn_mod_def::GMXujRLYHDA::oQqY7l1xTL6updcwiHL9pQ` |

### Exports

| Action | Method | Path | Action id |
|---|---|---|---|
| Download an Export | GET | `/v1/exports/{{exportId}}/download` | `conn_mod_def::GMXujYkKuzg::XySXuKmdTzuS_gSahlFZAQ` |
| Get an Export | GET | `/v1/exports/{{exportId}}` | `conn_mod_def::GMXujlGSIoA::bpoA8cHISfuKchFbhVWNHA` |
| List Exports | GET | `/v1/exports` | `conn_mod_def::GMXujkiME4A::z8gX1nXTTnuIF4qvCbJPTQ` |
| Export Customers Using Exports | POST | `/v1/exports/customers` | `conn_mod_def::GMXujd7UGJg::fvZsUpzcSYW1Q3ehhQLbpQ` |

### BroadcastActions

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Broadcast Action | GET | `/v1/broadcasts/{{broadcastId}}/actions/{{actionId}}` | `conn_mod_def::GMXugjq2t9A::5Kn2uwEYS3W8pQyDfToZJQ` |
| List a Broadcast's Actions | GET | `/v1/broadcasts/{{broadcastId}}/actions` | `conn_mod_def::GMXug6f7zAg::1ANI1lCiROqyhjEl06sTkQ` |
| Update a Broadcast Action | PUT | `/v1/broadcasts/{{broadcastId}}/actions/{{actionId}}` | `conn_mod_def::GMXug4gkFDA::2qEOFtv-TrK0gnj0yPUhLQ` |
| Update a Broadcast Action Translation | PUT | `/v1/broadcasts/{{broadcastId}}/actions/{{actionId}}/language/{{language}}` | `conn_mod_def::GMXuhAqb39g::bafriLvnTlG99H0zu5dvdw` |

### AssetFolders

| Action | Method | Path | Action id |
|---|---|---|---|
| Get an Asset Folder by ID | GET | `/v1/assets/folders/{{id}}` | `conn_mod_def::GMXugbZ0xwA::SJiMSI-YSU2t8BjvnVE7cw` |
| List Asset Folders | GET | `/v1/assets/folders` | `conn_mod_def::GMXugbyN44g::I4IVowfTReGCCOrjxwQAMg` |
| Create an Asset Folder | POST | `/v1/assets/folders` | `conn_mod_def::GMXugTKlnQA::EaMDqDoiSHCowuagizexvQ` |
| Update an Asset Folder | PUT | `/v1/assets/folders/{{id}}` | `conn_mod_def::GMXugirSwWA::ImEG-bKgRaCUMSQ9VyRfvg` |

### DesignStudioComponents

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Design Studio Component | GET | `/v1/design_studio/components/{{id}}` | `conn_mod_def::GMXuiHMT3_g::tcjRu5cISyamrJHsESkpUg` |
| List Design Studio Components | GET | `/v1/design_studio/components` | `conn_mod_def::GMXui_H7Hsg::haTH3mgUR26nhtK9Zxdamg` |
| Delete a Design Studio Component | DELETE | `/v1/design_studio/components/{{id}}` | `conn_mod_def::GMXuiACLDxA::yMCJpo7eSEaLAEATGfZeEA` |
| Update a Design Studio Component | PUT | `/v1/design_studio/components/{{id}}` | `conn_mod_def::GMXujHLvuVg::d0alWfV-QQ2rMswCIjRtJg` |

### Snippets

| Action | Method | Path | Action id |
|---|---|---|---|
| List Snippets | GET | `/v1/snippets` | `conn_mod_def::GMXulEfd2tA::1Bf4L2Q3TTePTPHeGhdIFg` |
| Create a Snippet | POST | `/v1/snippets` | `conn_mod_def::GMXulFcaMxg::K32rE-n6QQSDKALciVBBgA` |
| Delete a Snippet | DELETE | `/v1/snippets/{{snippetName}}` | `conn_mod_def::GMXulD0NaCg::qmhhxw7tTniB6ErpDsLy5Q` |
| Update Snippets | PUT | `/v1/snippets` | `conn_mod_def::GMXulEqOumA::FRVTdPZATbSG7bMRUIQocw` |

### Messages

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Message | GET | `/v1/messages/{{messageId}}` | `conn_mod_def::GMXujuV00rg::1w3rDJAXRLam5iBOz6L1Hw` |
| Get an Archived Message | GET | `/v1/messages/{{messageId}}/archived_message` | `conn_mod_def::GMXujs-VhNg::p77BRXVYRqydbo2-Bxt3bA` |
| List Messages | GET | `/v1/messages` | `conn_mod_def::GMXujuROJTg::VlKTAIOUQhabmYZpk904fw` |

### Emails

| Action | Method | Path | Action id |
|---|---|---|---|
| Get an Email | GET | `/v1/design_studio/emails/{{id}}` | `conn_mod_def::GMXuiHOPyqA::ImYFjzBPRdOLubLwyEuR_Q` |
| List Emails | GET | `/v1/design_studio/emails` | `conn_mod_def::GMXujJeDihA::CB-W1CUTSpGjtqG7X4XD-w` |
| Update an Email | PUT | `/v1/design_studio/emails/{{id}}` | `conn_mod_def::GMXujQEYQaA::dXRVBnEZRtma96W8ICDe0Q` |

### FileAsset

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a File Asset | GET | `/v1/assets/files/{{id}}` | `conn_mod_def::GMXugav5Ycg::yDwErtIhRE-8bvy6k-dyLA` |
| Delete a File Asset | DELETE | `/v1/assets/files/{{id}}` | `conn_mod_def::GMXugUiKEzA::cwg0nbvARcSy-T1kBSDu9w` |
| Update a File Asset | PUT | `/v1/assets/files/{{id}}` | `conn_mod_def::GMXugarAsug::qCnAH5wXTz-EjO5WCknZLQ` |

### DesignStudioFolders

| Action | Method | Path | Action id |
|---|---|---|---|
| List Design Studio Folders | GET | `/v1/design_studio/folders` | `conn_mod_def::GMXujINpqlA::mSQAJDS8Sv29zi-3q83AhQ` |
| Delete a Design Studio Folder | DELETE | `/v1/design_studio/folders/{{id}}` | `conn_mod_def::GMXuiA1V4og::gVnfv0TGSGGgseXHy8q5tA` |
| Update a Design Studio Folder | PUT | `/v1/design_studio/folders/{{id}}` | `conn_mod_def::GMXujFsRY0A::7ArbWYf8QgqCdvS4tUoRVA` |

### Campaigns

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Campaign by ID | GET | `/v1/campaigns/{{campaignId}}` | `conn_mod_def::GMXuhAgCBtA::Zo5wncXzREmNsrWeEa0Y9A` |
| List Campaigns | GET | `/v1/campaigns` | `conn_mod_def::GMXuhTcJmng::giPMaomhT3GpgwFqzzFKLQ` |

### DesignStudioEmails

| Action | Method | Path | Action id |
|---|---|---|---|
| Create an Email Using Design Studio | POST | `/v1/design_studio/emails` | `conn_mod_def::GMXuh1Ba20g::jTUWJgOeT6OZi2IU8PKmIA` |
| Delete a Design Studio Email | DELETE | `/v1/design_studio/emails/{{id}}` | `conn_mod_def::GMXuiAjbibA::JVXypnSeRAmKYKyDGmLNGw` |

### Folders

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Folder in Design Studio | GET | `/v1/design_studio/folders/{{id}}` | `conn_mod_def::GMXuiXCyJPg::wZA7e1usTIiS3BoEDzw6bQ` |
| Create a Folder in Design Studio | POST | `/v1/design_studio/folders` | `conn_mod_def::GMXuh4_muYA::eqNZ_mfMRlaJJ2ib_-oEzA` |

### Imports

| Action | Method | Path | Action id |
|---|---|---|---|
| Retrieve a Bulk Import | GET | `/v1/imports/{{importId}}` | `conn_mod_def::GMXujmfp0Mg::jqQdgAWrSQy6i7JqEP3uQA` |
| Import Items in Bulk | POST | `/v1/imports` | `conn_mod_def::GMXujmf8AQg::ifuYZZ2jTBihSIWAAXgy6Q` |

### Assets

| Action | Method | Path | Action id |
|---|---|---|---|
| List File Assets | GET | `/v1/assets` | `conn_mod_def::GMXugckwJEg::w6tYOkx7StKXFFVQUswS3g` |

1 more Assets actions are available through search.

This lists 90 of 162 actions. For anything not here, call `search_one_platform_actions` with platform `customer-io`. The full catalog is at https://www.withone.ai/knowledge/customer-io.

## When a call fails

The error comes from Customer.io, not from One. A 400 or 422 means your parameters do not match the schema, so re-read the knowledge and fix the field. A 401 or 403 means the connection needs re-authorizing, which no retry will fix. A 404 means the id is not on this account. A 429 means slow down. Never retry a write more than once: the first attempt may have landed.

Full catalog: https://www.withone.ai/knowledge/customer-io

Integration knowledge by One (withone.ai), licensed under [One-Knowledge-1.0](https://www.withone.ai/licenses/knowledge). Attribution must be preserved in derivative works.

