StreamLive Pro

What is a webhook? A web address that receives messages

What a webhook is: a private web address that gets a message when something happens. Incoming webhooks in Discord and Slack, event webhooks, and how to keep them safe.

Updated · 6 min read

A webhook is a web address that waits for messages. Instead of an app asking another app again and again "did anything happen?", the second app sends a short message to the webhook address the moment something happens. The address is usually long and random, and whoever knows it can send to it, so a webhook address should be treated like a password.

Webhooks go in two directions, and it helps to keep them apart:

Everyday examples

Webhooks run quietly behind many things you already use. For example:

In each case nobody presses a button to pass the news along. The first system knows something happened and tells the second one immediately.

Webhook compared with the alternatives

ApproachHow it worksGood for
WebhookThe service sends a message to your address when something happensInstant reactions, little traffic
PollingYour system asks the service every few minutesSimple setups where a delay is fine
API callYour system asks for something specific when it needs itReading data, taking actions
OAuth connectionAn app acts on your account with your approvalFull integrations, such as posting to YouTube. See What is OAuth? Connecting an account without a password

What a webhook message looks like

A webhook message is an ordinary web request, usually with a small block of JSON text:


POST https://example.com/hooks/streamlive
Content-Type: application/json

{"event": "stream.started", "data": {"stream_id": "...", "title": "Weekly class"}}

The receiving side reads the event name, does its job (posts a message, updates a sheet, starts a recording) and answers quickly that it received it.

Webhooks in StreamLive Pro

1. Posting to Discord and Slack (incoming webhooks). These two connect through a webhook instead of a sign-in. You create a webhook for one channel in Discord or Slack, paste its address into Connections, and the channel becomes a destination on Publish everywhere. When you connect Discord, the address is checked with Discord first; connecting Slack sends nothing to the channel. Discord takes text and one file; Slack takes text and links but no files. Step by step: Post to a Discord or Slack channel with a webhook.

The Connections screen (test account).
The Connections screen (test account).

2. Event webhooks (outgoing), on the Studio plan. In Settings, the "API & Webhooks" section has a Webhooks card: you type an https address, tick the events you want, and click "Add webhook". StreamLive Pro then sends a POST to that address on every event you ticked, signed with HMAC-SHA256. The signing secret is shown once, right after you add the webhook, so copy it then. The same card lists your webhooks and lets you delete them. On other plans the section explains that webhooks come with Studio: /pricing?lang=en.

EventSent when
stream.startedA broadcast starts
stream.endedA broadcast ends, with its length
payment.succeededA payment for the account goes through
subscription.canceledThe subscription is canceled
destination.disconnectedDuring a live, our health check (about once a minute) finds that the stream to one of your channels failed, and starts reconnecting it. Not ticked by default

The first three are ticked by default. Each event is sent once, with no retry, and a webhook that fails 20 times in a row is switched off. Rules that protect you: the address must be https and must point to a public server, not an internal one; there can be up to 10 per account; redirects are not followed. API keys are in the same section: API keys for developers: create, use and revoke.

Webhook or polling

A webhook pushes a message to you the moment something happens. Polling is the other way round: your system asks the service every few minutes whether anything changed. Polling is simpler to set up, needs no public address on your side, and nothing is lost if your server was down for a while, because you simply ask again. Its cost is delay and extra requests. A webhook is instant and quiet, but your server must be reachable, must answer quickly and must cope with a message arriving twice or not at all, so careful systems also poll now and then to catch anything missed. With StreamLive Pro you can do both: event webhooks on the Studio plan, and the API for anything you want to ask on your own schedule.

Keeping a webhook safe

  1. Treat the address as a secret. Anyone who has an incoming webhook address can post into your channel. Do not paste it in public chats, screenshots or shared documents.
  2. Use one webhook per purpose. If one leaks, you delete only that one.
  3. Delete and recreate a leaked webhook. In Discord and Slack you can delete a webhook and make a new one; then paste the new address in Connections.
  4. On your own server, check the signature. Reject messages whose signature does not match, and answer quickly; do slow work after replying.
  5. Expect repeats and gaps. Design the receiving side so that receiving the same event twice does no harm.

Before you create a webhook

  1. Decide which channel should receive the posts. A webhook belongs to one channel; a second channel needs its own webhook.
  2. Check you have the right permission. In Discord that is managing the channel's integrations; in Slack, adding an app to the workspace. If you do not see the option, ask the admin.
  3. Name the webhook clearly, for example "StreamLive Pro posts", so the admin knows what it is in a year.
  4. Paste it once and do not share it further.

Common problems

ProblemLikely causeFix
Posts stopped reaching a Discord or Slack channelThe webhook was deleted or the channel removedCreate a new webhook and paste it again
Discord refuses the addressIt is not a full Discord webhook addressCopy the whole address; it starts with https://discord.com/api/webhooks/
A file did not reach SlackSlack webhooks take no filesPost a link to the video instead
Your server receives nothingThe address is not https, not public, or redirectsUse a public https address that answers directly

Frequently asked questions

What is a webhook in simple words?

A private web address that receives a message automatically when something happens, so nobody has to keep checking.

Is a webhook URL secret?

Yes. Anyone who has an incoming webhook address can post to that channel. Keep it private and delete it if it leaks.

How do I post from StreamLive Pro to Discord?

Create a webhook in the Discord channel settings, paste its address in Connections, and choose the channel when you publish.

Can StreamLive Pro notify my own system when a live starts?

Yes, on the Studio plan: in Settings, "API & Webhooks", add your https address with the stream.started event. Messages are signed with a secret shown once, so your server can check they came from StreamLive Pro.

Keep reading

What is OAuth? Connecting an account without a password

What OAuth is: how one app gets limited access to your account on another service without your password. Tokens, scopes, why connections expire, how to revoke.

My StreamLive Pro API call fails: error codes and fixes

StreamLive Pro API errors explained: invalid or expired key, missing permission, plan limit, 409 conflicts, 429 and 5xx, plus the older uppercase key codes.

API rate limits, retries and Idempotency-Key

StreamLive Pro API rate limits per key, per account, for writes and for publishing; the RateLimit headers, what to do on 429, and safe retries with Idempotency-Key.

What ChatGPT and Claude cannot do in StreamLive Pro

The limits of ChatGPT and Claude in StreamLive Pro, with the reason for each and what to do instead: connecting networks, TikTok posts, uploads, approvals and more.

Want to try it? 7-day trial, no credit card.

Start free
Mobile app Home Help Center Guides PrivacyTermsAccessibility