Goal: granular opt-outs that keep the newsletter subscriber who hates the product digests.
Step 1. Create one group per mail type in the console (newsletter, product updates, promotions). Give each a clear name and description; recipients see these.
Step 2. Attach the right asm group_id to every send. Transactional mail that must always go out carries no group; everything optional carries one.
Step 3. Set groups_to_display so the preference page shows the groups relevant to that message.
Step 4. Wire group_unsubscribe events from the Event Webhook into your preference store so all senders honor them.
Step 5. Test end to end: subscribe a seed address, unsubscribe from one group, confirm the next send to that group drops with Unsubscribed Address while other groups still deliver.
Verify: group_unsubscribe events flow, per-group drops work, and global unsubscribes still suppress everything. Pitfall: sending with the wrong group_id unsubscribes people from the wrong list.