Pusher Beams
pusher.com · 2 records in Developer services · JSON
Records 2
- caveatPusher Beams
Developer servicesfree tieridentity emailno cardlimit volume-quotaevidence documentedstale on 2026-12-02
- caveatPusher
Developer servicesfree tieridentity emailno cardlimit request-rateevidence documentedstale on 2026-12-03
Pusher Beams
Developer services- Free allowance
- Beams Sandbox plan, priced Free: 1,000 subscribers (registered devices) and Standard support
- Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- emailno card, no phone
- Binding limit
- volume-quota1,000 subscribers (registered devices, counted as concurrent subscribers across all Beams instances for a given day)
- Evidence
- documented55 sources; a first-party page was read and the sentence quoted
- Freshness
- stale on 2026-12-02checked 2026-11-01 (live); stale on 2026-12-02
| Free tier | Beams Sandbox plan, priced Free: 1,000 subscribers (registered devices) and Standard support unit mixed; metered on object-count; A subscriber is a device registered to receive notifications. The count is the sum of concurrent subscribers across all Beams instances for a given day. A device counts from the SDK start call until the stop call, or until the platform gateway invalidates its token. Reinstalling an app on a device adds a new subscriber until the cleanup removes the old one. The pricing page names no notification count, and an older tutorial says a free plan can send unlimited push notifications to up to 1000 devices. The next plan is Startup at USD 29 a month for 10,000 subscribers. |
|---|---|
| Price | none stated |
| Limits |
A publish to interests names 1 to 100 interests and a publish to users names 1 to 1000 user IDs. A device holds at most 5000 interests and a user holds at most 100 devices per platform. The vocabulary has no kind for a count cap, so the subscriber cap is filed as volume-quota. |
| Binding | volume-quota The 1,000-subscriber cap is the only plan threshold on the pricing page, and it counts registered devices, not bytes, so a growing app meets it before the Publish API rate of 100 requests a second. |
| Identity | email The Pusher sign-up form asks for an email address and a password, or a GitHub or Google sign-in, behind an invisible reCAPTCHA, and has no phone or card field; a Beams instance is then created in the dashboard. Android delivery needs an FCM service account file from a Firebase project, iOS delivery needs an APNs key from an Apple Developer account, and Safari delivery needs a paid Apple Developer Program membership. The web SDK guide for Chrome, Firefox, Edge and Opera uses only the instance ID and secret key from the dashboard. |
| Egress | not stated: the pricing page lists subscribers and a support level and names no notification count, byte allowance or price per notification |
| Per-object cap | 10 KiB request body on a publish to interests; 200 KiB request body on a publish to users |
| Retention | An undelivered notification expires at the platform gateway after its time-to-live: at most 4 weeks on web push and FCM, and the payload expiration timestamp on APNs. A device registration stays until the SDK stop call or until the gateway invalidates the token (28 days) |
| Interface | rest Publish API: HTTPS POST to INSTANCE_ID.pushnotifications.pusher.com under /publish_api/v1/instances/INSTANCE_ID/publishes/interests or /publishes/users, with a JSON body and the instance secret key as a Bearer token. Devices register through the Android, iOS and Web SDKs, which call the Device API on the same host. |
| Tooling | Official client SDKs for Android, iOS, Web (JavaScript) and Flutter; official server SDKs for Go, PHP, Node.js, Python, Java and Kotlin, Ruby and Swift; or any HTTP client that posts JSON with the instance secret key. A web page needs a service worker file, served over HTTPS, that imports the hosted Beams worker script. |
| Composes with | A worker on any free compute service posts one HTTPS request to the Publish API to reach up to 1,000 registered browsers and phones, and Pusher Channels covers live updates to open pages. |
| Reliability | Over the subscriber cap a publish answers 402 after a 7-day notice period and no notification is delivered, while device registration still succeeds; Standard support has best-effort response times, and the status page lists Beams and the Beams dashboard as Operational on 2026-11-01. |
| Notes | Pusher Channels, the realtime messaging product of the same vendor, has its own record and its own Sandbox limits. The Beams pricing page labels this plan Sandbox; the tier names the product to tell it apart from the Channels Sandbox plan. The Beams docs also carry an Active Devices page that bills a Free plan on Monthly Active Devices over the last 30 days; a vendor post replaced that metric with concurrent subscribers, which the pricing page, the subscriber docs and the plan-limit article use. The newest tag of the web SDK repository is 2.1.0, dated 2025-01-17. Revisit when the pricing page changes the Sandbox subscriber count or drops the plan. |
| Evidence note | documented Every limit is quoted from first-party pricing, documentation and support pages. The Publish API host answered 405 to a GET on its POST-only route, and the hosted web service worker script answered 200. No notification was published, because publishing needs an instance ID and secret key, which only an account holds; a publish with a Sandbox key would move this record to measured. unverified: whether the first Beams instance asks for a card, how many instances a Sandbox account may hold and whether an idle Sandbox instance expires, because the Beams dashboard is behind a sign-up. |
| Parsed numbers |
|
Evidence 55
| date | source | what it proved |
|---|---|---|
| 2026-11-01 | pusher.com/beams/pricing/ | the Sandbox plan is Free with 1,000 subscribers, and Startup is USD 29 a month for 10,000 subscribers |
| 2026-11-01 | pusher.com/beams/pricing/ | the pricing page names the Sandbox plan as the free plan |
| 2026-11-01 | pusher.com/beams/pricing/ | Sandbox, Startup and Pro carry Standard support, and Business and Premium carry Premium support |
| 2026-11-01 | pusher.com/beams/pricing/ | Standard support has best-effort response times and Premium support targets 24 hours |
| 2026-11-01 | pusher.com/beams/pricing/ | the pricing page counts subscribers as the sum of concurrent subscribers across all Beams instances |
| 2026-11-01 | pusher.com/beams/pricing/ | the Sandbox plan call to action links to the Pusher account sign-up page |
| 2026-11-01 | pusher.com/beams/ | the Beams page offers a free sandbox plan that includes 1,000 subscribers |
| 2026-11-01 | pusher.com/beams/ | Beams reaches iOS, Android and web devices |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-are-beams-subsc | a subscriber is a device registered to receive Beams notifications |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-are-beams-subsc | subscribers are summed as concurrent subscribers across all instances for a given day |
| 2026-11-01 | pusher.com/docs/beams/concepts/subscribers/ | a device is a subscriber from the SDK start call until the stop call |
| 2026-11-01 | pusher.com/docs/beams/concepts/subscribers/ | a reinstalled app receives a new gateway token and counts as a new subscriber until the cleanup removes the old one |
| 2026-11-01 | pusher.com/docs/beams/concepts/subscribers/ | an uninstalled iOS app can stay in the subscriber count for up to a week |
| 2026-11-01 | pusher.com/blog/new-usage-metrics-and-more-self-serve-tiers- | the usage metric changed from Monthly Active Devices to the sum of concurrent subscribers across all instances |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-happens-when-i- | weekly usage notices start at 95% of the plan |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-happens-when-i- | past the plan, daily email alerts start and the account has 7 days to upgrade |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-happens-when-i- | after the notice period a publish answers 402 and no notification is delivered |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/limits/what-happens-when-i- | device registrations and subscriptions still succeed over the plan limit |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | the publish endpoint is per instance on pushnotifications.pusher.com |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | the Publish API authenticates with the instance secret key as a Bearer token |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | part of the text of Limits, above |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | part of the text of Limits, above |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | the Publish API allows 100 requests per second and answers 429 above that rate |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | a publish to interests takes a request body of at most 10 KiB |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | a publish to users takes a request body of at most 200 KiB |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-api/ | the Publish API answers 402 when an instance is over its plan limits |
| 2026-11-01 | pusher.com/docs/beams/concepts/device-interests/ | a device holds at most 5000 device interests |
| 2026-11-01 | pusher.com/docs/beams/concepts/authenticated-users/ | part of the text of Limits, above |
| 2026-11-01 | pusher.com/docs/beams/reference/publish-payloads/ | web push time-to-live is at most 2419200 seconds and defaults to 4 weeks |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/publishing/how-can-i-set-th | FCM holds an unreachable device's notification for at most 4 weeks, which is also the default |
| 2026-11-01 | docs.bird.com/pusher/beams/beams/publishing/how-can-i-set-th | APNs takes an expiration timestamp in the payload |
| 2026-11-01 | pusher.com/docs/beams/reference/all-libraries/ | official client SDKs exist for Android, iOS, Web (JavaScript) and Flutter |
| 2026-11-01 | pusher.com/docs/beams/reference/all-libraries/ | official server SDKs exist for Go, PHP, Node JS, Python, Java/Kotlin, Ruby and Swift |
| 2026-11-01 | pusher.com/docs/beams/reference/device-api/ | the Android, iOS and Web SDKs register devices through a Device API on the instance host |
| 2026-11-01 | pusher.com/docs/beams/getting-started/web/sdk-integration/ | the web SDK supports Chrome, Firefox, Edge and Opera |
| 2026-11-01 | pusher.com/docs/beams/getting-started/web/sdk-integration/ | web push needs an HTTPS site, with localhost as the only exception |
| 2026-11-01 | pusher.com/docs/beams/getting-started/web/sdk-integration/ | the web SDK needs a service worker file that imports the hosted Beams worker script |
| 2026-11-01 | pusher.com/docs/beams/getting-started/web/sdk-integration/ | the web SDK is configured with the instance ID from the dashboard Keys tab and no gateway credential |
| 2026-11-01 | pusher.com/docs/beams/getting-started/android/configure-fcm/ | Android delivery uses the account's own FCM credentials, a service account file |
| 2026-11-01 | pusher.com/docs/beams/getting-started/android/configure-fcm/ | the FCM setup starts in the Firebase console |
| 2026-11-01 | pusher.com/docs/beams/getting-started/ios/configure-apns/ | iOS delivery uses an APNs key that the account creates in an Apple Developer account |
| 2026-11-01 | pusher.com/docs/beams/getting-started/web/configure-safari/ | Safari push needs a paid Apple Developer Program membership |
| 2026-11-01 | pusher.com/tutorials/getting-started-pusher-beams/ | a Beams instance starts from a free sandbox Pusher account |
| 2026-11-01 | pusher.com/docs/beams/ | a Beams instance is created in the Pusher dashboard |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the sign-up form asks for an email address |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the sign-up form asks for a password |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the sign-up form is submitted through an invisible reCAPTCHA |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the sign-up also accepts a GitHub sign-in |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the sign-up also accepts a Google sign-in |
| 2026-11-01 | pusher.com/tutorials/push-notifications-android/ | an older tutorial says a free plan can send unlimited push notifications to up to 1000 devices |
| 2026-11-01 | pusher.com/docs/beams/concepts/active-devices/ | an older docs page still bills a Free plan on Monthly Active Devices over the most recent 30 days |
| 2026-11-01 | status.pusher.com/ | part of the text of Reliability, above |
| 2026-11-01 | github.com/pusher/push-notifications-web/tags | part of the text of Notes, above |
| 2026-11-01 | probe: https://js.pusher.com/beams/service-worker.js | the hosted web SDK service worker script answers 200 at js.pusher.com |
| 2026-11-01 | probe: https://00000000-0000-0000-0000-000000000000.pushnotifications.pusher.com/publish_api/v1/instances/00000000-0000-0000-0000-000000000000/publishes/interests | the Publish API route exists and answers a GET with 405, so it takes POST only |
Unknown values 1
- egress metered: egress metering was not published
Pusher
Developer services- Free allowance
- Channels Sandbox: 200k messages per day and 100 concurrent connections, free
- Verdict
- caveatusable, with a named limit or an unprobed read path
- Cost
- free tier
- Identity
- emailno card, no phone
- Binding limit
- request-rate200k messages per day per account, deliveries included
- Evidence
- documented28 sources; a first-party page was read and the sentence quoted
- Freshness
- stale on 2026-12-03checked 2026-11-02 (live); stale on 2026-12-03
| Free tier | Channels Sandbox: 200k messages per day and 100 concurrent connections, free unit requests; metered on request-count; A message is each API request plus each delivery to a connected client: a publish to 50 subscribers is 51 messages. Limits are counted per account, over all the apps it owns. A warning email goes out at 80% of a limit. Past the daily message limit every trigger request answers 403 over quota; past the connection limit new connections are rejected, and on Sandbox the connection limit is enforced at once (paid plans at 120%). One trigger request reaches at most 100 channels. |
|---|---|
| Price | none stated |
| Limits |
100 concurrent connections per account, enforced at once on Sandbox, and 100 channels per trigger request. The vocabulary has no kind for a concurrency cap. |
| Binding | request-rate A publish to n subscribers counts n + 1 against 200,000 a day, so a publish to 10 subscribers leaves about 18,000 publishes a day (200,000 / 11); a fan-out to more than 100 clients meets the connection cap first. |
| Identity | email The signup form asks for an email address and a password, or a GitHub or Google sign-in, behind an invisible reCAPTCHA; billing and card details are entered only when a plan is upgraded. |
| Egress | Each delivery to a connected client counts as a message against the 200k daily quota; no byte allowance is stated free allowance: 200k messages per day, deliveries included |
| Per-object cap | 10KB of event data per message; a larger event answers 413 |
| Retention | No message history by default; an opt-in cache channel keeps the last event in memory for at most 30 minutes or until a new event arrives |
| Interface | rest, unknown HTTP API at api-CLUSTER.pusher.com (for example api-mt1.pusher.com) over HTTP or HTTPS, each request signed with an HMAC SHA256 digest; clients hold WebSocket connections to ws-CLUSTER.pusher.com on port 80 for ws or 443 for wss, with an HTTP fallback transport, which the interface vocabulary has no term for. endpoint: https://api-mt1.pusher.com |
| Tooling | The pusher-js client and the Pusher server libraries, or any HTTP client that signs requests with the app secret. |
| Composes with | A notification fan-out from a worker to a browser dashboard, sized for about 18,000 publishes a day to 10 subscribers each. |
| Reliability | Over the daily message quota the HTTP API answers 403 and further publishes fail until the next day; connections over the limit are rejected at once on Sandbox. |
| Notes | Pusher Beams, the push-notification product, has its own Sandbox plan priced separately and is not part of this record. |
| Evidence note | documented Every limit is quoted from first-party pricing, documentation and support pages; the HTTP API host was probed and answered 400 to an unsigned request. No event was published, because publishing needs an app key and secret. A signed publish from a Sandbox app would move it to measured. |
| Parsed numbers |
|
Evidence 28
| date | source | what it proved |
|---|---|---|
| 2026-10-30 | pusher.com/channels/ | Sandbox is free with 200k messages a day and 100 concurrent connections |
| 2026-10-30 | pusher.com/channels/pricing | a message is each API request plus each delivery |
| 2026-10-31 | docs.bird.com/pusher/account-billing/account-billing/plans/h | message limits are aggregated over every app an account owns |
| 2026-10-30 | docs.bird.com/pusher/channels/channels/limits/what-happens-w | past the event limit every trigger request is refused |
| 2026-10-30 | docs.bird.com/pusher/channels/channels/limits/what-happens-w | past the connection limit new client connections fail |
| 2026-10-31 | pusher.com/docs/channels/using_channels/connection | connection limits are enforced at once on Sandbox |
| 2026-10-31 | pusher.com/docs/channels/using_channels/connection | clients use WebSockets with an HTTP-based fallback transport |
| 2026-10-30 | docs.bird.com/pusher/channels/channels/limits/what-is-the-me | an event carries at most 10KB of data |
| 2026-10-30 | docs.bird.com/pusher/channels/channels/events/does-channels- | Channels keeps no message history by default |
| 2026-10-30 | docs.bird.com/pusher/channels/channels/events/does-channels- | a cache channel keeps the last event for at most 30 minutes |
| 2026-10-30 | pusher.com/docs/channels/library_auth_reference/rest-api/ | the HTTP API is hosted per cluster, over HTTP or HTTPS |
| 2026-10-30 | pusher.com/docs/channels/library_auth_reference/rest-api/ | the HTTP API answers 403 when the app is over its message quota |
| 2026-10-30 | pusher.com/docs/channels/library_auth_reference/rest-api/ | one trigger request reaches at most 100 channels |
| 2026-10-30 | pusher.com/docs/channels/library_auth_reference/rest-api/ | requests are signed with an HMAC SHA256 digest |
| 2026-10-30 | dashboard.pusher.com/accounts/sign_up | the signup form asks for an email address |
| 2026-10-30 | dashboard.pusher.com/accounts/sign_up | the signup form asks for a password |
| 2026-10-30 | dashboard.pusher.com/accounts/sign_up | the signup form is submitted through an invisible reCAPTCHA |
| 2026-10-30 | dashboard.pusher.com/accounts/sign_up | the signup also accepts a GitHub sign-in |
| 2026-10-31 | docs.bird.com/pusher/account-billing/account-billing/plans/h | billing and card details are entered when a plan is upgraded |
| 2026-10-31 | probe: https://api-mt1.pusher.com/apps/1/channels | the HTTP API host answers and refuses an unsigned request |
| 2026-11-01 | pusher.com/docs/channels/library_auth_reference/pusher-webso | clients connect to ws-CLUSTER.pusher.com on port 80 for ws or 443 for wss |
| 2026-11-01 | probe: ws-mt1.pusher.com:443 | the WebSocket host of the mt1 cluster accepts a TCP connection on port 443 |
| 2026-11-01 | probe: https://api-mt1.pusher.com/apps/1/channels | the HTTP API host answers and refuses an unsigned request |
| 2026-11-01 | pusher.com/channels/pricing | a concurrent connection is a live connected user, counted across the whole Channels application |
| 2026-11-01 | pusher.com/docs/channels/library_auth_reference/rest-api/ | an event whose data exceeds 10KB is refused with a 413 error code |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the signup form asks for an email address |
| 2026-11-01 | dashboard.pusher.com/accounts/sign_up | the signup form is submitted through an invisible reCAPTCHA |
| 2026-11-01 | pusher.com/channels/pricing | the Sandbox plan is free with 200k messages a day and 100 concurrent connections, unchanged |