Release Notes

Version 5.8.0: Newsletter split testing, and segment by individual link clicks

Released on Jan 11 2016

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.

Newsletter add variation

All your metrics are broken down by variation, and available in a default summary view. This includes opens, clicks (including individual links), and conversions.

Newsletter split metrics

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.

Newsletter sample percentage

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”).

Segment by link click

Bug fixes

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!


Version 5.6.4: Clearer segment sorting, small bug fix

Released on Dec 11 2015

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.


Version 5.6.0: Email info at a glance, robustness improvements, bug fixes

Released on Dec 3 2015

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 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.

Email popover demo

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 or @customerio!


Version 5.5.12: New segment builder, test email failure feedback, and bug fixes

Released on Nov 20 2015

New segment builder beta

Segments v2 beta gif

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.

New segment builder GIF


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.

Test email error

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.

Environment edit

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.

Share your thoughts and questions at or @customerio!


Version 5.5.7: Boosting communication and confidence

Released on Nov 6 2015

Communication and Confidence

  • Before, when the app failed to load, you would get stuck on a “Loading” screen that didn’t tell you anything else. This wasn’t very helpful, so Ami now lets you know that something is wrong and that we’re investigating. We added quick links to get in touch with support and to check our status page for any updates.

    Of course, we hope that you never have to see this screen, so here’s a peek at what it looks like:

Failing to load screen

  • You might have noticed that Ami bedazzles you with her virtuosic sign-spinning skills while you wait a few seconds for the rest of the app to load:

Ami spinner

  • You can now be more confident when sending newsletters. When you click send, we’ll refresh and display the latest key information — most importantly recipient and filter counts. This helps prevent mistakes like sending a newsletter to the wrong people (which could happen if you’d changed the recipients settings in another browser tab).

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.

Share your thoughts and questions at or @customerio!


Version 5.5.9: User interface polish, link tracking update, and bug fixes

Released on Nov 6 2015

User Interface Polish

  • We made it easier to set a delivery window for your emails. Want your messages to be sent only on weekdays during business hours, US Eastern time? No problem!

    New delivery window settings

  • Our email layouts can contain Liquid tags. Until now, if you made a mistake when typing your Liquid logic, you couldn’t save your layout, but the app didn’t say why. We’ve now added clearer error handling so that you can find the mistake and fix it.

    Layout validation errors

  • We updated our pagination controls to make it easier for you to go to the start or end of a list of drafts, emails, or campaigns. While we were at it, we made a couple of other visual improvements:

    Pagination widget

  • We’ve polished up the UI for editing the name of campaigns, newsletters, emails, and segments. It’s now consistent across the app, and it copes better with any network or validation errors that may occur.

    Name editor widget

  • The auto refresh button on email and activity logs wasn’t working reliably if you left the page open for several hours. Tracked that down and fixed it, and also replaced the button itself with a snazzy new switch:

    Auto refresh switch

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 We also now ensure that invalid or JavaScript links are not tracked.

Bug fixes

We caught and fixed a few bugs this week:

  • Links from a layout page to its associated campaign emails were broken. Fixed that.

  • If you clicked an email or draft from the activity logs stream, the app would sometimes display a blank page. Fixed that.

  • The person attribute editor would let you leave the page without saving your changes. The app now lets you know that you should either discard the edits, or save them.

Share your thoughts and questions at or @customerio!


Version 5.5.6: Faster Event Processing

Released on Oct 29 2015

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.

Bug Fixes

  • If you’re using Mailgun as your SMTP provider, we fixed an integration bug where spam complaints could drop before they get to our system.

  • If you deleted an email in a series, all following emails would have their delays moved forward to fill the gap. This was more confusing than helpful. Now when you delete one email, the timing of the other emails in your campaign series won’t change at all.

Share your thoughts and questions at or @customerio!


Version 5.5.5: View receipts in account settings

Released on Oct 23 2015

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.

Screenshot showing Billing History Page of Account Settings

Bug Fixes

  • We fixed a minor issue where it was possible to set a negative delay on emails. Since we haven’t cracked backwards time travel (and setting a negative delay didn’t do anything), we simply made sure that you can’t schedule an email with a negative time delay in the first place.

  • We performed some header cleanup to fix the visual alignment of header items and properly link the logo back to the environment dashboard.

  • We patched up a bug where JSON attributes wouldn’t expand properly on a person’s overview or attribute pages. This was due to a deprecation in the JavaScript framework that we used, so we made sure to update that functionality to allow you to expand those lovely JSON attributes.

Share your thoughts and questions at or @customerio!


Version 5.5.4: Merge event data into test emails

Released on Oct 15 2015

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

  • Previously, any errors in your “From:” address would result in the display of a cryptic Ruby error. Now it says something meaningful to help you fix the problem.

  • Sending certain types of data to our public API servers was causing the connection to be closed with no response. We handle that situation better now, responding properly with a 400 error and explaining what to do to prevent errors in the future.

  • We caught a bug where trying to save an email without any content would fail. Even worse, we wouldn’t warn you about what was going on. We patched our API to return this error, so you’ll see what the problem is if you try to save an email that’s invalid.

Screenshot showing an example error notification for email with no content

Scalability and Reliability

  • API data processing capacity was increased by 50%.

  • We made changes to our systems infrastructure to provide true zero downtime systems upgrades.

Bug Fixes

  • You can edit existing attributes on a person’s profile page. Previously, if you edited the name or value, the save bar wouldn’t show up. This was our mistake with the new implementation of the save bar, but we’ve fixed it up!

  • The button styles found on the “Create a new campaign” page were briefly broken. They rendered white instead of green, making the text difficult to read. We fixed the visual styles of the buttons and did a code sweep in the app to make sure other buttons weren’t affected.

  • We had a nasty bug that allowed you to send a newsletter with no content. This was a bad regression on our part. We patched the bug and added more tests to ensure this doesn’t happen again.

  • A bug was fixed that prevented processing data sent to our API when the customer_id contained an escaped slash character.

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

curl -i \ 
   -d name=eventName

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

Share your thoughts and questions at or @customerio!


October 8th, 2015

Released on Oct 8 2015

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.

Screenshot showing the degraded status message on newsletter recipients

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.

Bug fixes

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 — 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.

Get in touch!

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


Check out our blog