A webhook is an HTTP request that one system sends to a URL you choose when an event happens, so you learn about it immediately instead of polling.
How webhooks work
You register a URL with a service and choose which events you care about. When one happens, the service sends an HTTP POST to your URL with a JSON body describing the event. Your endpoint processes it and replies with a 2xx status.
Things to get right:
- Verify signatures: most senders sign the body with a shared secret, often HMAC-SHA256. Check it before trusting the payload.
- Respond quickly: do slow work in the background.
- Expect repeats: senders retry on failure, so handle duplicates with idempotency.
- Expect disorder: events can arrive out of order.
An example
GitHub sends a webhook when a release is published. A receiver reads the release notes and creates a draft post announcing it.
Why it matters for AI-agent publishing
Webhooks connect publishing to the rest of your stack in both directions: events that should start a post, and post outcomes that other tools need to know about.
SocialHandoff accepts inbound triggers from GitHub releases or any signed webhook, turning each into a draft for approval. It also sends outbound webhooks for post.published, post.failed, and approval.requested, so tools like n8n or Zapier can react. Set them up in the webhooks guide and see the release announcements use case.