Social / Messaging·EVM · Multi-chain
Push Protocol
Onchain notifications, chat, and video for Web3 (formerly EPNS). Channels broadcast to opted-in subscribers; the team is also rolling out Push Chain, a universal L1 with chain abstraction.
- 01onchain push notifications
- 02channel broadcasts to subscribers
- 03wallet-to-wallet chat
- 04DAO / governance alerts
- 05cross-chain user comms
- pnpm add @pushprotocol/restapi @pushprotocol/uiweb ethers
| Variable | Scope | Description |
|---|---|---|
| PUSH_CHANNEL_PRIVATE_KEY | Server | Private key of the wallet that owns the Push channel. Server-only — used to sign notification sends. |
| NEXT_PUBLIC_PUSH_CHANNEL_ADDRESS | Client | EIP-155 channel address (e.g. eip155:1:0x...) used by the frontend to subscribe / fetch notifications. |
| NEXT_PUBLIC_PUSH_ENV | Client | Push environment: 'staging' or 'prod'. |
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.
- ⚑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.