Release Notes
Check out the latest features and fixes for the Customer.io platform. This page covers releases beginning in 2021. Go to our blog to see a history of releases before 2021!
Event conversions for newsletters
Automation Ui improvements
Earlier this month, we added the ability to track conversions for Campaigns and Broadcasts when someone in your audience performs an event. Now you can do the same with Newsletters. Setting an event-based goal for your newsletters can help you accurately determine how effective your message is based on your audience’s behaviors after they receive your message. You can track conversions over time to improve your messaging strategy.
Go to the docsSegment and filter against complex arrays and JSON
Automation Ui improvements
In the past, you weren’t able to create segments or use complex JSON attributes (arrays, nested objects, and arrays of objects) in filters, branch conditions, etc. This forced you to flatten your attributes and events to fit the sorts of segments you wanted to create, which could take a lot of effort and planning. Now, you can use complex JSON in conditions, making it easier to use your data and segment your audience without reshaping your data.
Read more
Upload events via CSV
Ui improvements
Now you can upload events your audience performed via CSV. Whether you’re just getting started with Customer.io, or just capturing new types of events on your website or in your app, this feature can help you backfill events and segment or send messages to your audience based on events they’ve already performed.
Go to the docsExport your workflow as an image
Ui improvements
Now you can export your workflow as a PNG. This makes it easy to share your automations with people outside of Customer.io.
Click in the upper right of the workflow to export your workflow as an image.
Set up Wait until delays based on attribute and event conditions
Automation Ui improvements
We’ve updated our Wait until… campaign action, so you can hold people until they gain an attribute, perform an event, or wait until a timestamp in the event that triggers your campaign. For example, if you send an event when a person signs up for an appointment, you can use a timestamp in the message to hold a person in your campaign until it’s time to send them follow-up reminders!
Go to the docsLocalize campaigns and broadcasts without complicated workflows!
Automation Ui improvementsTo localize campaigns or broadcasts in the past, you needed to use liquid or complicate your workflow with multi-split branches. Now, you can use your audience’s language attribute to produce multi-language messages in a simple, in-line workflow.
When you write messages in your campaign, you’ll set up a default message and click Add language to set up localizations of your message. When people enter your campaign, they’ll receive messages matching their language attribute. People who don’t match a language in your newsletter receive the default message.
Localized items in your workflow show the icon.
This makes it easier to localize messages in your campaigns, and generates unified metrics from localized messages, making it easier for you to tell how your message perform with your audience.
Go to the docsiOS SDK 1.1.0 release
Mobile sdkWe’ve updated our iOS SDK to add support for device attributes—properties that you can use in segments, filters, etc. The SDK automatically gathers a series of device attributes, helping you automatically capture information about the operating system version, your app version, whether a device has push notifications enabled, etc. You can also set your own custom attributes, helping you track custom properties that are important to you and your push audience.
Go to the docsAndroid SDK 2.0 release
Mobile sdkThis release adds a processing queue to the SDK and support for device attributes.
- The Processing Queue automatically queues and batches requests, saving your audience’s battery life and automatically handling errors for you.
- The SDK now automatically captures a set of Device Attributes and grants you the ability to set your own, custom attributes for each device you register with Customer.io. You can use these properties in segmentsA segment is a group of people in your audience that you want to target with campaigns, messages, etc. You can join groups of people manually, or by attribues and event data., helping you target members of your audience.
If you use a previous version of our SDK, this release introduces breaking changes. See the our migration documentation for help updating your integration.
Go to the docsSegment Source integration now supports all channels
Data integrations Ui improvements
When you use Customer.io as a Segment Source, you’re no longer limited to just email events. Now you can pipe event information for all of your message channels a Segment Destination, where you can aggregate customer data. To enable other channels, you just need to remove your integration and then add it again.
Go to the docsTry out new experimental features
Ui improvements
You can now click the user icon in the upper right corner and go to Experimental Features to try out new features before they’re released. This gives you access to some of the things we’re working on and presents you the opportunity to tell us how you feel about them. Tell us whether you like a feature or not and what might improve it, so that we build the right features for you!
Go to the docsExport your data on regular intervals to Microsoft Azure Blob Storage
Data integrations
Now you can sync metrics, deliveries, people data, and more to your Microsoft Azure Blob Storage bucket. We sync data up to every 15 minutes to help you keep up with your Customer.io data. Once in your Azure bucket, you can ingest data to your data warehouse and analyze your Customer.io data.
Go to the docsCapture custom metrics in periods longer than 120 days
Ui improvements
If you wanted to see how your campaigns and messages performed, you used to be limited to custom date ranges within the past 120 days. Now, you can check metrics using any custom date range in the past 12 months, making it easy to see how your campaigns and messages performed over the specific time periods that you care about.
Go to the docsSubmit forms without writing code
Data integrations
Now you can capture HTML form submissions using your forms’ action
attribute. This makes it easy to gather form responses from your audience without writing code or installing our JavaScript Forms snippet.
Like other form integrations, this feature also lets you trigger campaigns when people fill out your form, so you can automatically respond to your audience with information relevant to the forms they submit.
Go to the docsBatch update: update a group of people related to an account, order, job, or another object
Data integrations Ui improvements
Our new batch update action makes it easy to handle one-to-many relationships, like an account with multiple users or a product update that a group of people are interested in. With a batch update, you can associate a single incoming piece of data with, and even send messages to, a group of people.
Read more
Schedule your database sync start time
Data integrations
Want to set up a database source, but not ready to import people just yet? Now you can schedule the start time of your initial database sync integrations, so you can turn your integration on at a date and time that you’re comfortable with. The start time represents the beginning of your first sync operation with recurring syncs on an interval after the start time.
Segment and filter people based on device attributes
Automation Mobile sdk
You can now set a series of attributes on mobile devices in Customer.io, and use these attributes to segment and filter people in campaigns, broadcast audiences, etc. If you use our SDKs, we capture some pre-defined device attributes—like operating system version and device model—automatically. For our SDKs, this feature is only currently available in Alpha builds, but we’ll roll it out to new releases soon enough.
Read more
See where Snippets are used
API developers Ui improvements
Now, when you click a snippet, you’ll see where it’s used, helping you understand the impact of changes to your snippets! You can also sort, filter, and search for your snippets, making it easier to find the snippets that you want to use or edit. This update also adds a check that prevents you from deleting snippets that are in use, making sure that you don’t inadvertently change a message or campaign.
Go to the docsUse Javascript to personalize actions
API developers Ui improvements
Do you need to reshape your trigger data or perform calculations to reformat values? This update lets you manipulate values in Create or Update Person and Create Event actions using JavaScript return
statements. If you’re already familiar with JavaScript, you may have an easier time using JavaScript to convert and re-shape JSON values than you might with Liquid.
For example, where you might have checked if a variable existed by writing a complicated Liquid if
statement, you can now write simple JavaScript instead!
return trigger.plan_name ?? 'free_trial';
{% if trigger.plan_name != blank %}
{{ trigger.plan_name }}
{% else %}
free_trial
{% endif %}
Segment and filter on device attributes
Ui improvements
You can now create segments, filters, or set campaign conditions using the platform
, last_used
, and last_status
attributes attached to your audience’s devices. This update lets you use device attributes in the same way that you use people’s other attributes, helping you send push notifications to a targeted audience of people with relevant devices.
Our SDKs gather these attributes automatically, but you can also set them when you add and update devices using our API. The last_status
attribute is set automatically based on the delivery status of the last message sent to the device—sent
, bounced
, suppressed
, or an empty string if the device hasn’t received a push notification before.
Updated integration catalog view
Ui improvements
We’ve updated our Data & Integrations > Integrations page to better reflect your active integrations and suggest integrations that might be relevant to you. The new page organizes your active integrations into Data in and Data out categories at the top of the page, showing which direction your active integrations flow.
Beta API official release
API developersThe formerly-known Beta API is officially released! These endpoints are now available under our App API: the endpoints that you used to access with https://beta-api.customer.io/v1/api/
, are now available at https://api.customer.io/v1/
; if you’re in the EU region, former https://beta-api-eu.customer.io/v1/api/
endpoints are now at https://api-eu.customer.io/v1
. These endpoints are stable parts of the Customer.io platform and you can use them confidently.
If you’re currently integrated with “beta-api” endpoints, you can continue to use those routes, but we encourage you to update your integration to use the new https://api.customer.io/v1/
paths. Beta API endpoints will continue to work, but we may eventually deprecate and remove them in the future (with advanced notice).
Create or update people in your workflows
Ui improvements
We’ve replaced our attribute update action with an improved Create or update people action. This new action lets you update multiple attributes for a person with a single action in any campaign workflow. You can also update someone other than the person currently in the campaign journey—or create a new person if they don’t exist. This is particularly useful if you’re connecting data and third-party tools using a Data Campaign
Go to the docsFilters in the Message Library
Ui improvements
Now you can filter your message library by status—Sent, Drafted, etc.—and type, making it easier to find your messages. This release also lets you exclude messages from archived campaigns, helping you narrow your scope when you look for a message. Go to Content > Message Library to search through your messages.
Go to the docsCreate event in any campaign
Automation Ui improvements
Our Create Event workflow action used to be limited to Data Campaigns. Now you can create an event in any campaign, regardless of campaign trigger, providing a handy way to trigger parallel campaigns and add people to segments. You can create an event for the person in your current campaign, or another related person: anybody whose ID or email that you can access from the trigger event or the current person’s attributes.
This release also makes it easier to add properties to your events, letting you click to select the values that you want your event to include so you don’t have to write liquid.
Go to the docsCapture forms from Wordpress using WPForms
Data integrationsYou can now capture form submissions from the Wordpress WPForms plugin without Zapier. To identify and capture responses from people who fill out your forms, simply add the JavaScript forms snippet to pages containing a form.
We developed and tested Wordpress form support with the WPForms plugin. You may be able to capture forms from other form plugins in Wordpress, but we cannot guarantee that they’ll work. Let us know if you use a different plugin and run into compatibility issues. We’ll do our best to support your use case.
Go to the docsAllow changes to email with an ID
API developersIf your workspace identifies people by email
or id
, we added this setting to make it easier to change people’s email addresses. Enabling this setting can help cut down on Failed Attribute Change errors and is on by default for all new workspaces.
In workspaces created before today, if you use both email
and id
to identify people, you needed to use cio_id
to change either value—a value that you might not have available to your integration. This setting lets you change email
values with id
, making it easier to modify your audience without preventing you from identifying people by their email address.
Import people from Amazon Redshift
API developers Data integrationsConnect your Redshift data warehouse to Customer.io, and import or update people on a regular interval. This integration helps ensure that your workspace always reflects the latest information about your audience.
When you set up a sync, you provide a query determining the information that you want to reflect as attributes on people in Customer.io. You’ll also set the frequency of import operations from your Redshift instance. On each interval, you’ll import and/or update people in your workspace from your Redshift database!
Go to the docsImport people from your Microsoft SQL Server
API developers Data integrationsYou can connect your Microsoft SQL server to Customer.io, and import or update people on a regular interval. This integration helps ensure that your workspace always reflects the latest information about your audience.
When you set up a sync, you provide a query determining exactly what information you want to reflect as attributes on people in Customer.io. You’ll also set the frequency of import operations from your Microsoft SQL instance, helping you keep your workspace up to date.
Go to the docsDirect integration with Jotform
Data integrations Ui improvements
You can now capture form submissions directly from Jotform without using Zapier as an intermediary to transform data. To set up a Jotform integration, go to Data & Integrations > Integrations > Jotform. Copy the personalized webhook URL, add it to your Jotform, and you’re all set!
Go to the docsSegment people by mobile device platform
Automation Mobile sdk
Now you can segment people by device platform, if you want to start campaigns or messages based on the device platform(s) your audience uses. You might segment by device platform to let people know when a new feature or version for your app—on Android or iOS, comes out.
Go to the docsConvert incoming webhooks to events the easy way
Automation Data integrations Ui improvements
Data campaigns accept data of any shape. But, to take advantage of that data, you need to reshape it and associate it with a person in Customer.io. We’ve made that process easier with the new Create Event action. Use this new action to send messages and segment people based on data from services external to Customer.io!
Go to the docsTrack screen views
API developers Mobile sdk
You can now track and segment your audience by screen views in your mobile apps. Use the API to manually track screen views or integrate our iOS and Android SDKs to automatically track screen views.
Go to the docsSchedule transactional messages
Automation MessagingNow you can schedule your transactional messages up to 90 days in the future, rather than having to schedule your transactional requests at the exact moment you want to send someone a message. This feature helps with things like event reminders, or letting your audience know when a product they expressed interest in will become available.
Go to the docsIncreased database sync sizes and improved error handling
Data integrationsOur database import feature lets you import and update people from your MySQL or Postgres database. We’ve recently increased the capacity of imports from 2 million to 10 million rows, making it easier to support large audiences! As a part of this update, we also exposed error files for each sync interval; these files show which rows failed to import, which can help you refine your query or tables and provides a path to import or update people represented by errored rows.
Go to the docsData Campaigns: Zapier-like data transformations in Customer.io
API developers Data integrations Ui improvementsCreated and updated dates on segments and campaigns
Ui improvements
Campaigns, broadcasts, newsletters, and segments now show their creation date and when they were last edited. We hope this change makes it easier to understand when you started using an asset, and helps you track down issues related to segment, campaign, and newsletter changes.
Direct integration with Typeform
Data integrations Ui improvements
You can now capture form submissions directly from Typeform without using Zapier as an intermediary to transform data. To set up a Typeform integration, go to Data & Integrations > Integrations > Typeform. Copy the personalized webhook URL, add it to your Typeform, and you’re all set!
Go to the docsDeduplicate email newsletter recipients
MessagingWe added a Skip duplicate email addresses setting to email newsletters in ID only workspaces. If people in your newsletter audience have the same email
attribute, prevents you from sending your email newsletter multiple times to the same address.
SSL connections for MySQL and Postgres integrations
Data integrationsYou can now connect your MySQL or Postgres database to Customer.io over SSL, helping you securely import data to your Customer.io workspace from external sources.
Go to the docsSharing Google Sheets with Customer.io
Data integrations Ui improvements
You no longer need to explicitly share Customer.io sheets with cio_share@customer.io. Now, before you import your first Google sheet, you’ll authorize Customer.io to access specific files in your Google Drive. After you grant access, you can easily pick the sheets you want to share from your Google account—to add people, create segments, and update collections—without having to get individual links for each sheet that you want to share with us.
Go to the docsCollection queries: match an item in an array
Ui improvements
When you query a collection, you can now match against a value in an attribute containing an array of values. For example, if you store your audience’s interests as an array in an attribute called interests
, you can now query your collection to return data where people’s interests
include a specific interest—like “cooking” or “football”!
Shortcuts: Use Customer.io as your back-office tool
Data integrations Ui improvements
Have you ever wanted to find a Customer.io person in your CRM? Or maybe you need to search for support tickets from a person in your Customer.io workspace. Or maybe you need to call an internal service to activate or deactivate a person’s account.
You can now do all of these with our new Shortcut feature.
Read more
Add sticky notes to your workflow
Ui improvements
As campaign workflows become larger and more complicated, it can become challenging to read campaign logic or remember what each branch, split, and message action does. Now you can leave notes for yourself and others, to help explain your workflow at a glance.
Go to the docsSegment source integrations support people without an ID
Data integrationsPreviously, our Segment Source integration wouldn’t send events for people who did not have an ID. Now, if a person has an email
but does not have an id
, we send events to Segment using the email address as an anonymousId
. This lets you map events for leads in Customer.io to another destination.
Segment people based on messages in a campaign
Messaging Ui improvementsYou can now segment people based on messages in individual campaigns. This helps you see which individual people opened a message, or received a specific message in a campaign split.
When you create a segment, select the message type under Message Data. Then you can click Any
See recent journeys
Ui improvements
After you start a campaign, you can click the campaign’s Journeys tab to see the most recent journeys that started for that campaign. These journeys can help you understand if your campaign works the way you expect it to.
Resolve duplicate people using the API
API developers Data integrationsWe’ve added an API endpoint that you can use to merge duplicate people. The payload lets you identify a primary person and a secondary person. The primary person remains after the merge. The secondary person’s information is merged into the primary, and then it is deleted.
Go to the docsFind messages with the new Message Library
Ui improvements
We added a new message library, making it easy to search for messages in your workspace without having to click through your campaigns and broadcasts to find them. Go to Content > Message Library to search through your messages.
Go to the docsSend webhooks for a newsletter audience
API developers Data integrationsSet up a newsletter webhook, sending a request for every member of a newsletter audience. This provides a handy way to trigger in-app messages and other external services based on a segment of people in Customer.io!
Go to the docsEdit and delete saved rows in the drag-and-drop editor
Ui improvements
Now you can edit, recategorize, and delete rows saved rows in our drag-and-drop editor. This helps you prune saved rows and prevent other members of your team from accidentally reusing stale content! Note that deleting a row does not remove it from existing messages; it only prevents you (and others) from using that row in the future.
Go to the docsDisable open tracking
Data integrations Ui improvementsEmail clients and providers are beginning to provide their users with privacy settings to block open-tracking pixels, etc. This new setting lets you get ahead of the curve and disable email open tracking in Customer.io, both to respect your audience’s privacy and hide potentially unreliable open metrics.
Read more
Connect web forms to your workspace
Automation Data integrations
Now you can connect forms to your workspace without Zapier, and automatically add or update people who fill out forms on your website. When you connect a form to Customer.io, you map fields on your form to profile attributes, automatically populating information about people who submit your form.
Read more
Campaign and Journey Metrics Update
Data integrations Ui improvements
We’ve reorganized and updated the Campaign Overview and Metrics tabs to provide you with a better understanding of your campaign’s performance. Both pages now provide customizable charts, and you can copy links to your personalized charts, making it easy to share your insights with your teammates.
Read more
Save rows in the drag-and-drop editor
Ui improvements
You can save rows of content in emails that you create in our drag-and-drop editor. This helps you save reusable content, like headers and footers, so that your messages all have the same look and feel without having to re-create message blocks every time you write an email!
Go to the docsMessage metrics are now based on the number of delivered messages
Data integrations Ui improvements
In the past, we based all of our metrics on total messages sent. By default, we now base metrics for message statuses that occur after a message is sent (e.g. opened, clicked, etc) on the Delivered metric—the number of messages that actually reach your audience’s inboxes. This helps provide you with a more accurate understanding of how your messages perform.
Read more
CSV Upload by Email or ID
Ui improvementsIn Email or ID workspaces, you can now add people from a CSV file by email address. Previously, you could only add people from CSV files by ID.
Go to the docsIdentify people on tracked link clicks using the JS snippet
API developers Data integrationsCustomer.io now automatically identify people when they click tracked links that send them to pages containing the JavaScript snippet. We append your links with a _cio_id
URL parameter to identify people who click tracked links. This feature is on by default when you create new workspaces. If you want to turn this feature on in an existing workspace, go to Settings > Workspace Settings > URL Parameters and turn on the Add _cio_id URL parameter setting.
Segment on page view event parameters
Ui improvementsYou can now segment your audience based on URL parameters passed in a page view event. Page view events captured by our JavaScript snippet automatically convert query parameters to event properties you can segment on.
Capture URL parameters in pageviews
API developers Data integrationsOur JavaScript snippet now automatically captures URL parameters in page view events, helping you retain information about the pages a person views, like filters, search queries, etc.
Associate anonymous events with people
API developers Automation Data integrationsYou can log events before people sign up or log into your site, app, or service. Then, when people sign up or log in, you can associate those events with people. Anonymous events help you do things like personalize your onboarding campaigns based on things people did before they signed up. For example, if a customer viewed a pricing plan before signing up for a trial, your onboarding campaign might cover features relevant to the plan they viewed.
Read more
Unsubscribe links are automatically untracked
Ui improvementsUnsubscribe links generated by Customer.io are now untracked by default. You no longer have to worry about unsubscribe links counting as tracked clicks.
Search for attributes belonging to a person
Ui improvements
When you select a person, you can now go to the attributes tab and search that person’s attributes by name. This can help you find specific attributes when you associate people in your workspace with large amounts of data.
Webhook conversions
API developers Automation
You can now count conversions from webhooks, providing a mechanism to track conversions for messages that you trigger with webhooks in services outside of Customer.io. When you set up a webhook in your campaigns, toggle Allow conversion from this webhook to count conversions from your webhook.
Twilio opt-out keyword handling
MessagingTwilio supports response keywords, letting people opt-out of Twilio SMS messages by replying with keywords like STOP or QUIT. We wrote a script you can use and a quick recipe to help you set up a Twilio workflow to send opt-outs back into Customer.io.
Go to the docsDisable link tracking in the drag-and-drop editor
Data integrations Ui improvements
We added the option to disable link tracking in the drag-and-drop editor, so you can exclude unsuccessful click outcomes, like custom unsubscribe clicks, and maintain an accurate click rate. To disable link tracking, just add the untracked
class to the button, image, or text link that you don’t want to track.
Search for Team Members in your Workspace
Admin billing Ui improvementsYou can search for team members in your workspace settings, making it easier to determine who has access to your workspace, especially when you have a large team.
Twilio WhatsApp Support
Messaging
You can now send WhatsApp messages via Twilio just like SMS messages. When WhatsApp support is enabled, you can compose WhatsApp messages with customer data, and preview the output directly in our Twilio composer.
To support Twilio WhatsApp messages, you must set up access to the WhatsApp Business API. When you do, contact win@customer.io, and we’ll enable WhatsApp support for your account.
Go to the docsLiquid Filters: Format Numbers and Negative Conditions
MessagingWe added three new liquid filters:
- The
currency
andformat_number
take regional parameters, so you can format numbers to suit your audience’s local conventions. For example:{{ 123456.78 | currency: "fr" }}
outputs123 456,78€
. - The
where_not
condition lets match negative conditions—people who do not match an attribute value or an event where a value isn’t present.
Facebook Lead Ads Integration
Data integrations Messaging
Set up a Facebook Lead Ads integration automatically adds people to your email-based workspace when they fill out Facebook Lead Ad forms. You can also trigger campaigns whenever people fill out Facebook Lead Ads, automatically sending follow-up messages to nurture conversions.
Go to the docsMulti-select, Copy, and Move in the Workflow Builder
Ui improvements
We added the ability to select, move, copy, and delete multiple workflow items so that, in just a few clicks, you can copy and move blocks while preserving their structure. The workflow builder supports both hotkeys and click-and-drag functionality, so you can select and modify items using the input method that works best for you.
Go to the docsCopy Entire Workflows Across Campaigns
Ui improvementsWe also made it easier to copy entire workflows across campaigns and workspaces, helping you reuse your most successful messages and workflows. You can copy entire or partial workflows to or from another workflow using the Copy to and Copy from options.
Go to the docsSegment on Newsletter Test Variants
Automation MessagingNow when you A/B test your newsletters, you can create segments of recipients based on the variation of the newsletter that they received. These segments can help you tailor follow-up messages based on the test variant that each member of your audience received.