> This page is part of the [Customer.io documentation](https://docs.customer.io). For the complete index, see [llms.txt](https://docs.customer.io/llms.txt).
> Last updated: September 1, 2026
> To take actions in Customer.io from an agent, use the [Customer.io CLI](https://docs.customer.io/ai/cli/get-started.md) or the [MCP server](https://docs.customer.io/ai/mcp/get-started.md).

# Integrate with Customer.io

## How it works

While you can add profiles manually or upload CSVs, you’ll get the most out of Customer.io when you integrate with us, adding profiles and tracking the events they perform programmatically.

You can integrate different data sources with Customer.io—your website, mobile apps, databases, and so on.

Integrations (Data In)

Description

[RecommendedJavaScript](/integrations/data-in/connections/javascript/)

Helps you identify profiles, send events, etc from your website, and lets you send in-app messages to your website visitors.

[Server-side libraries](/integrations/data-in/connections/servers/)

Support Customer.io in your Node.JS, GoLang, or Python server. If you’re running a web server and want to send in-app messages, you should use our JavaScript library instead.

[Mobile SDKs](/integrations/sdk/)

Support push notifications and in-app messages in your mobile app. We support [iOS](/integrations/sdk/ios/), [Android](/integrations/sdk/android/), [React Native](/integrations/sdk/react-native/) (including [Expo](/integrations/sdk/expo/)), and [Flutter](/integrations/sdk/flutter/).

[Reverse ETL](/integrations/data-in/connections/reverse-etl/)

Add and update profiles, events, objects, and relationships from your backend database.

[Incoming webhooks](/messaging/send/automations/data-workflows/webhook-triggered-automations/)

Trigger automations from any external service that can send data to Customer.io.

[Outgoing webhooks](/messaging/send/workflows/webhooks/action/)

Send data to a URL as a part of automations. Provides a low/no-code way to integrate Customer.io with external services.

[Direct API Integration](/api/)

If you want to integrate with a database or language we don’t yet support, you can integrate directly with our APIs.

### Data in and out

Customer.io integrations are separated into two categories: data in and data out. You send data into Customer.io, enrich it, and send it out to other services.

You should start by setting up data-in integrations to capture data from your website, mobile apps, and other data sources. Whatever services you want to capture data from, we strongly recommend that you use our SDKs to get data into Customer.io. With our SDKs, you’ll use functions like `identify` to add profiles, `track` to capture the events profiles perform, and so on.

If you want to send data to other services outside of Customer.io, you can set up data-out integrations. Within each data-out integration, you can set up actions that determine what kinds of data you send to your outbound service.

### People are data

In Customer.io—and in most marketing stacks—your “data” typically refers to people who use your services, the things you know about them (their **attributes**), and the **events** they perform. You’ll use this data to trigger and personalize messages, so you send the right messages to the right people at the right times.

When you identify a person, you’ll capture their [attributes](/journeys/people/manage/attributes/)—things like their name, email address, and more as a **profile**.

You’ll also **track** the events profiles perform. Events make it easy to respond to your audience’s behaviors in your app or on your website. For example, you can thank people who use your service for filling out a form, remind them to complete a purchase, or suggest additional content when they watch a video.

People aren't *all* of your data

We’ve simplified things by talking about people and their profiles, but you can also capture [custom objects](/journeys/objects-data/objects/) to represent groups that profiles are related to—like companies they work for, online classes they take, or recreational sports leagues they belong to.

### Plan your integration

Different kinds of data use different functions across the system. Knowing what data you want to capture can help you understand what calls you’ll need to make and when. For example, when you want to record attributes, you’ll use an `identify` call.

As you integrate with Customer.io, think about the data that you want to store:

*   The identifier values you want to use for profiles and the [attributes](/journeys/people/manage/attributes/) you want to capture about them. **you’ll add/update profiles with `identify` calls.**
*   The events you want to record: **you’ll record events with `track` calls.**
*   The groups and relationships you want to maintain: **you’ll record objects and relationships with `group` calls.**

You can store all kinds of data in Customer.io. But be careful when handling certain kinds of data. In general, **you should not send us sensitive personal information** like bank account information, credit card numbers, personal health information and so on.

You don't have to store everything in your workspace

Some of our integrations let you forward data to other destinations without having to store it in your workspace.

## Integrate with Customer.io

When you integrate with Customer.io, you’ll set up *data in* integrations, like your website, and then you can send *data out* to other services—like your analytics platform or your backend database. Most of the work you’ll do to get started is in setting up your *data in* integrations—your sources of data for Customer.io. Then you can set up and customize the data you forward to other services.

### Data in: Add a JavaScript integration

In most cases, we suggest that you integrate your website with Customer.io using our client-side JavaScript library because it acts as both a data source and also lets you [send in-app messages](/get-started/set-up-messages/#set-up-in-app-messages) to your audience. We’ll reference this library in our examples. But we also offer [server-side SDKs in other languages](/integrations/data-in/connections/).

1.  Go to *Integrations* and click **Add Integration**.
2.  Find and click the **JavaScript** integration.

     ![select the javascript source](https://docs.customer.io/images/cdp-add-js-source.png)

3.  Enter a *Name* for your integration, and click **Submit**. You should give your source a name that helps you identify not only the source medium (“JavaScript” in this case), but helps you identify the resource you’re capturing data from—like “company website” or “community forums.”

     ![configure the javascript source](https://docs.customer.io/images/cdp-configure-js-source.png)

4.  Under *Installation Instructions*, you’ll find relevant code that you need to add to your website. Using our JavaScript client as an example, you’ll paste the code snippet in your website’s `<head>` tag.

You’re now ready to start sending calls to Customer.io. If you [enable in-app messaging](/messaging/channels/in-app/web/#javascript-snippet), you’re also ready to send in-app messages to your website visitors.

### Data out: Set up third-party integrations

Data out integrations are the places you want to send, and act on, data. Sending your Customer.io data to all the places where it’s useful to you eliminates “data gaps” in your stack.

Check out our [integrations catalog](/integrations/directory/) to see all the integrations we support natively. If you don’t find one you need, [let us know](mailto:product@customer.io)!

This video shows an overview of a third-party data out integration as well as [reporting webhooks](/integrations/data-out/connections/webhooks/)—how you can send metrics and message activity out of Customer.io.

## Integrate your mobile app(s)

While you can write your own integration with our APIs, we strongly suggest that you integrate your mobile apps using [our SDKs](/integrations/sdk/).

At a basic level, you *must* use our SDKs if you intend to send in-app messages. Beyond that, they’re already set up to help you identify profiles, track events, and receive push notifications, making it easy to get set up with Customer.io without writing all your own code from scratch.

When you integrate mobile apps, you’ll need to enable push and in-app messaging in your workspace. You’ll also need to set up push notifications with your push provider. See [our Push Notifications documentation](/messaging/channels/push/getting-started/) for more information.

### Database and Reverse ETL integrations

We offer a number of [reverse ETL integrations](/integrations/data-in/connections/reverse-etl/) that help you send data from your database into Customer.io. If you already aggregate your data in a database or data warehouse, you can use a reverse ETL integration to keep your Customer.io workspace up to date with your latest data.

©2026 Peaberry Software, Inc. [Status](https://status.customerio.com/) [Terms of Service](https://customer.io/legal/terms-of-service/) [Privacy Policy](https://customer.io/legal/privacy-policy/)

[](https://www.linkedin.com/company/customer-io)[](https://twitter.com/customerio)[](https://www.youtube.com/channel/UCkCaWdezRoa8ZyR9pEVaipA)[](https://www.instagram.com/customer.io/)
