Start here. This is the direct spoken answer to practice first.
Why this question matters
Notification delivery is only useful when users trust it. Preferences and digests turn a simple send pipeline into a product workflow with consent, timing, batching, and suppression rules.
I would store preferences by user, notification type, channel, and frequency. When a business event creates a notification request, the system checks preferences before choosing email, in-app, push, or digest. Immediate notifications are sent by workers, while digest-eligible events are collected and sent on a schedule. Users can update preferences and unsubscribe through authenticated settings or safe email links.