Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

Customer.io integration

In short

Send transactional messages, trigger broadcasts, read customers. Connect it on the Integrations page; your app then calls Customer.io through Sapilon without ever holding a Customer.io credential.

Lets your app send transactional emails and push notifications from Customer.io templates, trigger API broadcasts, and read customers, segments and campaigns.

Connecting

On the Integrations page choose Connect on Customer.io and fill in:

  • Region — api for US workspaces, api-eu for EU workspaces.
  • App API key — Customer.io → Settings → Account settings → API credentials → App API keys → Create.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • GET /workspaces
  • POST /send/email
  • POST /send/push
  • POST /campaigns/*/triggers
  • GET /campaigns
  • GET /segments
  • GET /customers/*/attributes
  • GET /customers/*/messages

How the agent uses it

Use integrations.request('customer-io', …); paths are relative to https://api.customer.io/v1.

  • POST /send/email — a transactional message. Example: { method: 'POST', path: '/send/email', body: { transactional_message_id: 3, to: 'sara@acme.com', identifiers: { email: 'sara@acme.com' }, message_data: { orderId: 'A-17' } } }. POST /send/push — same shape.
  • POST /campaigns/{broadcastId}/triggers — an API-triggered broadcast: body: { data: {…}, emails: ['…'] } or ids.
  • GET /campaigns, GET /segments, GET /workspaces.
  • GET /customers/{id}/attributes, GET /customers/{id}/messages — query: { id_type: 'email' } to look up by email.

Identifying customers and tracking events use the Track API, which is not included here.

More from Customer.io: https://docs.customer.io/integrations/api/app/

Last updated .

Was this page helpful?