# HTTP Webhook Destination

{{< youtube iqViKYdUFIY >}}<br />

Many teams need to send events to destinations that require a custom integration - whether it’s an internal endpoint, a third-party service RudderStack doesn’t yet support, or a specialized API. 

Earlier, setting up a webhook destination required writing a custom [user transformation]({{< ref "transformations/overview.md" >}}), making it difficult for non-technical users to configure.

With our new [HTTP Webhook destination](https://www.rudderstack.com/docs/destinations/http-webhook/), you can now quickly and easily configure custom destinations without writing a single line of code.

## Key Features

- **Total control over event payloads**: Define the format and structure of the request.
- **Flexible authentication options**: Choose from various authentication mechanisms.
- **Batching support**: Send multiple events in a single request.
- **Dynamic configurations**: You can use JSON paths to customize:

    - Request payload fields by mapping values from incoming RudderStack events
    - Dynamic or static URL paths and query parameters
    - Dynamic or static custom headers

See [below](#whats-next) for more exciting new features coming soon.

## How this integration compares to the existing webhook destination

RudderStack’s [existing webhook destination](https://www.rudderstack.com/docs/destinations/webhooks/) provides flexibility but comes with several limitations:

- **Requires coding**: You must write a JavaScript or Python [transformation]({{< ref "transformations/overview.md" >}}) to structure the request.
- **No built-in dynamic fields**: Dynamic URLs, headers, and query parameters all require coding.
- **Limited payload formats**: This integration only supports JSON as the request format.
- **No native batching**: You must send event to the endpoint individually.

{{< success >}}
The new [HTTP Webhook destination](https://www.rudderstack.com/docs/destinations/http-webhook/) removes these barriers, making it much easier for users to send events without much developer involvement.
{{< /success >}}

## What’s next?

This **Beta release** is just the beginning! We are already working on several enhancements to make the HTTP Webhook destination even more powerful.

### Upcoming features 🚀 

- **Event previewer**: See how your events look in real time as you configure the destination.
- **Conditional routing**: Customize request types, payload formats, and endpoints based on event type (for example, different endpoints for `identify` vs. `track` events).
- **Custom code support**: Optionally add JavaScript for more granular control over payload formatting.
- **Enhanced batching**: Greater flexibility for APIs with strict batching requirements.
- **OAuth Authentication**: Expanding authentication options beyond the basic headers.
- **Failure Handling**: Define retry logic and error-handling based on the response status codes.

We’re excited to continue evolving this product and look forward to your feedback!

## Get started

You can set up your first HTTP Webhook destination with just a few simple steps:

1. **Create a new destination** in RudderStack and select **HTTP Webhook**.
2. **Enter the base destination URL** where you want to send events (for example, your API endpoint).
3. **Choose your request format** (JSON, XML, or Form) and define how your event payload should be structured.
4. **Set authentication** if required - RudderStack supports various authentication mechanisms like Bearer Tokens, API keys, Basic Auth, etc.
5. **Map event fields dynamically** using JSON paths to configure query parameters, headers, and the request body.
6. **Send a test event** to validate your setup and ensure your events are formatted correctly.

See our [HTTP Webhook destination documentation](https://www.rudderstack.com/docs/destinations/http-webhook/) for detailed steps on setting up and using this integration. You can also watch our demo video [here](https://www.youtube.com/watch?v=iqViKYdUFIY) for a step-by-step walkthrough and see how easy it is to configure a custom destination in minutes.

## Screenshots

{{< image src="images/releases/http-webhook-beta/settings.png" >}}

{{< image src="images/releases/http-webhook-beta/request-url.png" >}}

{{< image src="images/releases/http-webhook-beta/request-body.png" >}}

