Outbound webhooks are available on Team and Enterprise plans.
Prerequisites
- A RabbitMQ instance reachable over AMQP from the public internet
- An AMQP connection URI that includes credentials and the virtual host
- A routing key that resolves to the queue you want to consume from
- A RabbitMQ user with configure, write, and read permissions scoped to that virtual host
Configuration
Transformation contract
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 returns an array of strings:
payloads becomes a separate RabbitMQ message. The default transformation serializes each event:
message.sent event is published as a single message whose body contains both the event type and the Novu payload:
Novu example
Consumers usually want the event type and the message fields at the top level so they can route without walking the nested payload. Novu message fields are underpayload.data.object:
input.events.length to filter events in the transformation, or a single string to combine a batch into one message. The connector publishes each returned string separately and does not guarantee ordering, so consumers should treat messages as independent.
Configure in the Dashboard
1
Prepare RabbitMQ
Create the required RabbitMQ routing and credentials. Confirm the connection URI works from a network location allowed by your RabbitMQ deployment.2
3
Enter connection details
Enter the URI and Routing key.4
Configure the transformation
Start from the provided template. Return one serialized string inpayloads for each RabbitMQ message you want to publish.5
Select event types
Choose the event types to publish. Ensure the transformation returns a valid string for every selected event.6
Test the endpoint
Create the endpoint. In Testing, send an example for a subscribed event type. Confirm success in Logs, then consume from the bound queue and compare the message body with the transformed payload.Verify delivery
Read one message from the destination queue without acknowledging it:Troubleshooting
- The connector cannot connect: Check the URI scheme, host, port, credentials, and encoded virtual host. Confirm the RabbitMQ service is reachable.
- Authentication or authorization fails: Confirm the URI credentials are active and allowed to publish through the configured virtual host and routing.
- Delivery succeeds but no queue receives a message: Check that the routing key is bound to the intended queue.
- RabbitMQ receives invalid content: Return strings in
payloads. UseJSON.stringifyfor JSON message bodies. - A selected event is absent: Confirm the transformation creates one
payloadsentry for that event and review the endpoint event selection.