broadcast.queued

A broadcast started sending, carrying the audience it resolved to and how many members it will reach.

Ability to subscribebroadcast:send

When this fires

A broadcast began sending. The audience has been resolved to a concrete set of recipients and the first message is on its way.

This fires for broadcasts started anywhere: the dashboard, the bot, the REST API, a Zap or an n8n workflow. The event is emitted by the sending job itself rather than by each entry point, so every route announces a broadcast identically.

This is the start, not the outcome. Delivery runs at roughly 28 messages a second to stay inside the platform's rate limit, so a large broadcast is still sending long after this arrives. Subscribe to broadcast.completed for the tallies.

Caveats

  • recipient_estimate is the count at the moment sending began. Someone who joins mid-send is not included, and someone who blocks the bot mid-send is still counted here but will appear in failed on completion.
  • A member is only a recipient if they have a linked chat on that project's bot. A member with no chat, or one attached to a different bot, is silently excluded, which is why the estimate can be far lower than the project's member count.
  • The message body is not in the payload. Broadcasts are not persisted, and a body can be up to 4096 characters of arbitrary creator content; repeating it on every subscribed endpoint would leak it to integrations that only need to know a send happened.
  • If the audience resolves to zero recipients this still fires, immediately followed by broadcast.completed with sent: 0.

Related events

  • broadcast.completed: the outcome, with sent and failed tallies.
  • Broadcasts: send one programmatically.

Header Parameters

SB-Signature*string

t=<unix seconds>,v1=<hex>: the HMAC-SHA256 of "<t>.<raw body>" under the endpoint's secret. Verify it before acting, and refuse a t more than 300 seconds from now. During a secret rotation a v0= signature under the previous secret may precede v1=.

SB-Event-Id*string

The event's ULID, bare. The envelope's id is the same ULID prefixed evt_, so strip the prefix before comparing. Deduplicate on it: a retry carries the same id.

SB-Event-Name*string

The event name, the same as the envelope's type.

Content-Type*string

Always application/json.

User-Agent*string

Always Subscriby-Webhooks/1.0.

Request Body

application/json

The signed JSON envelope posted to your endpoint.

TypeScript Definitions

Use the request body type in TypeScript.

The envelope every event is delivered in.

Response Body

Example Requests

POST/broadcast.queued

How is this guide?