Outbound webhooks are available on Team and Enterprise plans.
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 sizeinput.events[].eventType, the Novu event type, for examplemessage.sentinput.events[].payload, the webhook body
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:
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
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. Ensurehandler(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
requestBodyas 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.eventsentry that the receiver needs. - Events arrive at the wrong endpoint: Confirm the endpoint URL and Novu environment before replaying failures.