← Protocols
Push Protocol
Social / Messaging·EVM · Multi-chain

Push Protocol

01Description

Push Protocol gives builders a way to add wallet-aware notifications, subscriber broadcasts, and messaging primitives without inventing a bespoke delivery layer from scratch. This protocol reference now leads with the search intent users actually bring to the page: when Push fits for Web3 notifications, what channel and opt-in requirements shape delivery, and which backend integration details matter before a team ships alerts or chat into production.

02Best for
  • 01onchain push notifications
  • 02channel broadcasts to subscribers
  • 03wallet-to-wallet chat
  • 04DAO / governance alerts
  • 05cross-chain user comms
03Install
  • pnpm add @pushprotocol/restapi @pushprotocol/uiweb ethers
04Environment variables
VariableScopeDescription
PUSH_CHANNEL_PRIVATE_KEYServerPrivate key of the wallet that owns the Push channel. Server-only — used to sign notification sends.
NEXT_PUBLIC_PUSH_CHANNEL_ADDRESSClientEIP-155 channel address (e.g. eip155:1:0x...) used by the frontend to subscribe / fetch notifications.
NEXT_PUBLIC_PUSH_ENVClientPush environment: 'staging' or 'prod'.
05Prompt snippet
Use Push Protocol for notifications and chat. Initialise with `const user = await PushAPI.initialize(signer, { env: ENV.PROD })` from `@pushprotocol/restapi`. Send a channel notification via `await user.channel.send(['*'], { notification: { title, body }, payload: { title, body, cta, embed } })` — `'*'` broadcasts to all opted-in subscribers; pass an array of `eip155:chainId:address` strings to target specific wallets. For chat, call `user.chat.send(recipient, { type: 'Text', content })`. On the frontend mount `<NotificationItem />` from `@pushprotocol/uiweb` to render an inbox. Server-side notification sending must use `PUSH_CHANNEL_PRIVATE_KEY`; never ship that key to the browser.
06Gotchas
  • ⚑You must create and stake-fund a Push channel via push.org/channels before notifications can be sent — channel creation requires PUSH tokens.
  • ⚑Recipient addresses must be in CAIP-10 format (`eip155:1:0x...`); raw 0x addresses will be rejected by the REST API.
  • ⚑Notification sending requires the channel-owner private key to sign — do all sends from a backend route, never from the client.
  • ⚑Subscribers must opt-in to a channel before they will receive notifications; users who never visited a Push-aware client see nothing.
  • ⚑Push Chain (the new L1) is separate from the messaging protocol — confirm whether you need notifications/chat on the existing network or to deploy onto Push Chain.
  • ⚑`staging` and `prod` environments have completely separate channel registries.
08Alternatives