TL;DR: One key across realtime delivery and queues gives every stage a stable name for the same marketplace notification. That key does not make presence accurate, guarantee exactly-once delivery, or replace acknowledgements. It lets the system reconcile a presence decision, retry safely, and suppress the duplicate that otherwise appears when a buyer disconnects at the worst moment.
Choice Presence requirement Failure behavior Best fit
One key, live first, queue on uncertainty Fresh enough to choose a route Reconcile by key after reconnect Most in-app marketplace notifications
Queue first, then project live Presence is advisory Durable work exists before delivery Events that must survive process loss
Live only Presence can be wrong without harm Drop or regenerate Ephemeral hints such as typing state
My default is the first row for notifications such as “seller accepted your offer.” It keeps the common online path quick while preserving one identity when presence turns out to be stale.…