---
url: https://docs.seen.io/legacy/journey/webhook-node.md
description: >-
  Legacy Journey Webhook Node reference, covering request setup, headers,
  retries and authentication methods.
---

# Webhook Node

::: warning Legacy
This is part of the legacy Platform documentation.
:::

In Seen's legacy Journey builder, the Webhook Node allows you to make requests with your data from Seen Platform to your systems after the video has been rendered.

To create a Webhook, drag and drop the Webhook Node to the Canvas, connect it to the previous node, configure your webhook, and click **Save**.

::: info
Remember to add the Webhook Node **after** the [Player node](./player-node).
:::

The configuration menu consists of the following details:

## General

### URL

With the URL field, you will be able to define the endpoint of the request.

You can use any properties in your Workspace to personalise the endpoint URL. This can be useful in cases where you are required to use (e.g.) an ID as a part of the endpoint.

## Method

With the Method dropdown, you will be able to define the request method.

Currently we support the following methods: `POST, GET, PUT, DELETE, PATCH`

## Headers

With the Headers field(s) you will be able to add headers for your request as key-value pairs. You can add multiple Headers by clicking the **Add a header** button.

You can use any properties in your Workspace as the key or the value of the Header.

## Request content

You are able to create your request content as JSON.

You can use any properties in your Workspace within the request content.

The dynamic content for the request is divided into two menus:

* **Variables** – You will find all your Workspace properties in this menu.
* **Outputs** – You will find the Journey specific outputs in this menu: **Player link**, **Email thumbnail link**.

## Timeouts & Retries

Seen will wait up to **5 seconds** for your endpoint to respond. If no response is received within this window, the request is considered failed.

If a request fails due to a timeout or a non-2xx response code, Seen will **retry the same request up to 5 times**.

### Best Practice: Respond First, Process Later

Your webhook endpoint should follow a "fire and forget" pattern. Return a `200 OK` response **immediately** upon receiving the request, then handle any heavy processing asynchronously in the background.

If your endpoint performs slow operations (database writes, API calls to other services, sending emails) before responding, you risk exceeding the 5-second timeout, which triggers unnecessary retries and potentially duplicate processing.

**Recommended approach:**

1. Receive the webhook request
2. Return `200 OK` immediately
3. Process the payload asynchronously (e.g. via a message queue or background job)

## Security

### No Authentication

Use this if you are using an endpoint with no authentication header.

### Basic Auth

Sends requests with username and password authentication. Requires HTTPS for security.

### OAuth

OAuth 2.0 Client Credentials flow for server-to-server authentication. The system will automatically request and manage access tokens using the provided credentials.

Fill out the following fields to configure OAuth authentication:

* **Token URL**
* **Client ID**
* **Client Secret**
* **Grant Type**
* **Scope**

### JWT to Token

JWT to Token flow for server-to-server authentication. The system will automatically request and manage access tokens using the provided credentials.

Fill out the following fields to configure JWT to Token authentication:

* **JWT Token**
* **Token URL**
* **Method** (`POST, GET, PUT, PATCH`)
* **Token Key found on the response**: add the JSON key where the Token should be located in the response
