FIFO Webhook

Export orders, returns, and credit payments via HTTP POST with guaranteed ordering and automatic retries.

Overview

The FifoWebhook connector sends order data to an HTTP endpoint, like the regular Webhook export, but with delivery guarantees the regular export does not provide:

  • Ordered delivery — each FifoWebhook connector has its own delivery queue. Messages are delivered one at a time, in the order they were exported.
  • Guaranteed delivery — failed deliveries are retried with an escalating delay until they succeed. While a message is failing, later messages wait in the queue, so your endpoint never receives updates out of order.

Use it when the receiving system depends on processing order updates in sequence, or must not miss updates while it is down.

Unlike the regular Webhook export, which posts the bare order object, the FIFO webhook posts an envelope that can also carry a shipment, a return, or a credited payment — see Request Format.


Setup

Step 1: Create the connector

Create a connector in Configuration → Advanced Settings → Connectors:

{
  "Name": "FifoWebhook",
  "ConnectorId": "erp-order-events",
  "DisplayName": "Order events to ERP",
  "Properties": [
    { "Key": "WebhookEndpoint", "Value": "https://erp.example.com/api/omnium/orders" },
    { "Key": "Authorization", "Value": "Bearer YOUR_API_TOKEN", "KeyGroup": "RequestHeaders" }
  ]
}
PropertyRequiredDescription
NameYesMust be "FifoWebhook"
ConnectorIdYesUnique ID for this connector. It identifies the delivery queue and appears as WebhookId in every delivery.
WebhookEndpointYesURL that receives the HTTP POST (set as a property)
Properties with KeyGroup: "RequestHeaders"NoSent as HTTP headers on every delivery — use for authentication

Request headers must be configured on the connector, not on the workflow step. Allow a few minutes after creating a new connector before deliveries start.

Step 2: Export orders and returns

Add an Export Order workflow step (or the return-side export step) that references the connector:

{
  "Connector": "FifoWebhook",
  "ConnectorId": "erp-order-events"
}

The step supports the same options as any Export Order step (StopOnError, ErrorStatus, RunAfterOrderIsSaved).

If you have multiple FifoWebhook connectors, always set ConnectorId on the workflow step. Each connector has its own queue and endpoint, and the ConnectorId determines which one receives the export.

Step 3: Export credit payments (optional)

To also receive a webhook whenever a payment is credited from Omnium, add ICreditPaymentExporter to the connector's Implementations:

{
  "Name": "FifoWebhook",
  "ConnectorId": "erp-order-events",
  "Implementations": ["ICreditPaymentExporter"],
  "Properties": [
    { "Key": "WebhookEndpoint", "Value": "https://erp.example.com/api/omnium/orders" }
  ]
}

No workflow step is needed — the export triggers when the payment is credited. The delivery contains the full order plus a top-level Payment object identifying the credited payment:

{
  "Order": {
    "Id": "ORD-12345",
    "Status": "Completed",
    "OrderLines": [ ... ]
  },
  "Payment": {
    "Id": "d3f1c2a4-...",
    "TransactionType": "Credit",
    "Amount": 499.00
  },
  "WebhookId": "erp-order-events",
  "TenantId": "acme"
}

The payment also appears in the order's own payment list — the top-level Payment tells you which payment the event is about.


Request Format

Omnium sends a POST request. Order is always included; fields that are not relevant for the event are omitted from the JSON. A typical order export:

{
  "Order": {
    "Id": "ORD-12345",
    "Status": "Completed",
    "OrderLines": [ ... ]
  },
  "WebhookId": "erp-order-events",
  "TenantId": "acme"
}
FieldPresentDescription
OrderAlwaysThe full order object
ShipmentShipment exportsThe shipment that triggered the export
ReturnOrderFormReturn exportsThe return that triggered the export
PaymentCredit payment exportsThe credited payment
WebhookIdAlwaysThe connector's ConnectorId
TenantIdAlwaysYour tenant ID

Determine the event type from which of the optional objects is present: a delivery with ReturnOrderForm is a return, with Payment a credited payment, with Shipment a shipment update, and with none of them a plain order update.

For very large orders the message also contains "IsMinified": true together with OrderId and, when relevant, ShipmentId, ReturnOrderFormId, and PaymentId. The Order object is still included — it is re-fetched just before delivery, so it reflects the latest state of the order.


Delivery and Retries

  • Any 2xx response counts as delivered. Respond quickly and process asynchronously if needed — see securing your webhook endpoint.
  • On failure, the delivery is retried with an escalating delay, starting at 1 second and growing to 60 minutes between attempts, until it succeeds.
  • Because delivery is ordered, later messages wait while a message is failing. A consistently failing endpoint blocks its queue — deliveries resume in order once the endpoint recovers.
  • Deliveries and failures are logged as order events, and the state of each FIFO webhook queue can be inspected in the Omnium queue viewer.

  • Export Order — the workflow step that triggers the export, and the regular (unordered) Webhook export type
  • Webhook Workflow Step — two-way webhook that can update the order from the response
  • Events & Webhooks — lightweight event notifications as an alternative to full order exports

On this page