# Customer.io

Customer.io is a customer engagement platform that enables businesses to send targeted messages to their customers through various channels, including email, SMS, and push notifications.

- **Category:** marketing automation
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 24
- **Triggers:** 0
- **Slug:** `CUSTOMERIO`
- **Version:** 20260312_00

## Tools

### Add Person to Group

**Slug:** `CUSTOMERIO_ADD_PERSON_TO_GROUP`

Tool to add people to a group in Customer.io. Groups represent objects like companies, accounts, or projects that people belong to. Use when you need to establish relationships between people and organizational entities.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `traits` | object | No | Key-value pairs representing attributes of the group. Examples: name, type, created_at, industry, etc. |
| `user_id` | string | Yes | A unique identifier for the person to add to the group. This is the person's ID in your system. |
| `group_id` | string | Yes | A unique identifier for the group (object). This could represent a company, account, project, or any organizational entity. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Profile Alias

**Slug:** `CUSTOMERIO_CREATE_ALIAS`

Tool to create an alias to merge multiple profiles in Customer.io. Use when you need to support multiple identifiers for a single person. The alias operation moves all data from the previous_id profile to the user_id profile, consolidating them into a single canonical profile.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `userId` | string | Yes | The profile to merge into (destination). This is the canonical user identifier that will retain all data. |
| `previousId` | string | Yes | The profile to merge from (source). All data from this profile will be moved to the user_id profile. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Suppress Customer Profile

**Slug:** `CUSTOMERIO_CUSTOMER_IO_SUPPRESS_PERSON`

Suppress a customer profile to permanently delete it and prevent re-adding with the same identifier. IMPORTANT: This action requires Track API credentials (Basic Auth with siteId:apiKey), not App API credentials. Suppression also deletes the customer profile - you don't need to call a separate delete endpoint. Use this for GDPR/CCPA compliance requests. The operation is irreversible and prevents any future attempts to re-add a person with the same identifier (email or ID).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `identifier` | string | Yes | The unique identifier for the person to suppress. Can be a customer ID (numeric), email address, or Customer.io ID (prefixed with 'cio_'). The person will be permanently deleted and cannot be re-added with this identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Integrations

**Slug:** `CUSTOMERIO_GET_INTEGRATIONS`

Tool to retrieve a list of integrations in your workspace. Use when you need to discover configured integrations.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Messages

**Slug:** `CUSTOMERIO_GET_MESSAGES`

Tool to retrieve a list of messages sent from your workspace. Use when you need paginated delivery metrics for messages, e.g., list email messages delivered between two timestamps.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("email" | "webhook" | "twilio" | "slack" | "push" | "in_app") | No | Type of message to return metrics for. If omitted, returns all types. |
| `limit` | integer | No | Maximum number of results per page (1–1000). Default is 50. |
| `start` | string | No | Pagination token for the page of results to return. Use the 'next' value from a previous response as this parameter. |
| `drafts` | boolean | No | If true, returns draft messages instead of active/sent ones. |
| `end_ts` | integer | No | End of time window (Unix timestamp). |
| `metric` | string | No | Metric to include in response, e.g., 'attempted', 'sent', 'delivered', 'opened', 'clicked', 'converted'. |
| `start_ts` | integer | No | Start of time window (Unix timestamp). |
| `action_id` | integer | No | Filter results by a specific action ID. |
| `campaign_id` | integer | No | Filter results by a specific campaign ID. |
| `newsletter_id` | integer | No | Filter results by a specific newsletter ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Segment Details

**Slug:** `CUSTOMERIO_GET_SEGMENT_DETAILS`

Tool to retrieve details of a specific segment. Use after identifying the segment ID from list segments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `segment_id` | integer | Yes | The unique identifier of the segment to retrieve. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Segment Membership

**Slug:** `CUSTOMERIO_GET_SEGMENT_MEMBERSHIP`

