A while ago, I was working for a meditation app that was focused on short, daily meditations. To keep users active and help them maintain their meditation streaks, we wanted to send daily reminders via push notifications if the user hasn’t meditated that day.

This is a pretty simple thing to do with any modern customer engagement platform like Braze, Iterable, Customer.io, etc. But the problem was in keeping reminders interesting. Sending the same reminder every day will get stale and users are likely to engage less over time.

To address that, we knew that our solution had to send push notifications with different copy (almost) every day to keep users interested and keep engagement rates high. This solution has an interesting technical implementation, so this article is dedicated to showcasing it.

My showcase is done in Braze, as that is the platform I use the most these days, but the same principle can be applied to almost any other customer engagement platform.

Randomizing Push Notification Copy via Liquid

Liquid is a personalization language used by Braze and other platforms to enable advanced personalization by writing simple code. We’re going to use this to our advantage to randomize push notification copy.

Randomizing Push Notification Copy via Liquid

Here’s how this works:

  1. First we create an array of different notification_messages using the split filter

  2. We generate a random index using the nanoseconds from the current timestamp (date: “%N”). 

  3. We use modulo to ensure the index stays within the array size. This is a workaround for generating a random number in Liquid as it doesn’t have a built-in random function. 

  4. Finally, we output the random message using array indexing.

You can see that the Liquid code is very short and simple, but there are cases where people might want to avoid using code at all. In that case, we can use different flow or canvas elements to achieve the same thing.

Randomizing Push Notification Copy via Canvas

This option uses A/B testing functionality to our advantage. We’re simply going to add as many variants as we want to have for copy alternatives and let Braze (and other tools) randomly select a variant for the user every time they enter the flow.

Randomizing Push Notification Copy via Canvas

Here’s how this works:

  1. Create an A/B test with as many variants as we want.

  2. Build each variant separately with a unique copy.

  3. Make sure to select a randomized distribution so the users always receive a random variant.
A/B Test Randomization

This approach has more nodes in the flow but comes with multiple advantages over using Liquid or other personalization languages:

  1. You will know what copy was sent to which user.
  2. You will have separate metrics for every copy.

With the Liquid solution, it will all be bundled up as it’s a single push notification.

Other Applications for Content Randomization

This randomization technique can be applied to any campaign or flow that is sent very frequently but doesn’t require immediate user action.

For example, I wouldn’t use this for food delivery notifications as users will be waiting for those and will always engage.

I think a better application in notifications is trying to nudge users to do something they don’t necessarily want to do. Such notifications are not essential, so they can be ignored and disabled if they become annoying over time. For example:

  • Exercise reminders
  • Streaming (movie, series) reminders
  • Alarms

Randomization can also be applied to any other marketing channels such as email or SMS, and content types like images, videos, links, etc.

The Conclusion

Randomizing notification copy is a simple yet effective way to maintain engagement with your users. Whether you choose to implement it through Liquid code or A/B testing variants, this approach helps prevent notification fatigue while keeping your messages fresh and engaging. 

I’m currently working on a solution to bring even more personalization to push notifications via AI, so stay tuned for that!

How did you like this post?

Thanks for your feedback!

🚀

Why name denis-test.com?

© 2024 Denis Kolbas

Privacy Policy