Protokół WebPush jest zdefiniowany przez RFC 8030 (Delivery using HTTP Push) oraz RFC 8291 (Message Encryption).
Web Push to ustandaryzowany protokół służący do dostarczania powiadomień push do przeglądarek internetowych. Wykorzystuje Push API, standardowe API webowe umożliwiające witrynom rejestrowanie i odbieranie wiadomości push. Push API pozwala witrynom wysyłać wiadomości push do przeglądarki użytkownika, nawet gdy użytkownik aktywnie nie przegląda danej witryny.
Aby korzystać z Web Push, witryna internetowa musi najpierw uzyskać subskrypcję push od przeglądarki użytkownika. Subskrypcja składa się z unikalnego adresu URL punktu końcowego oraz klucza szyfrowania. Adres URL punktu końcowego jest używany przez witrynę do wysyłania wiadomości push do przeglądarki użytkownika, natomiast klucz szyfrowania służy do szyfrowania i odszyfrowywania wiadomości push.
Po uzyskaniu subskrypcji push przez witrynę internetową może ona wysyłać wiadomości push do przeglądarki użytkownika poprzez żądanie HTTP do adresu URL punktu końcowego. Wiadomość push jest wysyłana w specjalnym formacie zwanym Web Push Protocol Message, który składa się z zestawu nagłówków i ładunku. Nagłówki zawierają informacje takie jak klucz szyfrowania i TTL (czas życia) wiadomości, natomiast ładunek zawiera właściwą treść wiadomości.
Gdy przeglądarka użytkownika odbiera wiadomość push, najpierw odszyfrowuje wiadomość przy użyciu klucza szyfrowania. Następnie wyświetla powiadomienie użytkownikowi wraz z ewentualnymi dodatkowymi akcjami, takimi jak odrzucenie powiadomienia lub otwarcie witryny internetowej.
Aby zapewnić bezpieczeństwo i prywatność wiadomości push, Web Push używa szyfrowania end-to-end i wymaga, aby subskrypcje push były uzyskiwane przez bezpieczne połączenie (np. HTTPS). Ponadto protokół zapewnia mechanizmy uwierzytelniania nadawcy wiadomości push i zapobiegania nadużyciom (np. poprzez ograniczenie liczby wiadomości push, które witryna może wysyłać do użytkownika).
Istnieją 2 składniki obsługujące WebPush: