[null, null, null, null, null, null, null, null, {"document_url": "https://customer.io/release-notes/page/3/", "unformatted_src": "https://fast.customer.io/s/test-email-error.png", "src": "https://fast.customer.io/s/test-email-error.png", "formatted_filename": "test email error", "alt_text": "Test email error", "rendered_width": 519, "rendered_height": 301}, null, null, null, {"document_url": "https://customer.io/release-notes/page/3/", "unformatted_src": "//fast.customer.io/s/billing-history-invoices.png", "src": "http://fast.customer.io/s/billing-history-invoices.png", "formatted_filename": "billing history invoices", "alt_text": "Screenshot showing Billing History Page of Account Settings"}, null, {"document_url": "https://customer.io/release-notes/page/3/", "unformatted_src": "/release-notes/images/email-failed-to-save-error-e862988e.png", "src": "https://customer.io/release-notes/images/email-failed-to-save-error-e862988e.png", "formatted_filename": "email failed to save error e e", "alt_text": "Screenshot showing an example error notification for email with no content", "rendered_width": 627, "rendered_height": 362}, null, null, null]
Newsletter split testing

Test and improve your newsletter performance with split testing! You can now set up multiple variations for every newsletter, and compare performance metrics for different subject lines, from addresses, layouts, or content. All your metrics are broken down by variation, and available in a default summary view. This includes opens, clicks (including individual links), and conversions. And you can even send your test newsletter to a sample percentage of your recipients first, so that you can choose a winner and send that to the rest. Find out more about newsletter split testing in our docs.

Who clicked on that link?

Thanks to our click tracking feature, you can now segment by users who have clicked on a specific link in an email. Copy and paste the URL from your email template, or use a wildcard (e.g. .\*account/signup* for any link including “account/signup”). 
When first editing a new email or newsletter, our save bar would say you had unsaved changes even before you did anything. This was due to our UI being understandably confused between the difference between missing and blank email body. The code has been fixed to cope with this, so no more unnecessary save bar.

When viewing segments for a person who doesn’t belong to any, we previously showed a blank white page. This looked like something was broken, so we added a message here to explain that the person doesn’t belong to any segments.

Finally, last week’s 5.7.0 release had a couple of bugs with showing A/B test results and using the WYSIWYG editor. As a result, we rolled it back and carefully fixed those up. Pardon our dust!


Finding recent segments

Just edited a segment and can’t find it in the list? Us too! To fix that, segments are now sorted so that the most recently edited one is at the top of the page. We’ve also added the date & time that the segment name or conditions were last edited, so you can see when you last made changes.

Bug fix

Some event triggered campaigns with no event data filter were causing crashes when you tried to update the recipient settings. This didn’t affect the operation of the campaign, but meant that changes could not be made. We fixed the bug and all’s well now.


Segment builder beta ends soon

We’ve turned on the new segment builder by default. This is now in its final beta phase, which lasts one week. During this time, you can still use the existing segment builder by clicking the “Leave beta” button. For more information, check out our introductory post on the new segment builder.

We’ll be migrating fully to the new, improved version by Friday 11th December. Send us your feedback by dropping an email to email@example.com.

Email popover: your campaign email details, at a glance

We’ve updated our triggered campaign page to add a new email popover. Hover over an email icon to see more information about that email, right on the same page. And you can click on the preview link to see the full email. Event processing robustness improvement

Late in November, we had a 15-second partial event capture outage during which approximately 1200 requests may have been lost. As a result of the post-mortem, we’ve expanded the various error conditions that our automated health checks detect. Now we verify every two seconds that the server is available, the database is healthy, and the storage is responding to test writes in a timely manner.


If you browsed back through your email logs for a campaign with a completed A/B test, you might have seen that viewing email logs for the losing side of the test would show an error page. We have squashed that bug!

Before, when you searched for emails or drafts and there are no matches, we would show the message: “No sent emails”. This description was misleading (you probably do have some sent emails!) so we’ve clarified it to read: “No sent emails matching your filters”.

Share your thoughts and questions at email@example.com or @customerio!


New segment builder beta We’ve been working on this for a while, and we’re so excited to release our new segment builder public beta! It’s now easier for you to build segments, and there are a couple of useful new features too. To find out more, check out our detailed announcement post. Our test email function now gives you visibility into failures. Previously some email rendering failures would happen silently and result in no email being sent. These are now reported in the subject and body of the test email itself when it is delivered. Note: some previously failed test emails may be delivered retroactively due to the nature of retries in our system. The create and edit environment pages have been refreshed to be easier to use, up to date with the rest of the application, and to improve error checking. Exports are a popular feature with humans as well as robots, so we’ve added human-readable timestamps to make it easier for the fleshy ones to read and understand the data.

We’ve also been refreshing tiny pieces of UI all through the application, making everything more consistent and up to date.

Bug squashing

