Back to tools

How to generate a webhook URL

1

Select platform

Choose Slack, Discord or Microsoft Teams as the platform for your webhook.

2

Enter the base URL

Paste the webhook URL provided by the platform (Slack Incoming Webhook or Discord Webhook URL).

3

Customize the message

Configure text, channel, username, emoji or avatar for your webhook message.

4

Generate and use

Click generate to create the complete webhook URL and use it in your scripts or services.

What is a webhook?

A webhook is a web development method that allows augmenting or altering the behavior of an application through user-defined custom callbacks. The term was coined by Jeff Lindsay in 2007, derived from the programming concept of a hook. Unlike traditional APIs where the client polls the server, webhooks work in reverse: the server notifies the client when a specific event occurs.

When the event occurs, the source platform makes an HTTP request (typically POST) to the configured webhook URL. This enables service integration without additional infrastructure, simply by receiving data at a public endpoint.

Supported platforms

  • Slack: Incoming Webhooks, you can add parameters like text, channel, username and icon_emoji
  • Discord: Discord Webhooks, supports embeds and avatar customization
  • Microsoft Teams: Incoming Webhooks with adaptive card format
  • Custom: Any webhook URL with query string parameters

Common Use Cases

  • Continuous Integration/Deployment (CI/CD): Platforms like GitHub and GitLab send webhooks to Jenkins, GitHub Actions, or other systems to trigger automatic builds on repository pushes.
  • Real-time notifications: Slack, Discord, and Microsoft Teams receive webhooks to deliver monitoring alerts, sales notifications, or error reports directly into team channels.
  • Data synchronization between services: Connect applications like Stripe, Shopify, or Salesforce to automatically update records when events such as payments, orders, or status changes occur.
  • Webhook authentication: Webhooks can be authenticated using HMAC signatures, shared tokens, or HTTP basic authentication to verify the request comes from the legitimate source and prevent spoofing or replay attacks.

Frequently Asked Questions

What is a webhook and how does it work?

A webhook is an HTTP callback that enables one application to send real-time data to another when a specific event occurs. It works in reverse compared to a traditional API: instead of your application constantly polling for changes, the webhook automatically notifies your endpoint via HTTP POST when something happens, such as a new Stripe payment, a GitHub push, or a monitoring alert.

What is the difference between a webhook and an API?

The key difference is who initiates communication. In an API, your application makes requests (pull) asking "is there new data?". With a webhook, the server sends data (push) automatically when an event occurs, requiring no polling. Webhooks are more efficient and faster for real-time notifications, but require a public endpoint and security measures like HMAC signatures.

How do I create a webhook in Slack or Discord?

In Slack: Go to your channel > Integrations > Incoming Webhooks > Activate and copy the URL. In Discord: Open channel settings > Integrations > Webhooks > New webhook and copy the URL. Our generator helps you build the complete URL with parameters like text, channel, username, and emojis, ready to use from any script.

What are practical webhook examples?

Common use cases: 1) CI/CD: GitHub sends a webhook to Jenkins on push to trigger a build, 2) Payments: Stripe notifies your backend when a payment completes or fails, 3) Monitoring: Prometheus alerts Slack when a server goes down, 4) Automation: A Shopify webhook updates your ERP when a new order is created, 5) ChatOps: A bot sends deployment notifications to Discord with the result.

How to sign a webhook with HMAC to verify authenticity?

HMAC (Hash-based Message Authentication Code) signing protects your webhook from spoofing. The sender computes an HMAC hash of the payload using a shared secret and sends it in a header (X-Hub-Signature, X-Slack-Signature, etc.). Your server recalculates the hash and compares them. If they match, the request is legitimate. To test it, generate a signed webhook with our HMAC Signature Generator, using SHA256 and your shared secret.

What is a webhook retry and how does it work?

A webhook retry is the automatic retry the sender performs when your endpoint does not respond (timeout) or returns an error (5xx code). For example, Stripe retries up to 3 times with exponential backoff (1 min, 10 min, 100 min). GitHub retries up to 6 times within 30 minutes. Your endpoint should be idempotent — able to handle the same webhook multiple times without duplicating actions — using a unique ID (X-Request-ID) to detect duplicates.