Reference · Tools

Customer.io Trigger

Starts workflow on Customer.io reporting events

Webhook trigger Marketing v1

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

DirectionPort(s)
InputNone (trigger node)
OutputOutput

Credentials

This tool requires Customer.io credentials. See the Credentials Guide for setup instructions.

Parameters

ParameterTypeRequiredDefaultDescription
EventsmultiOptionsYes[]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 — always customerio_webhook
  • _timestamp — ISO 8601 timestamp of when the request arrived
  • _webhookEvent — the reported event, taken from the payload’s event_type field, falling back to metric

The Customer.io payload itself carries:

  • event_id — the unique ID of this reporting event
  • event_type — the event that occurred, e.g. email_opened
  • metric — the metric name for the event
  • object_type — the kind of object the event is about
  • timestamp — the Customer.io event timestamp, in epoch seconds
  • data — the event detail, with action_id, campaign_id, customer_id, delivery_id, identifiers, and recipient

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 BusyBot

Last updated . Spotted something wrong? Tell us.