Лучше слать через PushAll
Но если самому - то копайте в сторону Push API.
https://github.com/chrisdavidmills/push-api-demo
Но надо понимать что бесплатно у вас получится лишь на хроме, ff и что на них основано. На Safari нужно сертификат делать через аккаунт разработчика Apple, для мобильных платформ приложения надо писать.
Ну и самое сложное - надо поддерживать актуальные токены, обновлять их, следить за актуальностью подключенных устройств.
Если понятнее - при закрытом сайте оно отправляется через сервисы браузера, далее он вызывает ваш код в Service Worker и он уже отображает уведомление.
-----------
Получил данный вопрос через IT вопросник
https://pushall.ru/?fs=927