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!
Want to see what we're working on? Take a look at our roadmap!
Following our last update, we’ve made it even easier to build in-app messages. Now you can drag-and-and drop components. This gives you the flexibility to build your message in any order and reorganize it later—you can simply change your layout and move elements to the right places at any time.Go to the docs
In-app messages often contain groups of nested components, which can make it hard to find the part of the message you want to edit. That’s why we added a new panel to our in-app message creator: to help you easily find and jump to the parts of your message you want to edit.
With the new message navigation panel, you can:
- See the structure of your message at a glance
- Click to a component to go directly to it in your message
- Hide and show components, making it easier to focus on what matters
You can now enable your subscription center faster by assigning a topic to multiple campaigns and broadcasts simultaneously. Note, to enable your subscription center, all your running campaigns, API-triggered broadcasts, and scheduled newsletters need a topic. To identify which message workflows still need a topic, go to Workspace Settings > Subscription center. Then go to the Topics table and click Review.Go to the docs
Customer Data Platforms (CDP) are a great way to get data into Customer.io, but they become expensive as you grow. We wanted everyone to be able to afford access to clean, unified data, so we built our own CDP: Data Pipelines. Now you can easily and affordably collect, transform, and send data to Customer.io, and all the other tools in your stack.
In-app messages are a great way to connect with people who are already engaged with your app, but it hasn’t always been easy in Customer.io to build or track in-app messages with multiple choices. With our new Microsurvey components, we’ve made it easier to send messages with quick, recognizable calls to action. This release also adds the ability to track responses to your in-app messages and surveys.
You can now view unsubscribe rates for subscription center topics when viewing Performance & Delivery Metrics or Message Metrics for campaigns and API-triggered broadcasts within the Metrics tab. For newsletters, go to the Overview tab. You can also compare metrics through your Analysis Dashboard. This data can help you determine subscription topic interest by monitoring unsubscribe rates.Go to the docs
You can now add pre-built blocks to your in-app messages to save time constructing message frames, buttons, and rounded images! Select from the component dropdown to get started.Go to the docs
You can now override a subscription topic at the message level. Within a campaign, select an email then select a different topic from the Subscription Preference dropdown. This way, you can target different audiences within a single campaign.Go to the docs
We’ve made a series of improvements to our in-app message editor that make it easier to build and preview your message.
- Sticky preview: The preview stays in view, so you can see your message as you edit it.
- Expanded editing space: We increased the size of the in-app message editor and reduced the impact of other UI elements, making more room for you to work on your messages.
- Expand and collapse elements: The hierarchy of elements in your message are clearer, and elements aren’t hidden by default when you start a new message from a template. You can also collapse and expand parent elements without collapsing children, making it easier to focus on the elements you’re working on. Collapsed areas save with your message, so you can pick up where you leave off.
You can now create your own, custom subscription preferences page by fetching preferences from our App API and updating them through our Track APIs. This gives you full control over the branding, formatting, and location of your subscription preferences page.Go to the docs
We now support SSO with providers that are compliant with OpenID Connect. This includes but is not limited to OneLogin and Auth0. Go to Account Settings > Security > Enable Single Sign-On (SSO) to get started. You must have the Admin role to configure SSO.Go to the docs
We’ve added functions to all of our SDKs to manually dismiss in-app messages. This is especially helpful in handling custom actions, so you can dismiss messages after your audience interacts with a custom button or link. You can listen for message interactions and then perform dismissals based on the actions users take in your messages.Go to the docs
You can now add and delete relationships between objects and people in the UI, which allows you to explore objects without engineering. You can use relationships to segment users and to personalize messages with object data.Go to the docs
You can now verify webhook requests sent through our Send and receive data actions using a key that is separate from your reporting webhooks. To find the signing key in your workspace, go to Settings > Workspace Settings > API & webhook credentials and select the Webhook Signing Key tab. Users with the Admin, Manager, and Author roles can view this key. You can continue to find the key for your reporting webhooks in Data & Integrations > Integrations > Reporting webhooks.Go to the docs
You can now translate your subscription center topics and headers for your audience. You can add translations for 29 languages and decide when to make them live to your users. Go to Workspace settings > Subscription center > Settings to get started.Go to the docs
We now support single sign-on (SSO) with Azure AD. Go to Account Settings > Security > Enable Single Sign-On (SSO) to get started. You must have the Admin role to configure SSO.Go to the docs
You can now update the branding of your global unsubscribe page! Go to Settings > Workspace Settings > Subscription Center to add a logo and/or update the background color of your Unsubscribe button. If you have not enabled our Subscription Center, your users will see this page after selecting Unsubscribe.Go to the docs
Easily create, personalize, and measure your transactional push notifications with our Transactional Push API. Need to add an image or deep link or send in multiple languages? No problem — make updates to your transactional messages without changing a single line of code.Go to the docs
To protect accounts on our platform, we’ve enabled two-factor authentication (2FA) for all accounts that do not use SSO. If you’ve already enabled 2FA via authenticator app, there will be no change to your sign-in pattern. If you have not enabled 2FA via auth app and do not use SSO, you will now verify your log-in attempt through an email from us here at Customer.io. Just make sure you click the emailed link on the same browser and device on which you attempted to sign-in, and you’ll be good to go!Go to the docs
You can now use liquid syntax to set the expiration date for an in-app message. Use event properties, profile attributes, snippets, and more. For example, if you want an in-app message to expire based when an online course is scheduled to start, you can use liquid syntax to set the expiration date to
For the past decade, we’ve helped companies use their data to connect with their customers. We know that data management can be a headache and have long recommended using a customer data platform as standard practice. For years we’ve also been building features to help you manage data, including Reverse ETL, custom objects, and a sync to data warehouses. Today we’re announcing the next step in that work: Data Pipelines. Data Pipelines connects your customer data to every product in your tech stack, letting you focus on what matters most: building relationships with your customers.
You now have more flexibility when setting preferences for subscription topics. You can update some topic preferences for people, while preserving those set for other topics, using JSON dot notation. This applies to CSV import, our create/update person action, and our Track API.
With this update, you can also import each subscription topic preference as its own attribute via CSV.Go to the docs
Our Flutter SDK has been in beta for the past couple of months. Now that we’ve smoothed out the rough edges, our 1.0 release is ready for use in your production apps.
Our Flutter SDK supports all the same features as our other SDKs, including in-app messaging, support for images and links (rich push), and the ability to send events from your audience’s devices. As an officially-supported SDK, we’ll continue updating our Flutter library to support both OS updates and new features that we expose in Customer.io.Go to the docs
When you use our SDKs, you can now send push notifications to iOS devices that use the default system sound, alerting your audience when they get a new message. This affects all of our SDKs that support iOS, including React Native, Flutter, and our Expo plugin.
This only adds support for the default system sound. Our SDKs do not yet support custom sounds.Go to the docs
We’ve added support for AMP components to our email code editor! Validate AMP and send test emails from within your workspace.
Toggle these experimental features on in Account Settings to get started: Advanced Code Editor and AMP for Email.Go to the docs
Now you can sync objects (like companies, accounts, or online classes) and relationships as a part of our Reverse ETL database integrations—MySQL, BigQuery, Snowflake, and so on. Now you can easily add objects and relate them to people on a regular interval based on business logic and data that you store outside of Customer.io.Go to the docs
We’ve had our in-app solution in beta for a while now, while we smoothed out some rough edges. Now, it’s ready for everybody.
While in beta, we’ve made some major improvements to our in-app solution:
- We’ve improved our UI, making it a little easier to compose in-app messages
- Lowered response times for in-app messages, ensuring that your audience receives messages when they’re most relevant.
- Removed the need for an
organization_idin integrations, so it’s easier to get started with in-app messages.
We moved in-app message templates and branding settings under the Content menu, so you can get there in fewer clicks. But that’s not all. In this release, we also improved the in-app message editor, so that it’s easier to craft your messages.
In the improved editor, you can:
- See all the settings in a block without having to “reveal” or “hide” things.
- See how your padding and font changes affect your message in real time.
- See a list of available font and color settings with examples.
- Rename blocks and cards in your template so it’s easier to explain what each block or group of blocks does.
We’ve added the ability to rename messages for their intended purpose as you determine your messaging strategy and find specific uses for different kinds of in-app messages. In the near future, we’ll also add the ability to delete in-app message templates!Go to the docs
Now you can set your primary brand color and add a logo to your subscription center page, so it looks like a part of your brand and website. Branding your subscription center gives people confidence in their preferences, so they know that they’re on a page associated with your brand.Go to the docs
We recently released objects—a feature that lets you set relationships between people and groups like accounts, companies, online courses, and so on. As a part of that release, you could create segments based on relationships between objects and people, but you could only use those segments with newsletters. Now you can use these kinds of segments to trigger campaigns! This makes it easy to onboard new people when they join a company, sign up for a new course, and so on!
We’re committed to supporting one-to-many, and eventually many-to-many, relationships using objects. Stay tuned for updates as we continue working on this new feature!Go to the docs
Message limits help you make sure that you don’t over-message and annoy your audience. But, previously, messages that went over the limit—Undeliverable messages—could pile up in your workspace. Now you can set an auto-retry interval for messages that hit the limit, and automatically retry messages up to 24 hours after they hit your message limit. This helps you make sure that time-sensitive messages don’t go undelivered!Go to the docs
We now support objects—non-people data that you can relate to people, like accounts that people belong to, flights they’ve booked, online courses they’ve enrolled in, and so on. This release is only the beginning. Support in this release is limited to a single object type and they’re limited to Newsletters, but we’re actively working on this feature to add support for more objects, campaigns, and object-to-object relationships.
We’ve added a subscription center feature that can help you manage your audience’s subscription preferences without having to manage a complicated set of preferences on your own. This feature makes it easy to set up your subscription topics, apply those topics to campaigns or broadcasts, and let your audience decide what topics they want to subscribe to.
People login and out of mobile apps all the time, causing device tokens for mobile push services to change. Rather than letting those tokens stack up in your workspace, we’ve started automatically removing ‘devices’ when they’re no longer able to receive push notifications—beginning January 31, 2023.
This helps you maintain a better understanding of your audience’s devices, so you know which devices are relevant and can get a real device count—without having to clean up old devices yourself.Go to the docs
With our original Track API, you’re limited to a single request per person, and a host of different endpoints. Today we’re releasing our v2 track API, which lets you send groups of requests for different people, and different kinds of actions, to our
/v2/batch/ endpoint. Now you don’t have to maintain different calls for different actions; you can just modify your payload to fit different request cases and send requests in batches.
In our quest to support your mobile apps, no matter what platform you build them on, we’ve released an alpha version of our Flutter SDK! While this is an alpha, the SDK contains all of the features of our other SDKs, including support for rich push and in-app messages. The alpha label simply means that we’ve been limited to internal testing, and we need your help to make sure that it performs the way you expect it to.
We’re committed to releasing, maintaining, and supporting Flutter. Try out our new SDK and let us know what you think. Your feedback helps us understand your needs, so that we build our SDK(s) and associated features to fit your needs.Go to the docs
We’ve made page rules for in-app messages easier to use! Before this update, you needed to set up a complicated workaround to limit an in-app message to to your website or mobile app. Now, when you select your web, iOS, and/or Android channels, we’ll automatically limit messages to the platforms you select. If you don’t select any platforms, your message will appear on whichever platform the person visits first.Go to the docs
A holdout test is a type of A/B Test that lets test whether a message is useful or not. In a holdout test, some members of your audience receive a message and some don’t—but we still calculate conversions for the message, helping you see whether your message affects your conversion rate.
In the past, we had a complicated recipe to perform holdout tests, but it involved sending real messages to a black hole address, which wasn’t ideal. Now you can set up holdout tests with a simple checkbox!Go to the docs