Het WebPush-protocol is gedefinieerd door RFC 8030 (Bezorging via HTTP Push) en RFC 8291 (Berichtversleuteling).
Web Push is een gestandaardiseerd protocol voor het bezorgen van pushmeldingen aan webbrowsers. Het gebruikt de Push API, een standaard web-API waarmee websites push-berichten kunnen registreren en ontvangen. De Push API stelt een website in staat push-berichten te verzenden naar de browser van een gebruiker, zelfs wanneer de gebruiker de website niet actief bezoekt.
Om Web Push te gebruiken, moet een website eerst een push-abonnement verkrijgen van de browser van de gebruiker. Het abonnement bestaat uit een unieke eindpunt-URL en een versleutelingssleutel. De eindpunt-URL is een URL die de website kan gebruiken om pushmeldingen te verzenden naar de browser van de gebruiker, en de versleutelingssleutel wordt gebruikt om de pushmeldingen te versleutelen en ontsleutelen.
Zodra de website een push-abonnement heeft verkregen, kan hij push-berichten sturen naar de browser van de gebruiker door een HTTP-verzoek te doen naar de eindpunt-URL. Het push-bericht wordt verzonden in een speciaal formaat genaamd het Web Push Protocol Message, dat bestaat uit een set headers en een payload. De headers bevatten informatie zoals de versleutelingssleutel en de TTL (time-to-live) van het bericht, terwijl de payload de werkelijke inhoud van het bericht bevat.
Wanneer de browser van de gebruiker een pushbericht ontvangt, ontsleutelt hij het bericht eerst met de versleutelingssleutel. Vervolgens toont hij de melding aan de gebruiker, samen met eventuele aanvullende acties die de gebruiker kan uitvoeren, zoals het sluiten van de melding of het openen van de website.
Om de beveiliging en privacy van pushmeldingen te waarborgen, gebruikt Web Push end-to-end-versleuteling en vereist dat push-abonnementen worden verkregen via een beveiligde verbinding (bijv. HTTPS). Bovendien biedt het protocol mechanismen voor het authenticeren van de afzender van een pushmelding en het voorkomen van misbruik (bijv. door het aantal pushmeldingen dat een website naar een gebruiker kan sturen te beperken).
Er zijn 2 componenten die WebPush ondersteunen: