Compare

Foony vs Pusher

Foony speaks the Pusher protocol, so this is the rare comparison where switching means changing environment variables, not code.

Pusher Channels defined the hosted WebSocket category, and its protocol became a standard: Laravel Echo, pusher-js, and a dozen server SDKs all speak it. Foony implements that same protocol on top of its own platform, which makes this comparison unusually practical. Your existing Pusher code runs on either.

When Foony fits

  • You want message history. Pusher stores at most the single last event on a cache channel for 30 minutes. Foony stores channels for up to 30 days and replays missed messages after reconnects automatically.
  • You care about ordering and delivery. Pusher documents that ordering is not guaranteed and delivery is best effort. Foony guarantees per-channel order and deduplicates resends.
  • Your messages are bigger than 10 KB, Pusher’s cap. Foony takes 64 KB on the free plan and up to 1 MB on paid.
  • You would rather pay overage than go dark. Past its daily message quota, Pusher returns 403 on every publish until you upgrade. Foony’s paid plans keep publishing and bill the overage.
  • Free tier size: 9M messages a month and 300 connections versus Pusher’s 200k messages a day and 100 connections.
  • Price at volume: Foony’s $19/month includes 100M messages. Pusher’s $49 plan includes about 30M a month and 500 connections.

When Pusher fits

  • You need Pusher’s webhooks (channel occupied, member added) to drive backend logic. Foony’s Pusher layer does not ship webhooks yet.
  • You use encrypted private-encrypted- channels on the Pusher protocol. Foony supports end-to-end encryption in its native SDKs, but not yet on the Pusher layer.
  • Hard caps as a feature: Pusher’s fixed plans can never surprise you with a bill.

Features

FoonyPusher
Message historyPer-prefix channel rules, up to 30 daysNone. Cache channels keep one last event for up to 30 minutes
OrderingGuaranteed per channel, serial-numberedNot guaranteed, sequence numbers are your job
DeliveryEffectively exactly once (idempotent publish, client dedup)Best effort, messages during a disconnect are lost
PresenceBuilt in, with automatic re-entry on reconnectBuilt in, capped at 100 members per channel
Pusher protocolYes, it is a supported compatibility surfaceYes, it is the product
WebhooksNot yetChannel and presence webhooks with retries

Limits and pricing

FoonyPusher
Free tier9M messages/month, 300 concurrent connections, free forever100 connections, 200k messages/day
Entry paid plan$19/month for 100M messages, overage $0.25 per million messages$49/month, 500 connections, 1M messages/day, hard stop past quota
Message size64 KB free, up to 1 MB on paid plans10 KB, publishes over it return 413
Per-channel rateNo per-channel ceiling, rate is per appClient events capped at 10 messages/second per connection

Competitor numbers last checked July 2026. If something has drifted, tell us and we will fix it.

Moving over

Because Foony speaks the Pusher protocol, migrating is a configuration change. Point your existing Laravel Echo, pusher-js, or server SDK at Foony with new credentials and keep your code. The full mapping is in the Pusher and Laravel Echo docs.

PUSHER_HOST=realtime.foony.io
PUSHER_PORT=443
PUSHER_SCHEME=https
PUSHER_APP_ID=your-app-slug
PUSHER_APP_KEY=kid_yourkeyid
PUSHER_APP_SECRET=your-key-secret

Try it on the free tier

9M messages a month, presence, history, and the Pusher-compatible API are all on the free plan. No card required.