Customer.io
Arcade.dev LLM tools for Customer.io
0.1.0The Customer.io toolkit lets LLMs interact with a Customer.io workspace via the Tracking and App APIs. It covers the full lifecycle of contacts, messaging, and analytics — from identifying people and recording events through sending transactional emails and triggering broadcasts.
Capabilities
- Contact management: Create, update, look up, search, and delete person profiles; resolve by email or ID; handle multi-match edge cases.
- Activity & message history: Retrieve a person's timeline of activities (filterable by type/name) and full message/delivery history.
- Segments: List workspace segments, check which segments a person belongs to, and enumerate segment members.
- Campaigns, newsletters & broadcasts: List campaigns, newsletters, and broadcasts; read aggregate delivery metrics for campaigns and newsletters; trigger API broadcasts to segments or explicit recipient lists.
- Transactional messaging: List transactional message templates and send transactional emails to a single recipient by template ID.
- Event tracking: Record named custom events on a person's timeline to drive lifecycle journeys.
Secrets
This toolkit uses no OAuth flow. All credentials are supplied as secrets.
-
CUSTOMERIO_SITE_ID— The Site ID for your Customer.io workspace, used to authenticate Tracking API calls. Find it in the Customer.io dashboard under Settings → API Credentials → Tracking API. Customer.io API Credentials docs -
CUSTOMERIO_TRACKING_API_KEY— The Tracking API Key paired with the Site ID above. Retrieved from the same Settings → API Credentials → Tracking API page. This key authenticates event, identify, and delete calls sent to the Tracking API endpoint. -
CUSTOMERIO_APP_API_KEY— A Bearer token for the Customer.io App API (used for reading campaigns, newsletters, segments, sending transactional email, triggering broadcasts, etc.). Generate one in Settings → API Credentials → App API Keys. Scope the key to the minimum permissions your use case requires. Customer.io App API auth docs -
CUSTOMERIO_REGION— Specifies the data region for your workspace (USorEU). This determines which API base URLs are used. You can confirm your region in Settings → Workspace Settings. Provide the appropriate string so requests are routed to the correct regional endpoint.
See the Arcade secrets guide for how to configure secrets, and manage them at https://api.arcade.dev/dashboard/auth/secrets.
Available tools(18)
| Tool name | Description | Secrets | |
|---|---|---|---|
Delete a person record to honor a data-removal request.
Deleting a person who does not exist is accepted as a no-op. | 2 | ||
Read a campaign's aggregate delivery metrics over a period. | 2 | ||
Read a newsletter's aggregate delivery metrics over a period. | 2 | ||
Look up a person's profile by email or id.
Resolves the person by whichever identifier is supplied; an email shared by
several people reports every match in the result. | 2 | ||
Create or update a person and their attributes.
Existing attributes not named in this call are preserved; named attributes
are added or overwritten. | 2 | ||
List the workspace's broadcasts to discover ids that can be triggered. | 2 | ||
List the campaigns in the workspace. | 2 | ||
List the newsletters in the workspace. | 2 | ||
List a person's recent activities, most recent first, resolved by email
or id. Optionally filter by activity type and/or name; filtering by name
requires an activity type. When an email matches several people, the first
match's activities are returned. | 2 | ||
List a person's message and delivery history, most recent first,
resolved by email or id. When an email matches several people, the first
match's messages are returned. | 2 | ||
List the segments a person belongs to, resolved by email or id. When an
email matches several people, the first match's segments are returned. | 2 | ||
List the ids of the people in a segment and the segment's total size. | 2 | ||
List the segments defined in the workspace. | 2 | ||
List the transactional message templates in the workspace. | 2 | ||
Record a named custom event on a person's timeline to drive lifecycle
journeys. | 2 | ||
Find people by segment membership and/or an attribute, to build an
audience without a known id. Supply at least one of a segment or an
attribute name; both combine with AND. | 2 | ||
Send a transactional email to one recipient by its template id. | 2 | ||
Trigger an API broadcast to a segment or an explicit recipient list. | 2 |
Selected tools
No tools selected.
Click "Show all tools" to add tools.
Requirements
Select tools to see requirements
Customerio.DeletePerson
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Delete a person record to honor a data-removal request. Deleting a person who does not exist is accepted as a no-op.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Required | Id of the person to delete. |
identifier_type | string | Optional | Which kind of value person_id is, so the delete targets the right profile. Defaults to the external id you assigned the person; use the Customer.io internal id when person_id is a cio_id (people with no external id are returned that way), or email when it is an email address.idemailcio_id |
Requirements
Output
json— No description provided.Customerio.GetCampaignMetrics
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Read a campaign's aggregate delivery metrics over a period.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
campaign_id | string | Required | Id of the campaign whose metrics to read. |
period | string | Optional | Granularity of the metric series. Defaults to days.hoursdaysweeksmonths |
steps | integer | Optional | Number of periods to report, counting back from now. Defaults to 30. |
Requirements
Output
json— No description provided.Customerio.GetNewsletterMetrics
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Read a newsletter's aggregate delivery metrics over a period.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
newsletter_id | string | Required | Id of the newsletter whose metrics to read. |
period | string | Optional | Granularity of the metric series. Defaults to days.hoursdaysweeksmonths |
steps | integer | Optional | Number of periods to report, counting back from now. Defaults to 30. |
Requirements
Output
json— No description provided.Customerio.GetPerson
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Look up a person's profile by email or id. Resolves the person by whichever identifier is supplied; an email shared by several people reports every match in the result.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
email | string | Optional | Email address to look up the person by. Provide this or a person id. |
person_id | string | Optional | Customer.io person id to look up. Provide this or an email. |
Requirements
Output
json— No description provided.Customerio.IdentifyPerson
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Create or update a person and their attributes. Existing attributes not named in this call are preserved; named attributes are added or overwritten.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Required | Stable id that identifies the person; creates the person if new. |
identifier_type | string | Optional | Which kind of value person_id is, so the write targets the right profile. Defaults to the external id you assigned the person; use the Customer.io internal id when person_id is a cio_id (people with no external id are returned that way), or email when it is an email address.idemailcio_id |
email | string | Optional | Email to set on the person. Provided values are stored as the email attribute; leave empty to leave the email unchanged. |
attributes | json | Optional | Attributes to set or update on the person, as a flat mapping of attribute name to value. Omitted attributes are left unchanged. |
Requirements
Output
json— No description provided.Customerio.ListBroadcasts
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the workspace's broadcasts to discover ids that can be triggered.
Parameters
No parameters required.
Requirements
Output
json— No description provided.Customerio.ListCampaigns
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the campaigns in the workspace.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
limit | integer | Optional | Maximum campaigns to return (1-1000). Defaults to 50. |
offset | integer | Optional | 0-indexed starting position. Defaults to 0 (first result). |
Requirements
Output
json— No description provided.Customerio.ListNewsletters
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the newsletters in the workspace.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
limit | integer | Optional | Maximum newsletters to return (1-1000). Defaults to 50. |
offset | integer | Optional | 0-indexed starting position. Defaults to 0 (first result). |
Requirements
Output
json— No description provided.Customerio.ListPersonActivities
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List a person's recent activities, most recent first, resolved by email or id. Optionally filter by activity type and/or name; filtering by name requires an activity type. When an email matches several people, the first match's activities are returned.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Optional | Customer.io person id. Provide this or an email. |
email | string | Optional | Email of the person. Provide this or a person id. |
activity_type | string | Optional | Restrict to one activity type. Leave empty for all types.eventpageattribute_changeattribute_deletesecondary_id_change |
name | string | Optional | Restrict to activities with this exact name (e.g. an event name). Requires an activity type to also be set. Leave empty for any name. |
limit | integer | Optional | Maximum activities to return (1-1000). Defaults to 50. |
cursor | string | Optional | Pagination cursor from a prior page. Leave empty for the first page. |
Requirements
Output
json— No description provided.Customerio.ListPersonMessages
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List a person's message and delivery history, most recent first, resolved by email or id. When an email matches several people, the first match's messages are returned.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Optional | Customer.io person id. Provide this or an email. |
email | string | Optional | Email of the person. Provide this or a person id. |
limit | integer | Optional | Maximum messages to return (1-1000). Defaults to 50. |
cursor | string | Optional | Pagination cursor from a prior page. Leave empty for the first page. |
Requirements
Output
json— No description provided.Customerio.ListPersonSegments
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the segments a person belongs to, resolved by email or id. When an email matches several people, the first match's segments are returned.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Optional | Customer.io person id. Provide this or an email. |
email | string | Optional | Email of the person. Provide this or a person id. |
Requirements
Output
json— No description provided.Customerio.ListSegmentMembers
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the ids of the people in a segment and the segment's total size.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
segment_id | string | Required | Id of the segment whose members to list. |
limit | integer | Optional | Maximum member ids to return (1-1000). Defaults to 100. |
cursor | string | Optional | Pagination cursor from a prior page. Leave empty for the first page. |
Requirements
Output
json— No description provided.Customerio.ListSegments
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the segments defined in the workspace.
Parameters
No parameters required.
Requirements
Output
json— No description provided.Customerio.ListTransactionalMessages
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
List the transactional message templates in the workspace.
Parameters
No parameters required.
Requirements
Output
json— No description provided.Customerio.RecordEvent
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Record a named custom event on a person's timeline to drive lifecycle journeys.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
person_id | string | Required | Id of the person the event is recorded against. |
name | string | Required | Name of the custom event (e.g. purchased, signed_up). |
identifier_type | string | Optional | Which kind of value person_id is, so the event targets the right profile. Defaults to the external id you assigned the person; use the Customer.io internal id when person_id is a cio_id (people with no external id are returned that way), or email when it is an email address.idemailcio_id |
data | json | Optional | Event data as a flat mapping of property name to value. Leave empty for an event with no data. |
Requirements
Output
json— No description provided.Customerio.SearchPeople
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Find people by segment membership and/or an attribute, to build an audience without a known id. Supply at least one of a segment or an attribute name; both combine with AND.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
segment_id | string | Optional | Restrict to members of this segment. Leave empty to not filter by segment. |
attribute_name | string | Optional | Restrict to people who have this attribute. Combine with an attribute value to match a specific value, or leave the value empty to match anyone the attribute is set on. Leave empty to not filter by attribute. |
attribute_value | string | Optional | Value the named attribute must equal. Ignored unless an attribute name is given; leave empty to match any value the attribute is set to. |
limit | integer | Optional | Maximum people to return (1-1000). Defaults to 50. |
cursor | string | Optional | Pagination cursor from a prior page. Leave empty for the first page. |
Requirements
Output
json— No description provided.Customerio.SendTransactionalEmail
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Send a transactional email to one recipient by its template id.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
transactional_message_id | string | Required | Id of the transactional message template to send. |
to | string | Required | Recipient email address. The send is associated with the person who has this email; provide an email address, not a person id. |
message_data | json | Optional | Values for the template's variables, as a flat mapping of name to value. Leave empty when the template has no variables. |
subject | string | Optional | Subject line override. Leave empty to use the template's subject. |
from_address | string | Optional | From address override. Leave empty to use the template's sender. |
bcc | string | Optional | BCC address. Leave empty for none. |
reply_to | string | Optional | Reply-to address override. Leave empty to use the template's default. |
Requirements
Output
json— No description provided.Customerio.TriggerBroadcast
Execution hints
Signals for MCP clients and agents about how this tool behaves.
Reads data without modifying any state in the target system.
May permanently delete or overwrite data in the target system.
Repeated calls with the same inputs produce no additional effect.
Communicates with external APIs, databases, or other services.
Trigger an API broadcast to a segment or an explicit recipient list.
Parameters
| Parameter | Type | Req. | Description |
|---|---|---|---|
broadcast_id | string | Required | Id of the API-triggered broadcast to launch. |
data | json | Optional | Trigger data referenced by the broadcast's content/liquid, as a flat mapping of name to value. Leave empty when the broadcast references no data. |
segment_id | string | Optional | Segment id to send to. Leave empty to use the broadcast's configured audience or an explicit recipient list. |
recipient_ids | array<string> | Optional | Explicit external customer ids to send to (the id you assigned the person, not a Customer.io cio_id). Leave empty to target a segment, recipient emails, or the configured audience. |
recipient_emails | array<string> | Optional | Explicit recipient email addresses to send to. Prefer this when you only have an email or a cio_id. Leave empty to target a segment or ids. |
Requirements
Output
json— No description provided.