Marketer here. I’ll add how my company does it (10m+ list size)
1) we limit promotional notifications to one per user per day. All campaigns that target a given user are ranked based on expected monetization or engagement. This involves a large batch scoring job that runs overnight
2) we also limit promotional messages to one every x days, where x is personalized to the user. The more you open/click, the more you get and vice versa. employees sometimes complain about the amount of email they receive - it’s because they are naturally power users, opening everything.
On top of that, we’ve built levers to temporarily boost revenue by targeting a given opt out rate. Say our baseline is 1%, we may be ok with temporarily having a 1.2% rate to get $x more revenue. This involves an opt out prediction model as well.