Release Notes
Check out the latest features and fixes in Customer.io.
Want to see what we're working on? Take a look at our roadmap!
Sync data between Salesforce and Customer.io
Data integrationsOur Salesforce integrations were available in early access for the past few months while we polished the feature. Now we’re excited to announce our Salesforce integration is available to everyone on premium or enterprise plans. By syncing your Salesforce data with Customer.io, you’ll be able to nurture leads, keep up with your contacts, and activate all the complex relationships that you normally store in your enterprise CRM.
Read more
Sending in-app messages just got easier
MessagingIn the past, you not only had to know who you wanted to send your in-app message to, but how you identified them—by email or ID. Now, you can send in-app messages to your audience without needing to know how you identified them. Whenever and however you identify people, they’ll get your message.
If you already set them up with the To field, you have nothing to worry about. We’ve taken care of things for you. Your messages will go to the right person, whether you identify them by ID or email address.
Pause and resume newsletters
Messaging Ui improvementsYou can now pause a newsletter, fix a typo or other information in your message, then resume sending. You can pause a newsletter using any message channel - email, in-app, etc. You must have Workspace Admin or Author permissions to pause and resume a newsletter.
Go to the docsBuild in-app messages the easy way with our new drag-and-drop editor
Messaging Ui improvementsWhile we’ve supported in-app messages for a while, we knew that our initial in-app message editor was clunky and hard to use. We’ve rebuilt it from the ground up, so you can create in-app messages with a drag-and-drop editor. Now you can easily build in-app messages that look and feel like parts of your app or website. With this release, we even added support for video in in-app messages!
Read more
Test emails before verifying your domain
Messaging Ui improvementsYou can now send emails to a team member before verifying your domain so you can test them without delay. Admins and Workspace Admins can manage message sending and who receives test emails from General Workspace Settings.
Go to the docsExport attributes and events from your Data Index
Data integrations Ui improvementsYou can now export attribute and event data by going to Data & Integrations > Data Index in your workspace. You must be a Workspace Admin to export your data index.
Go to the docsGrant read-only access to account settings with the new Member role
Admin billing Ui improvementsWe’ve added a new account-level role, Member, so you can grant read-only access to account settings. You can also grant Members the ability to manage account info and billing, manage API credentials, or enable access for Customer.io support teams. Everyone who was a Workspace Admin, Author, or Viewer now also has a Member role to reflect the account-level permissions they already had. No one’s access to your account has changed. We did not grant or remove permissions from any team member.
Go to the docsAssign different roles for each workspace a team member has access to
Admin billing Ui improvementsIn the past, you could only assign a single role to each team member then limit which workspaces they had access to. Now, you can specify a different role for each workspace they have access to. This gives you more control over what your team members can manage across workspaces.
Go to the docsEnable SSO with SAML
Data integrationsWe now support SAML for many single-sign on (SSO) providers, so you can use your identity provider (IdP) with Customer.io—including Cloudflare, Jumpcloud, and more. 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 docsCapture data from Salesforce (now in Early Access)
Data integrationsSalesforce is great at storing and organizing relationships with your customers. Customer.io is great at activating those relationships. Now, if you’re on a premium or enterprise plan, you can use the two together and send your Salesforce data to Customer.io where you’ll send messages to your contacts, nurture leads, and more. With this native, two-way integration, you can even send your Salesforce data to other downstream destinations, like your analytics platform or data warehouse.
Read more
Apple Vision Pro Support
Mobile sdkAlong with all the other great features in our iOS 3.0 SDK release, we also added support for Apple’s visionOS. You’re no longer limited to phones and tablets; now you can engage with your Apple Vision Pro users in augmented reality too, sending personalized push notifications and tracking behavioral activity like you would from your mobile apps.
We’ve added a handy sample app to our iOS SDK, so you can see what Customer.io looks like in VR. But, if you’ve developed an app with our mobile SDK already, our visionOS support should come naturally to you.
Go to the docsDisable CSS pre-processing for your workspace
MessagingCSS pre-processing converts your CSS styles to inline attributes in your emails. Disabling this means we won’t change the code of your template, ensuring it stays exactly as you designed it. We’ve added a workspace setting so you can disable CSS pre-processing for emails created in the code editor. In the past, you could only disable this on an email. Now, you can also disable this for all new messages made with the code editor. Go to Workspace Settings then click Email > Default Email Settings to change this setting.
Go to the docsMeeting Apple’s App Store Privacy Requirements
Mobile sdkBeginning May 1, 2024, Apple’s App Store requires mobile apps and the SDKs you use to build your app to include privacy manifests. This includes Customer.io’s SDKs. We’ve updated our SDKs to include privacy manifests. Update your app to one of the versions listed below (or later) before May 1st, 2024 to ensure that your apps meet Apple’s requirements and aren’t rejected from the App Store.
- iOS: ≥ 3.1.0 or ≥ 2.13.0
- React Native: ≥ 3.6.0
- Flutter: requires iOS ≥ 2.13.0. Follow our update instructions to update the iOS native package in Flutter.
- Expo: requires React Native ≥ 3.6.0. Install the latest React Native SDK and run
expo prebuild --clean
.
Add/remove an individual from a manual segment
Messaging Ui improvementsYou can now add a person to or remove them from a manual segment through their profile page. Go to a person’s profile then click the Segments tab. Go to the tab Doesn’t Belong To then click Add to segment beside any manual segment so they join it. Or, under Belongs To, click Remove from segment so they leave it. Keep in mind, after you remove people from or add them to manual segments, they may trigger campaigns.
Go to the docsiOS 3.0 release
Mobile sdkThe latest version of our iOS SDK is out, providing a seamless integration with Customer.io Data Pipelines. This update makes it easier to support both Customer.io and your data to downstream destinations—like your analytics platform, CRM, or data warehouse—and lets you track anonymous users.
Read more
Upgrade your liquid version for new messages in Workspace Settings
MessagingThis applies to accounts created before Nov 28, 2023; all other accounts use our latest liquid version. You can now upgrade your workspace so that all new messages moving forward use our latest liquid version. The latest liquid version offers improved filters (e.g. default
filter), faster rendering, and better tools for troubleshooting liquid syntax. Take a look at the differences between our latest and legacy versions of liquid to see if you’re ready to make the switch. Then go to General Workspace Settings to upgrade. Keep in mind, you will still have to manually upgrade existing messages. If you run into unexpected syntax issues with the latest liquid, use our fallback logic.
Download your billing invoice
Ui improvementsAs an Admin, you can now download your billing invoice from Account Settings > Plans & Billing > Billing History. Click Download invoice beside any billing period for a PDF.
Go to the docsCheck your DMARC policy
Ui improvementsWe now check your DMARC policy when verifying your email sending domains to enforce Gmail and Yahoo’s new sending requirements. Visit your Workspace Settings and click Manage Domain to check the state of your DMARC policy and whether we recommend you update it. These requirements are designed to help prevent email spoofing and phishing attacks.
Go to the docsUpgrade to the latest liquid version
MessagingIf your account was created before Nov 28, 2023, you now have the ability to upgrade to our latest liquid version, which provides faster rendering and new functionality. Check out what’s new and deprecated with the latest version. You can update a message through the Actions dropdown while editing.
Go to the docsGenerate liquid for objects and relationships with AI
Messaging Ui improvementsWe know that liquid is complicated, even moreso when you need to reference objects, relationships, and people in the same message. To make things easier, we built a tool that uses AI to generate your message and liquid for you.
Because AI features are tricky, we’ve made this an Experimental feature so you can use it if you’re comfortable taking advantage of AI-style features. To enable the feature, go to the icon in the upper right corner and click Experimental Features. From here, you can enable Email Content for Object Campaigns.
Then, in campaigns triggered by objects or relationships, you can click Generate with AI to generate messages and associated liquid. The AI tool works like most AI-chat applications, so you can continually refine your prompt to get the results you want. Then copy the results into your message and you’re ready to go.
Go to the docsWe support images up to 3MB again
MessagingA couple of weeks ago, we changed the file size limit from 3MB to 1MB to scale our file storage and follow best practices for email. But after considerable feedback, we’re changing it back to 3MB to better support your needs. We’ll continue looking for solutions to storage and deliverability optimization.
We appreciate your feedback and are always looking for ways to improve our product—whether by adding new features or fixing recent changes! If you have feedback on this or any other feature, please let us know.
Go to the docsSimplified push messaging setup for iOS
API developers Mobile sdkWe’ve released updates for our iOS-supporting SDKs, so they’ll automatically register device tokens and capture opened
metrics for push notifications. Now that we handle these things, you can remove some code, simplifying your integration and improving reliability when you update our SDKs in the future.
This release updates the platforms below. We’ve linked to upgrade documentation for each SDK, highlighting the code you can remove from your app when you upgrade:
- iOS 2.11
- React Native 3.4
- Flutter (affects iOS native SDK)
- Expo: Upgrade to
1.0.0-beta.14
and runexpo prebuild --clean
.
Reverse ETL: updates to sync interval calculation and suppressed profiles
API developers Automation Data integrations Ui improvementsWe’ve made two updates to enhance your reverse ETL integrations. First, we added a setting that allows you to decide how imports handle suppressed profiles. Second, we updated our import logic such that all reverse ETL imports start at a predictable time based on when your imports first started and your interval setting. For more information and examples, go to your database’s documentation. For more on our suppressed profile setting, go to Add a sync > Step 4. For more on interval calculation, go to Sync intervals and skipped syncs.
Go to the docsUpload images smaller than 1MB
MessagingWe changed the limit for image uploads from 3MB to 1MB. This helps us control the scale of file storage and follows best practices for image sizes in emails.
Go to the docsTrigger campaigns by objects and relationships
Messaging Ui improvementsYour toolbox in Customer.io just expanded! You can now trigger campaigns based on an update to an object, an update to a relationship, or the addition of a relationship to an object. This is helpful when, for instance, you want to send a person through a journey when an account object they’re a manager of is updated or when their role at the account has changed. Go to Campaigns in the left hand navigation and click Create Campaign in the top right to get started.
Go to the docsNew and improved setup for campaign triggers
Messaging Ui improvementsWe revamped our campaign creation experience so that it is easier for you to find and refine the triggers you need. Go to Campaigns in the left hand navigation and click Create Campaign in the top right to get started.
Go to the docsImport objects via CSV
Data integrations Ui improvementsYou can now import a CSV of objects or relationships through our UI or API. This is helpful if the data is not available through an integration or you are just getting started and need to quickly backfill data. To import objects or relationships through our UI, go to Data & Integrations > Imports. To import them through our API, use our import endpoint. Note: the people and objects referenced in your relationship CSV must already exist in your workspace for the import to succeed. Also, keep in mind that importing objects and relationships can trigger campaigns! Check that your CSV is correct before initiating import.
Go to the docsUse in-app messages with our Data Pipelines JavaScript
Data pipelines MessagingUntil now, if you wanted to take full advantage of Data Pipelines and send in-app messages to your web audience, you may have had to use both our Data Pipelines JavaScript SDK and our Journeys Web SDK. Handling multiple SDKs for the same platform can be a pain, so we’ve added in-app support to our Data Pipelines JavaScript snippet. Now you can do everything in Customer.io with a single JavaScript SDK.
Go to the docsRetrieve and update language variants for messages through our API
API developers MessagingYou can now retrieve and update translations of messages using our App API. This includes campaigns, newsletters, API-triggered broadcasts, and transactional messages.
Go to the docsExport object and relationship data
Ui improvementsYou can now export object and relationship data from the people or object summary pages as well as from individual people and object pages. This gives you flexibility to share this data with your colleagues that do not have access to Customer.io.
Go to the docsSet custom widths for in-app messages
MessagingBy default, our in-app messages have a maximum width of 414px—a common breakpoint for mobile design. But that might be too narrow for non-mobile mediums, like your desktop website. Now you can set a custom max width for in-app messages, expanding your message on larger screens while still being responsive when your message appears on screens smaller than the max-width value.
Go to the docsCustomize the overlay color of modal in-app messages
MessagingBy default, we display modal in-app messages on top of a background overlay colored black with 20% opacity. Now you can customize the modal overlay color and opacity to better fit your brand and ensure that your messages are accessible to all of your users.
Go to the docsHide sensitive data for Authors
Admin billingYou can now hide profile and event attributes from team members with the Author role to limit who has access to personal information in your workspace. Admins can manage this setting in Account Settings > Team Members. When creating or editing a team member with the Author role, toggle on Prevent this person from viewing profile and event attributes. Authors with reduced access cannot manage segments, objects and relationships, or webhooks. They also cannot edit people or attribute conditions for broadcasts.
Go to the docsData Pipelines is now available in our EU Region
Data pipelinesIf your account is in our European Union region, you can now take advantage of Data Pipelines to send data from your various sources to destinations where you can activate that data. Now our full suite of features—both Journeys and Data Pipelines—are available to you, wherever you are.
Use Data Pipelines for Free!
Sign up for Data Pipelines and receive unlimited API calls through the end of 2023. If you’re already a customer, you can turn on Data Pipelines and use it immediately, with your Journeys data automatically integrated.
Multiple page rules for in-app messages
MessagingNow you can set up multiple page rules for an in-app message, making it easy to show your message on any page relevant to your message and audience.
Go to the docsData Pipelines Zendesk destination
Data pipelinesThe Zendesk destination helps you identify your users, so you can keep a record of your users and can easily identify the people and organizations who ask you for help.
Go to the docsSet up in-app messages that persist across pages and sessions
MessagingYou can now keep banners and messages on your web or mobile app until a set expiration date. This option is perfect for announcing upcoming conferences, webinars, promotions, and more.
If you use our Web SDK, you can start sending persistent in-app messages today. If you use our Mobile SDKs, you’ll need to update to the latest version to take advantage of this feature. Persistent messages are available starting in:
Go to the docsPass delivery metrics from third-party providers
API developers Data integrationsIf you use outgoing webhooks to trigger messages from a third-party provider that is not natively integrated with Customer.io, you can send incoming calls to our Track metrics API to capture metrics in Customer.io. This allows you to see delivery metrics for all of your messages in one place.
Go to the docsRetrieve a list of all workspaces
API developersYou can now retrieve a list of all workspaces and high-level data, like people and object counts, through our App API. This is useful if you need to track usage outside of Customer.io.
Go to the docsHide sensitive data for Viewers
Admin billingYou can now hide profile and event attributes from team members with the Viewer role. Admins can manage this setting in Account Settings > Team Members. When creating or editing a team member with the Viewer role, toggle Prevent this person from viewing profile and event attributes to on.
Go to the docsGoogle Tag Manager (GTM) destination
Data pipelinesThe Google Tag Manager (GTM) destination helps you take advantage of GTM through your Data Pipelines implementation. You won’t have to drop in the GTM snippet or call gtag
directly.
Reorganize in-app messages with drag-and-drop
Ui improvementsFollowing 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 docsJump to components in your in-app messages
Ui improvementsIn-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
Assign subscription topics in bulk to live campaigns and broadcasts
Ui improvementsYou 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 docsData Pipelines is live!
API developers Data pipelinesCustomer 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.
Read more
In-App Microsurveys
Messaging Ui improvementsIn-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.
Read more
Track metrics for subscription center topics
Messaging Ui improvementsYou 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 docsReact Native SDK 3.0
Mobile sdkReact Native SDK v3 is live! Automatically update native SDK releases and integrate rich push easier. Follow our migration document (you only need to modify your Podfile) to upgrade, today.
Go to the docsPre-built blocks for in-app messages
Messaging Ui improvementsYou 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 docsOverride a subscription topic for a message
MessagingYou 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 docsWe’ve made our in-app editor more intuitive
Messaging Ui improvementsWe’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.
Create a custom subscription preferences page
API developers Data integrations MessagingYou 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 docsIncreased support for SSO providers
Data integrationsWe 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 docsDismiss in-app messages at the right time
Mobile sdkWe’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 docsCustomize the order of subscription center topics
MessagingYou can now change the order of your subscription center topics through Workspace Settings > Subscription center > Edit on the Topics table. This can be useful when you add or remove topics or want to rearrange them to reflect a hierarchy of importance.
Go to the docsRelate objects to people in the UI
Messaging Ui improvementsYou 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 docsSecurely verify requests for webhook actions
API developers Data integrationsYou 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 docsMulti-language support for the subscription center
MessagingYou 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 docsSSO with Microsoft Azure Active Directory
Data integrationsWe 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 docsBrand your global unsubscribe page
Ui improvementsYou 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 docsSend transactional push notifications
MessagingEasily 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 docsProtecting your account via 2FA
Admin billingTo 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 docsAdd dynamic expiration dates to in-app messages
MessagingYou 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 {{event.class_start_date}}
.
Data Pipelines now available in early access
Data pipelinesFor 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.
Read more
Allow partial updates to subscription preferences
MessagingYou 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 docsOfficial Flutter SDK release
Mobile sdkOur 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 docsSend pushes to iOS devices with the default sound
Mobile sdkWhen 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 docsAMP for email
API developers Messaging Ui improvementsWe’ve added support for AMP components to our email code editor! Validate AMP and send test emails from within your workspace.
AMP lets your customers complete surveys, RSVP to events, respond to comments, and more within your emails. Visit Amp.dev to find templates and components for your use case.
Toggle these experimental features on in Account Settings to get started: Advanced Code Editor and AMP for Email.
Go to the docsImport Objects and Relationships in Reverse ETL integrations
Data integrationsNow 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 docsOfficial In-App Messaging Release
Messaging Mobile sdkWe’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_id
in integrations, so it’s easier to get started with in-app messages.
In-app settings: moved and improved
Ui improvementsWe 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.
Rename your in-app messages
Ui improvementsWe’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 docsCustomize your subscription center
Ui improvementsNow 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 docsSupport for object-based segments in campaigns
AutomationWe 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 docsMessage limits with automatic retries
Automation MessagingMessage 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 docsObjects: a new way to group people together
API developers Automation Data integrationsWe 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.
Read more
Build a subscription center the easy way
Automation MessagingWe’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.
Read more
Automatic device cleanup
AutomationPeople 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 docsSend batch requests with our v2 API
API developersWith 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.
New Flutter SDK in Alpha
Messaging Mobile sdkIn 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 docsSend in-app messages to mobile or web channels with in-app page rules
Messaging Mobile sdkWe’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 docsTrue holdout tests
Automation MessagingA 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 docsSend transactional messages by Trigger Name
Data integrations MessagingIn the past, you needed to hunt down the ID of a transactional message before you could use it and actually send messages to your audience. Now you can set a friendly, case-insensitive Trigger Name, and use it to send messages. The Trigger Name makes it easier to find the message you want to send. It can also make your integration more human-readable if you use triggers that represent the kinds of messages you send—like password reset
or order confirmation
More predictable database-sync intervals
Data integrationsIn the past, our database sync integrations ran on an interval plus the time it took to complete an import from your database. So if a minute to sync your database and you set your sync interval to an hour, you effectively had a sync interval of 61 minutes, causing your expected sync interval to drift over time.
Now, we attempt to perform sync operations on your exact interval without regard to the time it takes to complete an import operation; if we’re still importing from your database on a sync interval, we’ll skip it (showing a skipped
status in our UI), and try again at the next interval. This adds predictability to your database sync integrations, so you’ll always know when you can expect to see your data in Customer.io.
Multi-language transactional messages
MessagingWe’ve extended multi-language support to our transactional API, so you can easily send transactional messages to your audience in their preferred languages. When you create a transactional message, you can add languages—versions of your email that are localized for different members of your audience. When you send your message, we’ll match your audience’s language attribute to the languages in your message, and people will receive the localized message that best represents them.
Go to the docsStore and reuse images with the Asset Library
Ui improvementsYou no longer need to upload the same image multiple times to reuse it across messages, nor do you need to host your own images! With our new Asset Library, you can upload images and reuse them across different messages.
Go to the docsSet wildcards for in-app page rules
Messaging Mobile sdkWhen you send an in-app message, you can set a page rule determining the page a person needs to visit to see your message. Now you can use the *
wildcard in page rules, so you can load a message containing a word or under a set path. This makes it easier to control where your in-app messages appear, so your audience receives your message on any relevant screens or pages.
With this feature, you can use a path beginning with a set of characters (begin*
), ending with a set of characters (*end
), or in a path (https//example.com/*/billing
).
Expire in-app messages in hours or minutes
Automation Mobile sdkIn-app messages support an expiry value, so that you only show messages to your audience when they’re relevant. But, in the past, we only allowed you to set expiration values in days. Now you can set messages to expire in hours or minutes, helping you send highly relevant, time-sensitive messages to your audience. It can also make it easier to test your SDK integrations with us!
As a part of this release, we’ve also changed the default expiration period from 365 days to 30 days.
Go to the docsOfficial React Native SDK release
API developers Mobile sdkOur first official release of our React Native SDK is now available. With our React Native SDK, you can take advantage of Customer.io in your mobile apps without having to maintain separate native platforms for iOS and Android. Implement our SDK in your React Native app to identify your mobile users, send rich push notifications, and send in-app messages—all without writing your own integration from scratch.
Go to the docsCompare conversion events to your trigger events
AutomationWhen you set up a campaign conversion, you can now compare your conversion event to your trigger event. This is a great way to determine the success of your campaigns based on related events.
For example, imagine that you start a campaign when someone begins an educational course; maybe your event is called course_started
, and it has a course_id
that you use to identify different courses you offer. Your campaign’s goal is to help someone finish the exercise, so you need to look for an event called course_completed
with the same course_id
. That kind of comparison is now possible, and you can use it to your advantage to pinpoint highly-specific conversion criteria!
Export delivery content to your data warehouse
API developersWe’ve updated our data warehouse integrations to version 4, including a new Delivery Content schema containing message contents—so you can maintain a history of the text and images you sent your audience. When you upgrade to the latest version, you’ll be able to export message contents and confirm the bodies and subjects of messages that were rendered and sent to individual users.
See the Delivery Content schema for information about the new table in v4. Go to the documentation link below for help updating to v4.
Upgrade to v4 to use subjects and outputs
We’ve made some minor changes to subjects and outputs a part of our v4 release. If you’re using a previous schema version, we disabled your subjects and outputs on October 31st, 2022. You need to upgrade to schema version 4, to continue syncing outputs and subjects data.
Copy broadcasts and newsletters across workspaces
Ui improvementsIn the past, if you wanted to reuse a newsletter or broadcast in another workspace, you had to create it from scratch. Now you don’t need to do all that work, you can simply copy your newsletters and broadcasts to other workspaces!
Go to the docsWe’ve updated our campaign trigger page
MessagingWhen you go to create a campaign, you’ll notice some changes to our campaign Trigger page. We’ve redesigned this step in the campaign setup process to make it easier to understand how each trigger works and when you should use them.
Go to the docsExport duplicates and devices for troubleshooting purposes
Admin billingHave you ever found people with the same email address or phone number in your workspace, and accidentally sent duplicate notifications? Now you can export a list of people who have the same attribute, making it easy to find and deduplicate people or attributes in your workspace.
This feature also adds the ability to export a list of devices. You might export devices to clean up bounced or suppressed devices.
Go to the docsSend rich push messages without writing custom payloads
MessagingWe’re updating our push editor, so you can send rich push notifications containing images, links, and even custom key-value pairs without writing complicated custom JSON payloads. With this update, push previews also update to include images, helping you visualize your push notifications.
We’re rolling the new rich push editor out to accounts over the next week. Contact product@customer.io if you want to start using it today.
Go to the docsWait until an event matches properties
AutomationWe recently updated our Wait Until action to support different conditions—including waiting until a person performed an event. Now you can set event properties in wait conditions, helping you wait until a person performs an event matching very specific parameters.
For example, if people enter your campaign when they create an appointment, you might send them a reminder before their appointment. You can use an event parameter-based wait condition to make sure that someone hasn’t cancelled their appointment before you send the reminder!
Go to the docsUse nested attributes with our simplified UI
AutomationIn a previous release, we exposed the ability to use JSON dot notation to access nested attributes and event properties in segments, filters, etc. But what if you’re not a developer or familiar with JSON? This update adds some simple options that can help folks traverse nested attributes without needing a deep understanding of JSON and related terms!
Read more
React Native SDK in Open Beta
Mobile sdkYou can now install and use a React Native version of our SDKs—including rich push and in-app features. We’re confident in the core features and we don’t expect to introduce breaking changes before we officially release it. But, we have a bit more work to do, a few questions to answer, and we need your help to make sure that we build the SDK to fit your needs. Start using it today and send us your feedback!
Go to the docsAdd people in bulk via the API
API developersThis release makes it easier to add people to your workspace without making identify
calls for each individual person. Now you can use our App API’s new /v1/imports
endpoints to import a CSV where each row represents a person, letting you add and update a large number of people with a single operation.
Email code editor using Parcel
API developers MessagingA few weeks ago, we enabled Parcel’s code editor for email as an experimental feature. It’s been so successful that we’ve enabled it for everybody. When you write emails using the code editor, you can now preview your output, take advantage of focus and inspect modes, test your message for responsiveness, and more!
Go to the docsExperimental feature: Parcel email code editor
API developers MessagingNow that Customer.io has acquired the best coding platform for email, we’ve started integrating it into our platform—beginning with our email code editor. Enable the Parcel Editor experimental feature to take advantage of syntax-aware autocomplete, responsive previews, and focus mode that helps you zero-in on the elements you want to edit.
Read more
Twilio MMS Support
MessagingA standard SMS text message is limited to 160 characters, but a picture is worth a thousand words. Now you can send images in your Twilio SMS messages to increase engagement with your mobile audiences in the United States and Canada.
When you set up an SMS message, you can add the URL of a JPEG, PNG, and GIF image. You can send images up to 1.5MB to people with phone numbers in the United States and Canada. In general, we recommend that you limit images to 1MB or less, so that everybody in your audience can see them regardless of their connection speed.
Go to the docsEvent conversions for newsletters
Automation Ui improvementsEarlier 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 improvementsIn 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 improvementsNow 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 docsSet up Wait until delays based on attribute and event conditions
Automation Ui improvementsWe’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 improvementsWhen 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 improvementsYou 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 integrationsNow 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 improvementsIf 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 integrationsNow 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 improvementsOur 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