Data-out overview
UpdatedHow it works
Data-out integrations let you send data to platforms outside of Customer.io, like analytics platforms, CRMs, support tools, advertising platforms, messaging platforms, and more.
Most of our data-out integrations support all your sources of data. In these cases, data travels into Customer.io and then to your destination. Some data-out integrations, clearly marked with Web in our integration directory, only support data our JavaScript client. In these cases, data travels directly from your website to the destination, bypassing Customer.io.
We also have data warehouse integrations. Unlike other integrations, where data travels through Customer.io to its destination in real-time, data warehouse integrations receive data in batches on a regular interval. See our data warehouse integrations for more information.
Pipelines)) subgraph Data destinations d(Your CRM) e(Your analytics
platform) f(Customer.io
Journeys) end a-->|JS integration|c b-->|Go, Python, or
Node integration|c c-->|Send website and
server-side data|d c-->|Send website source only|e c-->|Send website and
server-side data|f linkStyle 0,3 stroke-width:2px,fill:none,stroke:#AF64FF linkStyle 1 stroke-width:2px,fill:none,stroke:#00ECBB linkStyle 2,4 stroke-width:2px,fill:none,stroke:#0597AD
Set up a data-out integration
The steps involved in configuring your integration change based on the service or destination you want to send data to. See an individual integrations to learn more about the individual steps, and the information you’ll need, to setup to a specific outbound integration.
- Go to Data & Integrations > Integrations and click Add Integration.
- Select the Data Out integration you want to add.
- Configure your integration and click Continue. We’ve provided an example of the Customer.io workspace destination, but yours may contain different fields based on the integration you selected.
Example Customer.io Journeys destination settings - Click Enable Integration.
Now your integration is set up and will start accepting data from your sources. If you want to tailor the data that your sources send to destinations, go to your destination’s actionsThe source event and data that triggers an API call to your destination. For example, an incoming identify
event from your sources adds or updates a person in our Customer.io Journeys destination. tab. See Actions for more information.
You can check the Actions tab to see data as it comes in. This helps you make sure that your integration is set up correctly.
Actions
Your integration’s Actions tab shows recent data sent to the integration. You can find specific actions and look at the data as it’s sent to your integration. You might use this to troubleshoot specific source events.
When you set up a integration, you can check Actions to change the way we map source data to your integration—or just to better understand what data we’ll send to your integration by default.
Be careful when editing actions for your workspace
The Customer.io integration is how data gets into Customer.io—the people, events, and other data that you’ll use to send messages to your audience. It’s already configured with actionsThe source event and data that triggers an API call to your destination. For example, an incoming identify
event from your sources adds or updates a person in our Customer.io Journeys destination. to support incoming data. You can edit these actions if you want to change how we handle incoming data, but take care not to inadvertently break integrations with Customer.io.
Mapping source calls to your integration
Integrations that send data out of Customer.io have Actions. Actions are how we map data from sources to your integration—the “trigger” for each request, and the fields we map to payloads your integration expects.
In most cases, you’ll want to stick with the defaults. But, you might disable actions that you don’t care about in your integration. Or you might click and select Edit to change the way we map data to an action—this can help you better represent your model data in your integration if our default mappings don’t quite match your use case.
See our actions guide for more information.


API Call tester
On the API Call Tester tab, you can send calls to your destination to make sure that your integration works the way you expect. It may help to run test calls before you connect data sources to your integration—so it’s easier to find your tests.
API calls are formatted to fit our Data Pipelines API. This gives you an opportunity to see how a call from your source(s) maps to your integration.
Test calls are populated with test data. Use the dropdown to select the kind of call you want to test.


Overview
The Overview for your integration tab shows action volume and how many actions were completed or failed over a time frame. The overview helps you understand if your integration works as you expect, and can help you spot performance issues—failed actions or high latency.


Choosing a connection mode
You may see data-out integrations with a Web option. These integrations:
- Only support our JavaScript client.
- Send data directly to your integration, bypassing Customer.io’s servers.
Where possible, we suggest that you use integrations in their normal, non-web iterations, but there are some reasons you might use a web integration. Sometimes, the web implementation supports operations that the integration’s normal, non-web implementation doesn’t.
Source Type | Integration | Web Integration |
---|---|---|
Website (JavaScript) | ||
Server (NodeJS, Go, Python) | ||
Mobile (iOS, Android, React Native, Flutter) | ||
Data Warehouse | ||
Customer.io |
Standard data-out integrations
Under normal circumstances, your datasource sends data to Customer.io. We then transform and forward data to your downstream integrations. This keeps the size of injected scripts in your source integrations small and load times fast. Most importantly, this mode ensures that we keep a record of data sent to your integration, which can help you audit and troubleshoot issues with your integration.
Web integrations
Web integrations expect to receive data directly from your website without going through Customer.io’s servers. Often times, we have this mode to support services that don’t have public APIs for certain kinds of operations, and require us to load their SDK directly on your website to send data to them.
Since Web integrations don’t send data through Customer.io’s servers, you won’t see a record of actions sent to your integration. This can make it tricky to debug web integrations. If you need to debug or troubleshoot these integrations, you can try observing network calls in your browser console. If you need Customer.io’s help to troubleshoot web integrations, you may need to provide us with access to a staging environment where we can observe your integration.
In general, you probably only need to use web integrations if:
- The integration requires it. Some integrations only support web mode.
- You rely on integration features that require direct access to a service. For example, if you use Adobe Target and you want to load Adobe Target’s SDK (
at.js
) to take advantage of their A/B testing and personalization features, you’ll need to use the web integration. - You need to minimize latency between your site and your integration. For example, if you use a live chat integration, you might want to use the web version of the integration to ensure that your events pass to your live chat service as quickly as possible.
Retries: how we handle outages
If your integration suffers an outage, we’ll retry your data to the integration. We retry up to 14 times with an exponentially increasing delay between retries. The maximum retry window is about three hours.
We don’t retry when we get a definitive error, like a 400 or 403. Rather, we retry in the following situations:
- 429s: we’ve exceeded the integration API’s rate limit
- 5xx: the integration reported internal error
- Network errors: we were unable to establish network connection with the integration
- Other errors: errors that don’t produce status codes or are otherwise unrecognized
If you encounter errors and change your integration’s settings, or action settings for the integration, we’ll use the correct settings on the next retry. This makes it easy to fix problematic settings in your integration’s setup.