How Customer.io data flows to and from Default
Start a Default workflow from Customer.io
1
Add the Incoming Webhook trigger
In Workflows, create a workflow and add the Incoming Webhook trigger. Under
Connected Webhook, select Create new webhook, or choose an existing webhook.
2
Copy the URL and the secret
Copy the Ingestion URL. Reveal and copy the Bearer secret. It is your workspace’s
webhook secret, shared by every webhook in the workspace.
3
Set up the webhook in Customer.io
In Customer.io, set up a webhook that sends a
POST with a JSON body to the Ingestion URL, with
the header Authorization: Bearer <secret>. Include the person’s email in the body.4
Capture a sample
Select Listen for test event, then send 1 test webhook from Customer.io. For the next 5 minutes,
Default saves the first request it receives as the Captured payload and does not start the
workflow with it. You can also select Paste a sample, paste an example body, and select
Save sample.
5
Map the person
Under Identity mapping, set Person email to the field that holds the email.
6
Build, test, and publish
Add the nodes that act on the person, for example Match Record and a routing node. Type
{{ to
insert values from the captured payload. Select Test, then Run Test, to try it. Select
Publish, then check that the status next to the
deployment switch reads Live. A new workflow goes live when you first
publish it. If the status reads Paused, turn the switch on. Customer.io webhooks now start
the workflow.Webhook request rules for Customer.io
- Method:
POST, with a JSON body up to 1 MB. A larger body gets a413response. - Validation: malformed JSON gets a
400. So does a request whose mapped Person email field holds text that is not a valid email address. An empty or non-text value is not checked, and the run starts with no person. - Authentication:
Authorization: Bearer <webhook secret>. A missing or wrong secret gets a401. - Runs: each request starts 1 run of every published, enabled workflow that uses the webhook.
- Paused webhook: turning off the webhook’s Active switch in the trigger makes Default reject
requests with a
410. - Response: an accepted request gets status
200with"accepted": true. Default also answers200when no published, enabled workflow uses the webhook, so a200alone does not mean a run started.
Update Customer.io from Default
Use Send to Webhook to call Customer.io’s API, for example to set ameeting_booked attribute on
the person so your Customer.io campaigns can react.
1
Choose the trigger
Start the workflow with the trigger that matches the moment, for example Meeting Status with
Meeting statuses set to Booked. See Triggers.
2
Point Send to Webhook at Customer.io
Add Send to Webhook. Set Request Type and Request URL to the Customer.io API endpoint
you want to call, from Customer.io’s API documentation.
3
Set the authorization
Under Authorization, choose what that endpoint expects: API Key, Token, or Basic.
4
Build the body and publish
Build the Body under Fields or JSON. Type
{{ to insert values, such as the lead’s
email. Publish the workflow and check that its status reads Live. If it reads Paused,
turn on the deployment switch. Each booked meeting now sends the
request to Customer.io.What Default does not support with Customer.io
- A native Customer.io integration, or a Customer.io card on the Integrations page.
- Reading Customer.io segments, campaigns, or people on its own. Customer.io has to send the data.
- Webhooks without an
Authorization: Bearerheader. Default rejects them with a401.