Reference · Tools
Customer.io Trigger
Starts workflow on Customer.io reporting events
The Customer.io Trigger node starts a BusyBot workflow the moment Customer.io sends a reporting webhook event. It supports 31 event types — from email opens and clicks to SMS delivery status and subscription changes — across email, push, Slack, and SMS channels. Use it to, for example, automatically log bounces to a CRM or alert a Slack channel when a spam report comes in.
- Node type
- Webhook trigger
- Parameters
- 1
- Outputs
- Output
- Credentials
- Customer.io
Customer.io Trigger
Trigger on Customer.io reporting events
Overview
Starts a workflow when Customer.io sends a reporting webhook event. Supports 31 event types across customer, email, push, Slack, and SMS channels. Events include subscription changes, delivery status, opens, clicks, bounces, spam reports, and more. The webhook receives POST requests from Customer.io’s reporting webhook system with event payloads containing message metadata, recipient info, and event-specific data.
Category: Marketing
Tool Name: customerio_trigger
Version: 1
Appearance: Icon: lucide-Users | Color: #FFD100
Node Type
Trigger — webhook (receives incoming HTTP callbacks)
Input / Output
| Direction | Port(s) |
|---|---|
| Input | None (trigger node) |
| Output | Output |
Credentials
This tool requires Customer.io credentials. See the Credentials Guide for setup instructions.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Events | multiOptions | Yes | [] | Which Customer.io reporting events to listen for. |
Options: customer.subscribed, customer.unsubscribed, email.attempted, email.bounced, email.clicked, email.converted, email.delivered, email.drafted, email.failed, email.opened, email.sent, email.spammed, push.attempted, push.bounced, push.clicked, push.delivered, push.drafted, push.failed, push.opened, push.sent, slack.attempted, slack.clicked, slack.drafted, slack.failed, slack.sent, sms.attempted, sms.bounced, sms.clicked, sms.delivered, sms.drafted, sms.failed, sms.sent |
Output Data
Each delivery from Customer.io produces one output item. The webhook payload is copied onto the item unchanged, and three fields are added:
_trigger— alwayscustomerio_webhook_timestamp— ISO 8601 timestamp of when the request arrived_webhookEvent— the reported event, taken from the payload’sevent_typefield, falling back tometric
The Customer.io payload itself carries:
event_id— the unique ID of this reporting eventevent_type— the event that occurred, e.g.email_openedmetric— the metric name for the eventobject_type— the kind of object the event is abouttimestamp— the Customer.io event timestamp, in epoch secondsdata— the event detail, withaction_id,campaign_id,customer_id,delivery_id,identifiers, andrecipient
Reference the payload downstream by expression, e.g. {{ $json.data.customer_id }} or {{ $json.data.recipient }}.
Usage Examples
- trigger workflow when a customer subscribes
- start when an email is opened in Customer.io
- listen for email bounce events from Customer.io
- monitor SMS delivery events from Customer.io
Example Configuration
Listen for email engagement events:
{
"type": "customerio_trigger",
"parameters": {
"events": ["email.opened", "email.clicked", "email.bounced"]
}
}
Listen for subscription changes across the whole workspace:
{
"type": "customerio_trigger",
"parameters": {
"events": ["customer.subscribed", "customer.unsubscribed"]
}
}
Listen for delivery failures on every channel:
{
"type": "customerio_trigger",
"parameters": {
"events": ["email.failed", "push.failed", "slack.failed", "sms.failed"]
}
}
Trigger Behavior
- Activation: When the workflow is activated, a webhook endpoint is registered with the service.
- Deactivation: The webhook is automatically unregistered when the workflow is deactivated.
- Payload: The incoming webhook payload is parsed and output as workflow items.
- Verification: Supports signature verification where applicable.
Tips
Entry point that fires when Customer.io sends a reporting webhook event. Supports customer, email, push, Slack, and SMS events. Outputs the full event payload for downstream processing.
Frequently asked questions
What credential do I need to connect this node?
You need a Customer.io API credential, configured in BusyBot as the 'customerIoApi' credential type. You'll set this up once in BusyBot's credential store and then select it when adding the node to a workflow. The node handles the webhook endpoint on the BusyBot side; you point Customer.io's reporting webhook at the generated URL.
Which Customer.io event types does this node support?
The node supports 31 event types spanning five channels: customer events (such as subscription changes), email events (opens, clicks, bounces, spam reports, delivery status), push notification events, Slack message events, and SMS events. If your use case involves a Customer.io reporting event, it is almost certainly covered.
What data does the node pass to the rest of my workflow?
The node outputs the full event payload received from Customer.io's reporting webhook. This includes message metadata, recipient information, and event-specific fields (for example, a bounce code for a bounce event or a link URL for a click event). Every downstream node in your workflow has access to the complete raw payload via the single Output connector.
Does this node support email-only events, or can I trigger on SMS and push too?
It supports all four channel types that Customer.io's reporting webhooks cover: email, SMS, push notifications, and Slack messages — plus customer-level events like subscription changes. You don't need separate trigger nodes per channel; one Customer.io Trigger node receives events from all channels and you can filter by event type downstream.
Is this node a polling node or a true webhook?
It is a true webhook trigger. BusyBot exposes an endpoint that Customer.io calls via HTTP POST whenever a matching event occurs. There is no polling interval and no delay waiting for a scheduled check — your workflow fires as soon as Customer.io delivers the event payload to the webhook URL.
Build with the Customer.io Trigger node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Customer.io credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.