Tool to retrieve people in a specific segment. Use when you need to page through segment membership after identifying segment ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sort` | string ("asc" | "desc") | No | Order of results: 'asc' for oldest first, 'desc' for newest first. |
| `limit` | integer | No | Maximum number of results per page (1 ≤ limit ≤ 30000). Default is 1000. |
| `start` | string | No | Pagination token for the page of results to return. |
| `segment_id` | integer | Yes | The segment's unique identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Segments

**Slug:** `CUSTOMERIO_GET_SEGMENTS`

Tool to retrieve a list of segments in your workspace. Use when you need to fetch all segments after configuring segment rules.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Trigger

**Slug:** `CUSTOMERIO_GET_TRIGGER`

Retrieves details about a specific API-triggered broadcast, including trigger ID, campaign ID, creation timestamp, recipient filter criteria, and personalization data. Use this after triggering a broadcast to verify its configuration and check the data used for message personalization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `trigger_id` | string | Yes | The unique identifier of the trigger to retrieve (e.g., '5-37' or just '456'). |
| `broadcast_id` | integer | Yes | The unique identifier of the campaign/broadcast (campaign_id). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Broadcast Triggers

**Slug:** `CUSTOMERIO_GET_TRIGGERS`

Retrieve all API trigger instances for a specific broadcast/campaign. Returns trigger metadata including IDs, creation timestamps, and processing status. Use after triggering a broadcast to list all its trigger executions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `broadcast_id` | integer | Yes | The broadcast/campaign unique identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Customer.io Workspace Webhooks

**Slug:** `CUSTOMERIO_GET_WEBHOOKS`

Retrieves all reporting webhook configurations from the Customer.io workspace. Reporting webhooks send event notifications (message sent, opened, clicked, etc.) to your specified endpoints. Use this to list all configured webhooks and their settings including subscribed events, endpoints, and status. Returns an empty list if no webhooks are configured.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Identify Person

**Slug:** `CUSTOMERIO_IDENTIFY_PERSON`

Tool to identify a person and assign traits to them in Customer.io. Creates a new person profile if it doesn't exist, or updates an existing one. Use when adding new users, updating user profiles, or tracking anonymous visitors. Either user_id or anonymous_id must be provided.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `traits` | object | No | Key-value pairs representing attributes to assign to the person. Common traits include email, name, firstName, lastName, phone, company, etc. |
| `userId` | string | No | A unique identifier for the person. Either user_id or anonymous_id must be provided. Use this for identified users. |
| `timestamp` | string | No | ISO 8601 timestamp indicating when the identification occurred. If omitted, Customer.io uses the current time. |
| `anonymousId` | string | No | An anonymous identifier for the person if user_id is not available. Either user_id or anonymous_id must be provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Collections

**Slug:** `CUSTOMERIO_LIST_COLLECTIONS`

Tool to list all Collections metadata. Use when you need to retrieve current details of each Collection in your workspace.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List IP Addresses

**Slug:** `CUSTOMERIO_LIST_IP_ADDRESSES`

Tool to retrieve the list of IP addresses used by Customer.io for sending messages. Use when you need to allowlist or configure firewall rules for Customer.io's sending infrastructure.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Newsletters

**Slug:** `CUSTOMERIO_LIST_NEWSLETTERS`

Tool to list all newsletters. Use when paginating through newsletter metadata.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sort` | string ("asc" | "desc") | No | Sort order: 'asc' for chronological, 'desc' for reverse chronological |
| `limit` | integer | No | Maximum number of newsletters to retrieve per page |
| `start` | string | No | Pagination cursor. Use 'next' value from previous response to get next page |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Snippets

**Slug:** `CUSTOMERIO_LIST_SNIPPETS`

Tool to list all snippets in your workspace. Use when you need to retrieve all reusable content snippets for templating or dynamic content insertion.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Transactional Messages

**Slug:** `CUSTOMERIO_LIST_TRANSACTIONAL_MESSAGES`

Lists all transactional message templates in your Customer.io workspace. Returns the ID and name (trigger name) for each template. Use this when you need to discover available transactional message templates or retrieve their IDs for sending messages via the API.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Report Push Notification Events

