User scripts can’t receive messages directly from the background script. Instead, you’d need to set up a content script that receives messages from the background and passes them on to user scripts. If I were implementing this, I’d probably exchange messages between the content script and user script via a CustomEvent with a unique event name for each user script or for each user script world.