Customer.io is a customer engagement and marketing automation platform for sending targeted email, push, SMS, and in-app messages based on real-time behavioral data. Teams build automated campaigns and journeys, send newsletters, and deliver transactional messages. Its App API exposes campaigns, broadcasts, customer profiles, segments, and activity logs.
Power end-to-end data operations for your Customer.io API with Nexla. Our bi-directional Customer.io connector is purpose-built for Customer.io, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Customer.io or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Customer.io workflows fast, secure, and fully governed.
Features
Type: API
SourceDestination
Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
Request optimization with intelligent batching, retry, and caching to minimize API calls and costs
To connect Nexla to Customer.io, you will need an App API Key from your Customer.io workspace. App API Keys are distinct from Tracking API Keys—they are used exclusively for the App API, which provides access to campaigns, newsletters, broadcasts, transactional messages, customer profiles, segments, and more.
Customer.io App API Keys are generated in your workspace's Account Settings. Each key is shown only once at creation, so be sure to copy and store it securely before closing the dialog.
Click your workspace name or account icon in the upper-left corner, then select Account Settings.
In the Account Settings menu, click API Credentials.
Select the App API Keys tab at the top of the API Credentials page.
Click Create App API Key.
Enter a descriptive name for the key (for example, Nexla Integration) and select the workspace this key should apply to.
Click Create to generate the key.
Important
Copy the generated App API Key immediately and store it in a secure location. Customer.io displays the key only once—if you navigate away without copying it, you will need to create a new key.
Note the region of your Customer.io workspace:
If your workspace is hosted in the United States, your API region domain is api.customer.io.
If your workspace is hosted in the European Union, your API region domain is api-eu.customer.io.
You can verify your workspace region in Customer.io by navigating to Account Settings and checking the data center listed under your workspace information. Selecting the correct region domain ensures your data is routed to the appropriate Customer.io data center and supports GDPR compliance for EU workspaces.
For complete details on managing your Customer.io API credentials, see Manage your API credentials in the Customer.io documentation.
Authenticate with a Customer.io App API key from workspace settings. Sent as 'Authorization: Bearer <token>'. Pick the region domain: api.customer.io (US) or api-eu.customer.io (EU).
Field
Required
Secret
Description
App API Key
Yes
Yes
The Customer.io App API key generated in Account Settings > API Credentials. Sent as a Bearer token in the Authorization header.
API Region Domain
Yes
No
Customer.io API region host. Use 'api.customer.io' for US workspaces or 'api-eu.customer.io' for EU workspaces. Allowed values: api.customer.io; api-eu.customer.io
After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.
Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.
Enter your Customer.io App API Key in the App API Key field. This key will be sent as a Bearer token (Authorization: Bearer <key>) with each API call Nexla makes to Customer.io on your behalf.
Select the API Region Domain that corresponds to your Customer.io workspace region:
api.customer.io — Select this option for workspaces hosted in the United States (this is the default).
api-eu.customer.io — Select this option for workspaces hosted in the European Union.
Selecting the correct region domain is required for successful authentication. If your workspace is in the EU and you use the US domain, your requests may be redirected but data could still pass through US servers.
Click the Save button at the bottom of the overlay. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation and can be selected for use with a new data source or destination.
To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Select the Customer.io connector tile, then select the credential that will be used to connect to the Customer.io workspace, and click Next; or, create a new Customer.io credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Customer.io App API endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below; click on an endpoint to see more information about it and how to configure your data source for this endpoint.
List Campaigns
Returns a list of all campaigns in your Customer.io workspace. Use this endpoint to retrieve metadata for all automated campaigns—including their names, statuses, trigger types, and scheduling configurations. This is useful for auditing your campaign library, monitoring campaign states, or building reporting pipelines around your Customer.io campaign data.
This endpoint retrieves all campaigns automatically with no additional parameters required. Simply select the List Campaigns template and proceed to endpoint testing to verify the response.
Each record in the returned data represents a single campaign and includes fields such as campaign ID, name, status, trigger type, and creation timestamp.
The Customer.io App API returns campaigns from the workspace associated with your authenticated App API Key. For complete details on campaign fields and statuses, see the Customer.io App API Reference.
List Campaign Actions
Returns a list of all actions defined across campaigns in the workspace. Campaign actions represent the individual messages, delays, attribute updates, and other steps that make up a Customer.io campaign workflow. Use this endpoint to inventory all campaign actions for documentation, auditing, or cross-campaign reporting.
This endpoint retrieves all campaign actions across the entire workspace automatically. No additional parameters are required—select the List Campaign Actions template and proceed to endpoint testing to verify the response.
Each record represents a single campaign action and includes fields such as the action ID, action type (for example, email, SMS, webhook), the parent campaign ID, and the action's content configuration.
Campaign actions are the building blocks of Customer.io campaign workflows. Combining this endpoint with the List Campaigns endpoint lets you build a complete picture of your campaign structure.
Get Campaign
Retrieves the full detail record for a single campaign by its ID, including its status, schedule, trigger settings, and other configuration details. Use this endpoint when you need complete information about a specific campaign rather than a summary list of all campaigns.
Enter the numeric ID of the campaign you want to retrieve in the Campaign ID field. Campaign IDs can be obtained in any of the following ways:
Use the List Campaigns endpoint in Nexla to retrieve all campaigns and their IDs from your workspace.
In Customer.io, open the campaign and find its numeric ID in the browser URL (for example, https://fly.customer.io/journeys/campaigns/{campaign_id}).
Navigate to the Customer.io App API reference and look up the campaign ID using the List Campaigns endpoint directly.
Campaign IDs are numeric identifiers unique to each campaign within your workspace. For full details on campaign response fields, see the Get a Campaign API reference.
List Broadcast Triggers
Returns the historical trigger records for a given API-triggered broadcast campaign. Each trigger record captures the details of a single broadcast firing, including the payload sent, the audience targeted, and the trigger timestamp. Use this endpoint to audit or analyze the history of API-triggered broadcast executions for a specific campaign.
Enter the numeric ID of the API-triggered broadcast campaign whose trigger history you want to retrieve in the Broadcast Campaign ID field. You can find broadcast campaign IDs in the following ways:
Use the List Campaigns endpoint in Nexla and filter for campaigns with a trigger type of api.
In Customer.io, open the API-triggered broadcast campaign and find its numeric ID in the browser URL.
Only campaigns configured as API-triggered broadcasts will have trigger history records. Standard event-triggered or scheduled campaigns are not supported by this endpoint.
API-triggered broadcasts allow you to fire a one-to-many message send on demand by calling the Customer.io App API with an audience payload. This endpoint provides an audit trail of all past firings for compliance, reporting, or debugging purposes.
List Customers
Returns a paginated list of people (customers) in the workspace. Use this endpoint to retrieve your Customer.io audience for analysis, synchronization with other systems, or building customer-level reporting pipelines.
This endpoint retrieves all customers in the workspace automatically. No additional parameters are required—select the List Customers template and proceed to endpoint testing to verify the response.
Each record represents a single person in your Customer.io workspace and includes customer attributes, identifiers, and segment membership information.
Customer.io refers to individuals in your workspace as "people" or "customers" interchangeably. This endpoint surfaces all people records visible to your App API Key, which includes all people in the authenticated workspace.
Get Customer
Retrieves the full profile of a single customer by their ID, including all attributes and segment memberships. Use this endpoint when you need complete profile data for a specific individual—for example, to reconcile or enrich records in an external system.
Enter the Customer.io customer (person) ID in the Customer ID field. Customer IDs can be obtained in the following ways:
Use the List Customers endpoint in Nexla to retrieve all customers and their IDs from your workspace.
In Customer.io, open a person's profile and locate their ID in the browser URL or profile details panel.
The response includes the full customer attribute set, segment memberships, and any associated identifiers (email, anonymous ID, etc.).
Customer IDs in Customer.io are the unique identifiers you assigned when creating or updating a person's profile—typically a user ID from your application. For additional details on the customer profile response structure, see the Get a Customer API reference.
List Newsletters
Returns a list of all newsletters in your Customer.io workspace. Newsletters in Customer.io are one-time broadcast messages sent to a defined audience. Use this endpoint to retrieve newsletter metadata for reporting, auditing, or synchronization with external platforms.
This endpoint retrieves all newsletters automatically. No additional parameters are required—select the List Newsletters template and proceed to endpoint testing to verify the response.
Each record represents a single newsletter and includes fields such as its name, status, audience configuration, and send or schedule timestamps.
In Customer.io, newsletters are a type of broadcast—one-time, single messages sent to a group of people. They differ from API-triggered broadcasts in that they target a pre-configured static or dynamic audience rather than a payload-specified audience.
List Segments
Returns a list of all segments defined in the workspace. Segments in Customer.io are groups of people that share common attributes or behaviors. Use this endpoint to retrieve segment metadata for auditing, reporting, or replicating your audience structure to external systems.
This endpoint retrieves all segments automatically. No additional parameters are required—select the List Segments template and proceed to endpoint testing to verify the response.
Each record represents a single segment and includes its name, ID, type (manual or automatic), and creation timestamp.
Customer.io supports both manual segments (a fixed list of people you add or remove manually) and automatic segments (dynamically updated based on attribute or behavior criteria). Both segment types are returned by this endpoint.
List Activities
Returns a list of activity log entries across campaigns and broadcasts in your workspace. Activity entries capture events such as message sends, webhook deliveries, and attribute changes. Use this endpoint to build audit logs, analyze message delivery patterns, or monitor campaign activity in near-real time.
This endpoint retrieves all activity entries automatically. No additional parameters are required—select the List Activities template and proceed to endpoint testing to verify the response.
Each record represents a single activity entry and includes the activity type, the associated campaign or broadcast, and the timestamp of the activity.
Activity records provide a workspace-wide log of Customer.io actions. For high-volume workspaces, consider using Nexla's scheduling and incremental run features to capture only the most recent activity records in each data flow run.
List Messages
Returns a list of sent messages with delivery and engagement metadata, including opens, clicks, and bounces. Use this endpoint to analyze message performance, build deliverability reports, or track engagement trends across your campaigns and broadcasts.
This endpoint retrieves all sent message records automatically. No additional parameters are required—select the List Messages template and proceed to endpoint testing to verify the response.
Each record represents a single sent message and includes delivery status, channel (email, SMS, push, etc.), and engagement event flags such as opened, clicked, bounced, and unsubscribed.
Message engagement data is a valuable input for deliverability analysis and campaign performance reporting. Use Nexla to route this data to a data warehouse or BI tool for deeper analysis alongside other marketing metrics.
List Collections
Returns a list of data collections in your Customer.io workspace. Collections are lookup tables used in Liquid personalization—they allow you to reference structured data (such as product catalogs, pricing tables, or location lists) directly within Customer.io message content. Use this endpoint to audit or synchronize your workspace's collection library.
This endpoint retrieves all collections automatically. No additional parameters are required—select the List Collections template and proceed to endpoint testing to verify the response.
Each record represents a single collection and includes its name, ID, and schema information.
Collections are used in Liquid templating within Customer.io message content to insert dynamic, structured data into personalized messages. Retrieving collection metadata via Nexla is useful for maintaining documentation of your personalization data assets.
Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.
Customer.io data sources can also be manually configured to ingest data from any valid Customer.io App API endpoint — including endpoints not covered by the pre-built templates, or when filtered queries, paginated fetches, or chained API calls are needed. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.
The Customer.io App API is primarily accessed using the GET method for source endpoints. All requests use the base URL pattern https://api.customer.io/v1/{endpoint_path} for US workspaces, or https://api-eu.customer.io/v1/{endpoint_path} for EU workspaces — for example, https://api.customer.io/v1/campaigns to list campaigns for a US workspace. Ensure the endpoint URL matches the region domain selected in your Customer.io credential; using the wrong region domain will result in authentication or routing errors. For a complete list of available App API endpoints, see the Customer.io App API Reference.
Most Customer.io App API responses wrap the returned records in a named top-level key — for example, enter $.campaigns[*] as the path to data for the List Campaigns endpoint, $.customers[*] for List Customers, or $.messages[*] for List Messages. Response-level metadata outside this array, such as pagination cursors and record totals, can be captured for every record by entering its path (for example, the metadata surrounding the messages array) in the Path to Metadata in Response field.
You do not need to include the Authorization header in Request Headers — it is automatically applied from your Customer.io credential configuration. The Customer.io App API also does not require a Content-Type header for GET requests.
Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Customer.io data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.
Click the + icon on the Nexset that will be sent to the Customer.io destination, and select the Send to Destination option from the menu. Select the Customer.io connector from the list of available destination connectors, then select the credential that will be used to connect to the Customer.io workspace, and click Next; or, create a new Customer.io credential for use in this flow.
Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Customer.io App API endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.
Trigger API-Triggered Broadcast
Triggers an API-triggered broadcast campaign in Customer.io, sending a one-to-many message to an audience specified in the request payload. Use this endpoint to fire broadcast sends on demand—for example, to notify a group of customers about a personalized offer, a product update, or an operational alert—using data from a Nexla Nexset as the audience or message payload.
Enter the numeric ID of the API-triggered broadcast campaign to fire in the Broadcast Campaign ID field. This campaign must already be configured in Customer.io as an API-triggered broadcast. You can find the campaign ID in the following ways:
In Customer.io, navigate to Campaigns, open the API-triggered broadcast, and locate its numeric ID in the browser URL.
Use Nexla's List Campaigns source endpoint to retrieve all campaigns and identify the correct ID for your API-triggered broadcast.
The request payload (the body of each API call sent to Customer.io) is constructed from the Nexset data. Structure your Nexset data to match the Customer.io API-triggered broadcast payload format—including the to field (specifying the audience as a segment, emails, or IDs) and any data attributes used for personalization within the broadcast message.
Customer.io API-triggered broadcasts are rate-limited to 1 trigger request every 10 seconds per broadcast. For high-volume use cases, plan your Nexla data flow scheduling to stay within this limit. For full details on the expected payload format, see the Trigger Broadcast API reference.
Send Newsletter
Sends a newsletter immediately to its configured audience. Use this endpoint to programmatically trigger an immediate newsletter send from Nexla—for example, to dispatch a newsletter as part of a broader, automated data pipeline.
Enter the numeric ID of the newsletter to send in the Newsletter ID field. The newsletter must already be fully configured in Customer.io (content, audience, and sender details) before it can be sent via the API. You can find the newsletter ID in the following ways:
In Customer.io, navigate to Newsletters, open the newsletter, and locate its numeric ID in the browser URL.
Use Nexla's List Newsletters source endpoint to retrieve all newsletters and their IDs from your workspace.
The request body sent to Customer.io can include optional override parameters (such as a custom subject line or from address) passed as Nexset attributes. Structure your Nexset data accordingly if overrides are needed.
Sending a newsletter via the API triggers an immediate send to the newsletter's pre-configured audience. Ensure the newsletter content and audience settings are finalized in Customer.io before triggering the send through Nexla.
Schedule Newsletter
Schedules a newsletter for future delivery to its configured audience. Use this endpoint to programmatically set a send time for a newsletter—for example, to automate newsletter scheduling as part of a data-driven content calendar workflow.
Enter the numeric ID of the newsletter to schedule in the Newsletter ID field. You can find this ID in the following ways:
In Customer.io, navigate to Newsletters, open the newsletter, and locate its numeric ID in the browser URL.
Use Nexla's List Newsletters source endpoint to retrieve all newsletters and their IDs from your workspace.
The request payload must include a scheduled_at timestamp specifying when the newsletter should be sent. Structure your Nexset data to include this timestamp field in a format accepted by the Customer.io API (Unix timestamp or ISO 8601).
The newsletter must be fully configured in Customer.io (content, audience, and sender details) before scheduling it via the API. For full details on the expected payload format, see the Customer.io Newsletter API release notes.
Send Transactional Email
Sends a transactional email message to a specific recipient. Transactional emails are one-to-one messages triggered by a specific user action or system event—such as password resets, order confirmations, receipts, or 1:1 operational notifications. Use this endpoint to send individual transactional emails to each record in a Nexset.
No additional template parameters are required beyond the request payload. The payload must include the recipient's email address and the transactional message template ID (or inline message content) as defined in your Customer.io workspace. Structure your Nexset data to include these fields.
At minimum, each record in the Nexset should supply the following fields in the request body:
to — The recipient email address.
transactional_message_id — The ID or identifier of the transactional message template to use.
message_data — An optional object of personalization variables to merge into the message template.
Transactional email endpoints are rate-limited to 100 requests per second. For high-volume Nexsets, Nexla's record batching and flow scheduling features can help manage throughput. For full details on the payload format and supported fields, see the Send Transactional Email API reference.
Update Campaign Action
Updates a campaign action within a specified campaign—for example, to change message content, scheduling settings, or other action-level configurations. Use this endpoint to programmatically update campaign action content or settings as part of a content management or campaign automation workflow.
Enter the numeric ID of the parent campaign in the Campaign ID field. You can find this ID in the following ways:
In Customer.io, open the campaign and locate its numeric ID in the browser URL.
Use Nexla's List Campaigns source endpoint to retrieve all campaigns and their IDs.
Enter the numeric ID of the specific campaign action to update in the Action ID field. You can find this ID in the following ways:
Use Nexla's List Campaign Actions source endpoint to retrieve all actions and identify the correct action ID.
In Customer.io, open the campaign workflow editor and inspect the action to find its ID.
The request body (constructed from the Nexset data) should include the updated action configuration in the format expected by the Customer.io App API. For details on the required payload structure, see the Update Campaign Action API reference.
Both Campaign ID and Action ID are required for this endpoint. Providing an incorrect Campaign ID or Action ID will result in a 404 error from the Customer.io API.
Update Newsletter Variant
Updates the content or settings of a single variant within a newsletter. Customer.io newsletters support A/B variants, allowing you to test different subject lines, content, or sender configurations. Use this endpoint to programmatically update newsletter variant content as part of a content management workflow.
Enter the numeric ID of the newsletter that owns the variant in the Newsletter ID field. You can find this ID in the following ways:
In Customer.io, navigate to Newsletters, open the newsletter, and locate its numeric ID in the browser URL.
Use Nexla's List Newsletters source endpoint to retrieve all newsletters and their IDs.
Enter the numeric ID of the newsletter variant to update in the Variant ID field. You can find variant IDs by inspecting the newsletter in Customer.io or via the Customer.io App API.
The request body (constructed from the Nexset data) should include the updated variant configuration—such as subject line, body content, or from address—in the format expected by the Customer.io App API. For details on the required payload structure, see the Customer.io Newsletter API release notes.
Both Newsletter ID and Variant ID are required for this endpoint. Ensure the correct IDs are provided to avoid unintentionally updating the wrong newsletter variant.
Customer.io destinations can also be manually configured to send data to any valid Customer.io App API endpoint. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.
All Customer.io App API requests use the base URL pattern https://api.customer.io/v1/{endpoint_path} for US workspaces, or https://api-eu.customer.io/v1/{endpoint_path} for EU workspaces — for example, https://api.customer.io/v1/send/email to send a transactional email for a US workspace. Ensure the endpoint URL matches the region domain selected in your Customer.io credential; using the wrong region domain will result in authentication or routing errors. For a complete list of App API endpoints and their URL paths, see the Customer.io App API Reference.
The Customer.io App API accepts JSON for all write operations — select JSON as the Content Format, and Nexla will automatically convert the Nexset data to JSON for each API call. Write operations commonly use POST (creating resources, triggering broadcasts, sending messages), PUT (replacing a resource in full, such as a campaign action or newsletter variant), or PATCH (partial updates).
You do not need to include the Authorization header in Request Headers — it is automatically applied from your Customer.io credential configuration. The Customer.io App API requires a Content-Type: application/json header for POST and PUT requests, which Nexla sets automatically based on the selected Content Format.
Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to the configured Customer.io endpoint, open the destination resource menu, and select Activate.
The Nexset data will not be sent to Customer.io until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.