I contacted the official support for OneSignal and got a super simple but detailed solution - might you be dealing with similar issue, see copy of the e-mail below (thank you, Jon:)).
When using our REST API to programmatically send notifications, you can use the undocumented parameter web_push_topic.
In a set of notifications sharing the same web_push_topic, newly received notifications will replace older received notifications with the same topic. Only notifications sharing the same topic will be replaced; notifications without a topic or with a different topic will not be replaced. You can set different topics for different sets of notifications to control which notifications stay on screen.
The web_push_topic value can be any string value.
On Chrome, a maximum of 3 notifications is displayed at any time, even if the other notifications are not related to your site or from OneSignal. This means you can only show 3 categories of notifications to your user, not counting for other notifications that might be displayed at that time.
On Firefox on Windows, many more notifications can be shown at a time (6+).
On Firefox on Mac, and Safari on Mac, only one notification can be shown at a time, even if the other notifications are not related to your site or from OneSignal. Notifications also disappear quickly within 5 seconds and this time is not customizable.
On Chrome/Firefox on Android, multiple notifications can be shown at a time.
If you do not specify web_push_topic , each notification will be replaced by a newer notification. If you do specify web_push_topic, you can choose which notifications will be replaced and which notifications will stack.
When sending a notification using our API, setting a string value for web_push_topic will set the topic for the notification. Any notifications sharing the same topic will replace each other, but any notifications with a different topic won't be replaced.
So suppose you send 4 notifications:
Notification "Open house at 1234 Street at 3 PM this Saturday" with topic 'open-houses'.
Notification "Open house at 1234 Street changed to 4 PM this Saturday" with topic 'open-houses'.
Notification "20 new houses match your criteria in the Seattle, WA" with topic 'general-updates'.
Notification "Find an agent in your area" with topic 'promotional'.
The sequence of notifications observed will be:
Notification #1 shows.
Notification #2 replaces #1 (even if docked in Mac OS X's notification tray).
Notification #3 is shown separately (and if docked in Mac OS X's notification tray, it will use a separate entry).
Notification #4 is also shown separately.
In the end, when the subscriber checks his unread notifications, he will see three total notifications.
Hopefully that makes more sense!