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

Push Protocol

01Description

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.

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.
07Alternatives