A webhook is an HTTP request that one service makes to another to deliver an event. Where polling means "the consumer asks repeatedly if anything changed", webhooks mean "the producer tells the consumer when something changes". Stripe sends webhooks on payment events; GitHub sends them on push, PR, and issue activity; Slack sends them on messages. The receiver is just an HTTP endpoint that accepts POST requests.
The producer holds a list of subscribed URLs and the events each subscriber wants. When an event occurs, the producer POSTs a JSON body (typically) to each subscribed URL with the event payload. The receiver responds with 2xx to acknowledge. If the receiver fails (timeout, 5xx), most producers retry with exponential backoff for some hours or days before giving up.
Security is signed headers: the producer signs the payload with a shared secret, the receiver verifies the signature before trusting the content. Without signing, anyone could POST fake events to your webhook URL.
Webhooks are the standard pattern for real-time integration between SaaS services. They eliminate polling overhead, reduce latency from minutes to milliseconds, and scale better. Almost every modern API offers webhooks alongside REST endpoints.
TerminalFeed's premium subscribe endpoint sends webhooks for price alerts, status changes, and custom event subscriptions.