I would keep it separate from the cart and have it take `request` so it can actually trigger the messages rather than sticking them on random objects.