Skip to main content

Finding out why an event was not delivered

Use this page when an outside system says it did not get an event, or got it late. You will use the Event monitor first, then the Delivery log.

Before you start​

  • You hold the role ADMIN and can open Enterprise.
  • You know what the event was about: the kind of record (for example a receipt) and its number, or about when it happened.

Steps​

  1. Switch to Enterprise and open Integration > Event Monitor.
  2. Filter by Entity (for example receipt) and Key (the receipt number). Find the event.
  3. No row at all? The event was never written. Go to "The event does not exist" below.
  4. Read Status and follow the table.
Status of the eventWhat it meansNext step
newThe delivery worker has not handled it yet. It takes up to 100 events every few seconds (5 by default).Wait a minute and press Refresh. If it stays new, the delivery worker may not be running: ask whoever runs the app server.
skippedNo active subscriber matched the event.Open Subscribers. Is the subscriber Active? A subscriber made on the screen matches every event. A built-in subscriber matches only its own events.
partialAt least one delivery is still waiting.Open the Delivery log (step 5).
failedAt least one delivery used up its tries.Open the Delivery log (step 5).
sentAll handled deliveries were sent. A poll subscriber is not counted.If the receiver says it got nothing, check whether the subscriber is a poll one: nothing is sent to it.
  1. Open Integration > Delivery Log. Filter Event ID with the id you saw. There is one row for each subscriber.
  2. Read the row:
StatusAttemptsHTTP CodeLast ErrorCause
pending0emptyemptyNot tried yet, or Max Retries is 0, or the subscriber is poll.
pending1 or moreanytextA try failed. The next try waits Retry Delay × 2^n seconds.
processinganyemptyemptyA try is running, or a worker stopped during it. After 60 seconds it can be taken again.
failedequals Max Retries500, 404, ...HTTP {code}: ...The receiver answered with an error. Fix the receiver.
failedequals Max Retriesemptya network error textThe receiver could not be reached, or did not answer in 30 seconds.
failed0emptyNo webhook URL configuredThe subscriber has no URL.
failed0emptyunknown delivery method {value}The subscriber's Delivery is queue or another value the worker does not know.
failed0 or moreemptyno internal handler registered for subscriber {code}An internal subscriber with a code the system does not handle.
sent1 or more200 to 299emptyDelivered. The receiver accepted it.

A failed delivery is not tried again. No retry button or API method for it was found in the code.

The event does not exist​

The event may not have been written:

  1. It is a record-change event (bio.{table}.{operation}). It is written only if the Event registry holds an active row with that exact code. Open the registry and check Active.
  2. It is a business event (process.*). The business command writes it in the same transaction as the change. If the command was refused or rolled back, there is no event. Check the business screen.
  3. It was written under another warehouse. The Warehouse column shows the storage name. Check you are looking for the right one.

The registry check does not apply to process.* events: switching them off in the registry does not stop them.