Our activity logs are useful for tracking all sorts of events, including when an email is drafted for a customer. We found a bug where if you sent or deleted the draft, the activity logs would display a “Drafted email” row but with a blank name. This has been fixed to read “Draft deleted”, so that you know what happened.

If an email fails to send due to some missing Liquid data or another error, we give you the option of adding data for the customer, or editing the email. Recently those features stopped working, so we’ve fixed that, added comprehensive test coverage, and tidied up the code behind the scenes.


Communication and Confidence Other small improvements

We’re continuing to improve our dropdowns throughout the app. In this release, we updated the newsletter scheduling interface to use a native select with some awesome styling on top of it. This helps render this interface faster for you while also providing keyboard support and better accessibility.

We’ve also made several invisible changes to our event capturing servers, improving stability and increasing monitoring. This ensures that everything runs even more smoothly in this critical part of the application.


User Interface Polish

Link tracking security

We’re continuing to improve the robustness and security of our link tracking. This week we improved the link tracking redirector to prevent other people from creating working links that looked like they were from Customer.io. We also now ensure that invalid or JavaScript links are not tracked.


We caught and fixed a few bugs this week:


Faster Event Processing

When it comes to event-processing, we feel the need for speed. We’ve been working on the efficiency of our event tracking servers and have boosted the capacity for receiving events significantly. The new event processing is almost ten times faster, which will reduce system latency especially at peak hours when we’re receiving lots of events.



View receipts in your account settings

You can view invoices and payment history right in the account settings of the app. Previously we would only send receipts via email to the person who registered an account. Now you can simply head to the “Billing History” of your Account Settings to access paid invoices.

You’ll see a table with each row summarizing the main points of each invoice, plus a link to see a more detailed receipt that includes the invoice number, subscription period, and a breakdown of each invoice line item. You can also save this page as a PDF. 

Test Event-Triggered Emails With Event Data

You can now send a test email with merged-in event data from the last user who triggered the event.

Improved Error Handling Scalability and Reliability


For example, the following event would have not been processed:

We have now recovered and processed any data sent within the last month.


Help Form Update

If you use an ad blocker, or some JavaScript failed to load, our feedback form would quietly fail to send us your messages. This meant we couldn’t help you with your questions because we didn’t receive them! We’ve fixed this. (If you sent us a support request through the form and didn’t receive a reply within 24 hours, please send us another message!)


We’ve been improving our search infrastructure, building a better performing and more reliable way of filtering and discovering users in your account. This has been rolling out over the past week, and we’re seeing some big improvements already.

There have been a few bumps as we update the search indexes to the newer faster versions, and we’re continuing to work on this. Please pardon our dust!

In our database cluster, two nodes have recently begun to fail regularly with hardware issues, which caused brief outages over the past few weeks. We’ve provisioned two new machines to take their place, and haven’t experienced any problems since. When we’re having trouble with our indexing engine, we want you to know what’s going on immediately. A few weeks ago, we added an automatic degraded operation notice in the people listing page. We now include the notice on the newsletter recipients page too, since the UI would not display the correct recipients.

If you see this message and want to get the data immediately to double-check that your recipient segments are correct — the best thing to do is to generate an export. Export data is always up to date, though it can take a couple minutes to build.


Previously we had multiple ways to save across the application, which was a super bad idea! We have now synced this up across the app, with a single save bar at the bottom of the screen. When you make changes (to a campaign, newsletter, etc…) this new bar will pop up to let you save your work. Hopefully you’ll find this a lot easier than before!

Until now, our delivery metrics export files contained only numeric IDs. This was not very useful, unless you really enjoy digging through your account and translating IDs into readable information. We’ve now added the names of campaigns and emails to these exports, so they make more sense to regular humans.


For drafts or email logs, changing the “page” parameter in the URL bar would not work if you had other filters applied (e.g. template, campaign). This made it difficult to skip through lots of pages of emails by editing the URL. Now fixed.

Due to what appears to be sorcery within our Ruby code, some wrong events were being passed to deliveries (where the event data did not match the event ID on the delivery). Event data caching is the suspected culprit. We now fetch the event directly from our main data store, and double-check that the ID matches.

When visiting a triggered campaign overview page, sometimes our navigation sidebar would get stuck open. Fixed that.

A bug with the draft deletion job caused deleted drafts not to be removed properly from the UI. This has been fixed.

When clicking on an unsubscribe link from a test email, you used to be directed to whatis.customer.io — which wasn’t very helpful and made it look like the link was broken. After this update, you’ll be directed to a page that will show an example of what a user would see when clicking on the unsubscribe link.

There was a bug in segment triggered campaigns where the settings page wouldn’t show you how many triggers were applied to the campaign. We fixed it up so you should now see the total number of triggers applied to your campaign on the settings page.

We’ve removed the ability to filter drafts by email address. The feature was not working consistently, and we don’t want to confuse you when filtering your results. We’re going to be re-evaluating this feature in the future.


Like what we’re doing or have questions? Let us know at email@example.com or @customerio.


Check out our blog