{"kind":"Skill","metadata":{"namespace":"community","name":"customerio-automation","version":"0.1.0"},"spec":{"description":"Automate customer engagement workflows including broadcast triggers, message analytics, segment management, and newsletter tracking through Customer.io via Composio","files":{"SKILL.md":"---\nname: Customer.io Automation\ndescription: \"Automate customer engagement workflows including broadcast triggers, message analytics, segment management, and newsletter tracking through Customer.io via Composio\"\nrequires:\n  mcp:\n    - rube\n---\n\n# Customer.io Automation\n\nAutomate customer engagement operations -- trigger targeted broadcasts, retrieve delivery metrics, manage audience segments, list newsletters and transactional templates, and inspect trigger execution history -- all orchestrated through the Composio MCP integration.\n\n**Toolkit docs:** [composio.dev/toolkits/customerio](https://composio.dev/toolkits/customerio)\n\n---\n\n## Setup\n\n1. Connect your Customer.io account through the Composio MCP server at `https://rube.app/mcp`\n2. The agent will prompt you with an authentication link if no active connection exists\n3. Once connected, all `CUSTOMERIO_*` tools become available for execution\n\n---\n\n## Core Workflows\n\n### 1. Trigger a Broadcast\nManually fire a pre-configured broadcast to a specific audience with personalization data.\n\n**Tool:** `CUSTOMERIO_TRIGGER_BROADCAST`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `broadcast_id` | integer | Yes | Broadcast ID from Customer.io Triggering Details |\n| `ids` | array | No | List of customer IDs to target |\n| `emails` | array | No | List of email addresses to target |\n| `recipients` | object | No | Complex filter with `and`/`or`/`not`/`segment` operators |\n| `per_user_data` | array | No | Per-user personalization with `id`/`email` + `data` |\n| `data` | object | No | Global key-value data for Liquid template personalization |\n| `data_file_url` | string | No | URL to JSON file with per-line user data |\n| `email_add_duplicates` | boolean | No | Allow duplicate recipients (default: false) |\n| `email_ignore_missing` | boolean | No | Skip people without emails (default: false) |\n| `id_ignore_missing` | boolean | No | Skip people without customer IDs (default: false) |\n\n**Important:** Provide exactly ONE audience option: `recipients`, `ids`, `emails`, `per_user_data`, or `data_file_url`. Rate limit: 1 request per 10 seconds per broadcast.\n\n---\n\n### 2. Retrieve Message Delivery Metrics\nFetch paginated delivery metrics for messages with filtering by campaign, type, and time window.\n\n**Tool:** `CUSTOMERIO_GET_MESSAGES`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `type` | string | No | Message type: `email`, `webhook`, `twilio`, `slack`, `push`, `in_app` |\n| `metric` | string | No | Metric: `attempted`, `sent`, `delivered`, `opened`, `clicked`, `converted` |\n| `campaign_id` | integer | No | Filter by campaign ID |\n| `newsletter_id` | integer | No | Filter by newsletter ID |\n| `action_id` | integer | No | Filter by action ID |\n| `start_ts` | integer | No | Start of time window (Unix timestamp) |\n| `end_ts` | integer | No | End of time window (Unix timestamp) |\n| `limit` | integer | No | Results per page, 1-1000 (default: 50) |\n| `start` | string | No | Pagination token from previous response `next` value |\n| `drafts` | boolean | No | Return draft messages instead of active/sent |\n\n---\n\n### 3. List Audience Segments\nRetrieve all segments defined in your workspace for audience analysis and broadcast targeting.\n\n**Tool:** `CUSTOMERIO_GET_SEGMENTS`\n\n```\nNo parameters required -- returns all segments with IDs and metadata.\n```\n\nUse segment IDs when targeting broadcasts via the `recipients.segment.id` filter.\n\n---\n\n### 4. List Newsletters\nPaginate through all newsletter metadata for tracking and analysis.\n\n**Tool:** `CUSTOMERIO_LIST_NEWSLETTERS`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `limit` | integer | No | Max per page, 1-100 |\n| `sort` | string | No | `asc` (chronological) or `desc` (reverse) |\n| `start` | string | No | Pagination cursor from previous response `next` value |\n\n---\n\n### 5. Discover Transactional Message Templates\nList all transactional message templates to find IDs for sending via the API.\n\n**Tool:** `CUSTOMERIO_LIST_TRANSACTIONAL_MESSAGES`\n\n```\nNo parameters required -- returns template IDs and trigger names.\n```\n\n---\n\n### 6. Inspect Broadcast Trigger History\nReview all trigger executions for a broadcast and inspect individual trigger details.\n\n**Tools:** `CUSTOMERIO_GET_TRIGGERS` and `CUSTOMERIO_GET_TRIGGER`\n\n**List all triggers for a broadcast:**\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `broadcast_id` | integer | Yes | The broadcast/campaign ID |\n\n**Get a specific trigger:**\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `broadcast_id` | integer | Yes | The campaign/broadcast ID |\n| `trigger_id` | string | Yes | Trigger identifier (e.g., `456` or `5-37`) |\n\n---\n\n## Known Pitfalls\n\n| Pitfall | Details |\n|---------|---------|\n| **Mutually exclusive audience params** | `CUSTOMERIO_TRIGGER_BROADCAST` requires exactly ONE of `recipients`, `ids`, `emails`, `per_user_data`, or `data_file_url` -- providing multiple causes errors |\n| **Rate limiting on broadcasts** | Broadcasts are limited to 1 trigger request per 10 seconds per broadcast ID |\n| **Unix timestamp format** | `start_ts` and `end_ts` in `CUSTOMERIO_GET_MESSAGES` must be Unix timestamps, not ISO strings |\n| **Pagination tokens** | Messages and newsletters use cursor-based pagination via the `start` parameter -- use the `next` value from previous responses |\n| **Segment ID resolution** | To target a segment in a broadcast, first fetch segment IDs via `CUSTOMERIO_GET_SEGMENTS`, then reference by ID in `recipients.segment.id` |\n\n---\n\n## Quick Reference\n\n| Tool Slug | Purpose |\n|-----------|---------|\n| `CUSTOMERIO_TRIGGER_BROADCAST` | Trigger a broadcast to a defined audience |\n| `CUSTOMERIO_GET_MESSAGES` | Retrieve message delivery metrics with filters |\n| `CUSTOMERIO_GET_SEGMENTS` | List all audience segments |\n| `CUSTOMERIO_GET_SEGMENT_DETAILS` | Get details for a specific segment |\n| `CUSTOMERIO_LIST_NEWSLETTERS` | Paginate through newsletters |\n| `CUSTOMERIO_LIST_TRANSACTIONAL_MESSAGES` | List transactional message templates |\n| `CUSTOMERIO_GET_TRIGGERS` | List all trigger executions for a broadcast |\n| `CUSTOMERIO_GET_TRIGGER` | Inspect a specific trigger execution |\n\n---\n\n*Powered by [Composio](https://composio.dev)*\n"},"import":{"commit_sha":"f2b5e29bc315f04c8e09591ba275f4c4f7d4b8fe","imported_at":"2026-05-18T20:07:47Z","license_text":"","owner":"ComposioHQ","repo":"ComposioHQ/awesome-claude-skills","source_url":"https://github.com/ComposioHQ/awesome-claude-skills/tree/f2b5e29bc315f04c8e09591ba275f4c4f7d4b8fe/composio-skills/customerio-automation"}},"content_hash":[66,253,20,121,58,240,4,78,223,149,213,123,0,29,216,208,252,153,244,175,198,130,173,253,162,34,81,248,84,204,142,246],"trust_level":"unsigned","yanked":false}
