Hello Francesca!
We have not experimented with engagement scoring directly, but we have done something similar around dynamically adjusting email cadence based on user engagement. Instead of a fixed sending frequency for everyone, each user moves up or down in frequency based on their recent activity. This resulted in lower unsubscribes while driving higher revenue for us.
When measuring activity we considered both clicks and real opens equally, filtering out machine opens (machine_opens = true) to avoid Apple MPP inflating the numbers. On the topic of opens being unreliable, we understand the concern but felt that discarding them entirely means losing all genuine opens in the process. Filtering machine opens and keeping real opens as part of the activity signal felt like the right balance for us.
All of this is calculated in our data warehouse and the send_cadence attribute is synced to Braze daily via CDI.
We have tested this extensively and here is what worked for us. Adjust the days based on your own send volumes and engagement benchmarks.
Reducing for disengaged users:
- Daily to 3x Weekly if no activity in the last 7 days
- 3x Weekly to Weekly if the user has been in the 3x Weekly state for 120 days with no activity
- Weekly to Monthly if the user has been in the Weekly state for 90 days with no activity
The 120 days in 3x Weekly might seem long but it is intentional. Our data shows that most of our buyers come from the Daily bucket, so the ultimate goal is to move as many users to Daily as possible. Users in 3x Weekly are not disengaged enough to give up on, we keep feeding them content at a reduced frequency hoping they re-engage, and a significant portion of them do come back and jump straight to Daily. The 120 day window gives them enough time and enough touchpoints to find their way back.
The timer is also based on how long the user has been in that specific cadence state, not just their overall last activity date. So a user does not drop from 3x Weekly to Weekly just because they have not engaged in 120 days overall, they drop only if they have been sitting in 3x Weekly for 120 days without any activity.
Increasing for re-engaged users:
- Monthly to Weekly if there was activity yesterday and cadence hasn't changed in the last day
- Weekly to 3x Weekly if there was activity yesterday and cadence hasn't changed in the last day
- 3x Weekly to Daily if there was activity yesterday and cadence hasn't changed in the last day
We move users up quickly and there is a deliberate reason behind this. A user who is engaging every day but not yet converting is telling you they are still looking for inspiration, they just have not found the right thing yet. Increasing their cadence means more chances to show them something that lands. Once a user does make a purchase we apply a cool down period where we pause email communications for a certain number of days, so we are not over-communicating to recent buyers.
On the flip side, if a user who just moved up to Daily shows no activity for 7 days, they drop back to 3x Weekly quickly. The logic is intentionally asymmetric: slow to reduce for disengaged users, fast to react in both directions around re-engagement.
How it works in Braze:
This is all fully automated. All users enter the same daily newsletter Canvas regardless of their cadence. The send_cadence attribute drives everything inside the template itself using Liquid. We define which days of the week each cadence tier receives the newsletter and use Liquid abort logic inside the template to silently skip the send for users who are not scheduled to receive it that day. So a 3x Weekly user enters the Canvas every day but only receives the email on their designated days, same with Weekly and Monthly users. No separate Canvases, no audience splitting, just one Canvas and Liquid handling everything cleanly.
Happy to go deeper on the implementation if helpful!