Skip to main content
A FIFO endpoint sends Novu webhook events to an HTTP receiver in strict first-in, first-out order. Novu waits for a successful acknowledgement before sending the next batch.
Outbound webhooks are available on Team and Enterprise plans.
Strict ordering limits throughput because one failed or slow batch blocks later batches. Use FIFO only when the receiver must process events sequentially.

Prerequisites

  • A publicly reachable HTTPS receiver
  • A receiver that can process the entire request body and return a successful HTTP response
  • Permission to manage webhook endpoints in the Novu environment

Configuration

Batching is configured on the endpoint rather than in the transformation. Use the labels and limits shown in your Novu Dashboard, and do not hard-code an assumed batch size in the receiver.

Transformation contract

FIFO transformations run once per batch. The handler receives one delivery batch:
  • input.events, an array whose length is capped by the endpoint batch size
  • input.events[].eventType, the Novu event type, for example message.sent
  • input.events[].payload, the webhook body
The webhook body wraps the resource in an envelope. payload.object is the resource type as a string, such as "message", and the resource itself is under payload.data.object. For message events, fields such as subscriberId and channel are therefore at event.payload.data.object. Other event families use different resource shapes, so guard extracted fields with defaults. It must return:
This verified example collects the batch into a single JSON request body:
The receiver gets one HTTP request whose raw body has this shape:
Your receiver must acknowledge the current batch successfully before the next batch can be delivered. The official FIFO documentation does not define a numeric batch default.

Configure in the Dashboard

1

Prepare the receiver

Create an HTTPS route that reads the raw batch body, completes processing, and returns a successful response only when the batch is safe to advance.
2

Add the endpoint

Open Webhooks in the Novu Dashboard, select Endpoints, click Add Endpoint, and choose .
3

Enter connection details

Enter the endpoint URL. Configure the batching controls shown in the Dashboard based on the maximum latency and batch size your receiver can handle.
4

Configure the transformation

Review the transformation. Ensure handler(input) handles every element in input.events and returns requestBody as a string.
5

Select event types

Choose the event types that require strict ordering. Avoid unrelated events that could block the same delivery sequence.
6

Test the endpoint

Create the endpoint. Send multiple examples from Testing and inspect Logs. Confirm the receiver gets each batch only after the preceding request succeeds and that the body matches the transformation output.

Verify delivery

Confirm the receiver logged one request whose body matches the transformed batch. Send two tests in sequence and verify the second request arrives only after the first returns a successful response.

Troubleshooting

  • Later events stop arriving: Inspect the earliest failed or timed-out batch. FIFO delivery cannot advance until the current batch succeeds.
  • The receiver cannot parse the body: Confirm the transformation returns requestBody as a string containing valid data for your receiver.
  • Throughput is too low: Review the Dashboard batching settings and receiver latency. Strict acknowledgement sequencing limits throughput by design.
  • Events inside a batch disappear: Ensure the transformation maps every input.events entry that the receiver needs.
  • Events arrive at the wrong endpoint: Confirm the endpoint URL and Novu environment before replaying failures.

Official references