**Slug:** `CUSTOMERIO_REPORT_PUSH_EVENTS`

Tool to report push notification events to Customer.io. Use when you need to track device-side push events (opened, converted, delivered). IMPORTANT: This endpoint is deprecated. Use the metrics endpoint instead for reporting push events. This action requires Track API credentials (Basic Auth with siteId:apiKey), not App API credentials.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event` | string ("opened" | "converted" | "delivered") | Yes | The type of device-side event you want to report back to Customer.io. |
| `device_id` | string | Yes | The CIO-Delivery-Token representing the device that received the original notification. |
| `timestamp` | integer | Yes | The unix timestamp when the event occurred. |
| `delivery_id` | string | Yes | The CIO-Delivery-ID from the notification that you want to associate the event with. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Send Batch CDP Calls

**Slug:** `CUSTOMERIO_SEND_BATCH`

Send multiple CDP calls (identify, track, page, screen, group, alias) in a single batch request. Use this to efficiently send multiple events or profile updates in one API call. The batch endpoint supports up to 500KB total with 32KB per individual call. Each call in the batch can be a different type (identify, track, page, screen, group, or alias). Requirements by call type: - identify/track/page/screen: Require userId or anonymousId - group: Requires groupId (and userId or anonymousId) - track: Requires event name - alias: Requires userId and previousId Note: This action uses the CDP API base URL (https://cdp.customer.io/v1) which differs from the Track API base URL used by some other Customer.io actions.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `batch` | array | Yes | Array of CDP calls to process. Can include identify, track, page, screen, group, or alias calls. Maximum 500KB total size, 32KB per call. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Track Event

**Slug:** `CUSTOMERIO_TRACK_EVENT`

Tool to send an event associated with a person in Customer.io. Records actions users take, along with properties that describe the action. Use when you need to track user behavior, conversions, or custom events for segmentation and campaigns.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `event` | string | Yes | The name of the event to track. This is required and describes the action that occurred. |
| `userId` | string | No | A unique identifier for a person. At least one of userId or anonymousId must be provided. |
| `timestamp` | string | No | ISO 8601 timestamp for when the event occurred. If not provided, Customer.io will use the current time. |
| `properties` | object | No | Key-value pairs representing event data and metadata. Use this to add custom attributes to the event. |
| `anonymousId` | string | No | An anonymous ID for the person. At least one of userId or anonymousId must be provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Track Page View

**Slug:** `CUSTOMERIO_TRACK_PAGE`

Tool to track page view events for website visitors in Customer.io. Use when recording user navigation or page impressions on your website. IMPORTANT: This action requires CDP API credentials (Bearer token), not Track API or App API credentials. Either user_id or anonymous_id must be provided to identify the viewer. Include properties like url, title, and path to enrich analytics and segmentation capabilities.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | The name of the page being viewed. Helps categorize and filter page views. |
| `userId` | string | No | A unique identifier for the person viewing the page. Either user_id or anonymous_id must be provided. |
| `properties` | object | No | Additional properties about the page view such as url, title, path, referrer, or custom metadata. |
| `anonymousId` | string | No | An anonymous identifier for the person if user_id is not available. Either user_id or anonymous_id must be provided. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Track Screen View

**Slug:** `CUSTOMERIO_TRACK_SCREEN`

Track mobile screen views in Customer.io for analytics and user journey tracking. Records when a user views a screen in your mobile app. Use this when you need to: - Track user navigation patterns in mobile apps - Record screen views for engagement analytics - Trigger workflows based on specific screen visits - Build user journey maps based on screen flow Requirements: - Provide either userId (for known users) or anonymousId (for anonymous users) - Screen name is required to identify which screen was viewed - Optionally include properties for additional context (platform, category, etc.) Note: This endpoint uses the CDP API (cdp.customer.io), not the standard App API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the screen that was viewed (e.g., 'home_screen', 'feed', 'settings'). |
| `type` | string | No | Event type identifier. Should always be 'screen' for screen view events. |
| `sentAt` | string | No | ISO 8601 timestamp of when the event was sent from the client. Used for clock skew correction. |
| `userId` | string | No | Unique identifier for a known user. Use this to track screen views for identified users. Mutually exclusive with anonymousId - provide one or the other. |
| `context` | object | No | Optional contextual information about the event (e.g., device info, IP address, app version). |
| `version` | number | No | Version number of the tracking spec being used. |
| `messageId` | string | No | Unique identifier for this message/event. If not provided, one will be generated automatically. |
| `timestamp` | string | No | ISO 8601 timestamp of when the screen view occurred. If not provided, the current time will be used. Format: YYYY-MM-DDTHH:mm:ss.sssZ |
| `properties` | object | No | Optional key-value pairs containing additional context about the screen view (e.g., screen_category, platform, referrer). |
| `receivedAt` | string | No | ISO 8601 timestamp of when the event was received by the server. Typically set automatically. |
| `anonymousId` | string | No | Unique identifier for an anonymous user who hasn't been identified yet. Mutually exclusive with userId - provide one or the other. |
| `strict_mode` | boolean | No | When True, enables strict validation that returns proper HTTP error codes (400/401) for validation failures. When False (default), the API operates in permissive mode, logging errors but returning HTTP 200. |
| `integrations` | object | No | Control which downstream integrations receive this event. Use {'All': true} to send to all integrations, or specify individual integrations like {'Salesforce': false}. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Trigger Broadcast

**Slug:** `CUSTOMERIO_TRIGGER_BROADCAST`

Manually trigger a Customer.io broadcast/campaign to send messages to a defined audience. Use this when you need to: - Send a pre-configured broadcast to specific recipients (by ID or email) - Override the broadcast's default UI-defined audience with custom filtering - Provide personalization data for Liquid template variables - Send individualized content using per_user_data Requirements: - broadcast_id: Must be a valid broadcast ID from Customer.io (find in broadcast's Triggering Details) - Audience: Provide exactly ONE of: recipients, ids, emails, per_user_data, or data_file_url Rate Limits: This endpoint allows one request every 10 seconds per broadcast.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of customer IDs to target (mutually exclusive with other audience options). |
| `data` | object | No | Global key-value data for Liquid templating personalization across all recipients. |
| `emails` | array | No | List of email addresses to target (mutually exclusive with other audience options). |
| `recipients` | object | No | Override the broadcast's UI audience with complex filtering logic. Use logical operators (and/or/not) with segment or attribute filters. |
| `broadcast_id` | integer | Yes | The ID of the broadcast to trigger. |
| `data_file_url` | string | No | HTTP(S) URL to a file with JSON data (one map per line with id/email and data). Mutually exclusive with other audience options. |
| `per_user_data` | array | No | Array of user-specific data with id/email and personalization (mutually exclusive with other audience options). |
| `id_ignore_missing` | boolean | No | Skip people without customer IDs. Default: false. |
| `email_add_duplicates` | boolean | No | Allow duplicate email recipients. Default: false. |
| `email_ignore_missing` | boolean | No | Skip people without email addresses. Default: false. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Unsubscribe from Delivery

**Slug:** `CUSTOMERIO_UNSUBSCRIBE_DELIVERY`

Tool to handle custom unsubscribe requests for email deliveries in Customer.io. Use when you need to unsubscribe a person from emails and attribute the action to a specific delivery. IMPORTANT: This action requires Track API credentials (Basic Auth with siteId:apiKey), not App API credentials. The unsubscribe action sets the person's unsubscribed attribute to true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `delivery_id` | string | Yes | The delivery ID resulting in a request to unsubscribe. This is the unique identifier for a message delivery (e.g., 'dgOq6QWq6QUBAAF4_CGoeVX7mFkDbRFu7ek='). You can obtain this from message delivery events or the Get Messages endpoint. |
| `unsubscribe` | boolean | No | If true, the person's 'unsubscribed' attribute is set to true and the unsubscription is attributed to this delivery. Set to false to revert an unsubscribe action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
