Skip to main content
A 2xx response acknowledges a webhook delivery. A non-2xx response or transport failure does not acknowledge it. Delivery is at least once: your receiver can see duplicates, and delivery order is not guaranteed.
If your endpoint restricts source IPs, allowlist the following Immoteur egress IPs before testing:51.38.208.80 and 54.37.96.165.

Receive a webhook safely

Keep the HTTP handler small. Do not run slow business logic, enrichment, or downstream API calls before acknowledging the request.
  1. Read X-Immoteur-Event-Id and use it to persist or durably enqueue the event idempotently before acknowledging it.
  2. Return 204 No Content or another 2xx response as soon as that work is safe.
  3. Process the event in your own worker or queue after the HTTP response. The queue and worker are your integration architecture, not an Immoteur service.

Timeouts

Immoteur currently applies a 5 seconds connection timeout and a 5 seconds request timeout. A receiver that waits for slow work can time out before it acknowledges the delivery. Persist or enqueue first, then return a successful response quickly.

Read the delivery headers

Do not promise replay, exactly-once delivery, or arrival order. The classified-notification event ID is retained across retries and should be used for idempotency. Export chunks do not promise event-ID stability, so process an export according to its exportId, exportType, item identifiers, and completion signal. exportType has the same effective value on every data batch and terminal completion message; it distinguishes a Full export (full) from a Delta export (delta) without exposing the requested mode or fallback reason.

Retries and circuit breaking

A non-2xx response, including a 4xx, is not a successful acknowledgement. An export can have multiple delivery attempts and chunks; do not assume a fixed chunk size or strict order. Immoteur applies the appropriate retry policy after an unacknowledged delivery. When 1,000 retry events are in flight for one service, its circuit opens for 10 minutes. Deliveries for that service are skipped during the cooldown and are not automatically replayed. Make the receiver recoverable: retain enough state to deduplicate retries and use a later export to reconcile data after a circuit outage. Configure the endpoint and filters in Configure Immoteur webhooks. Use Mirror classified data for the full export, live notification, and delta-export integration flow. Use API reliability for API rate-limit headers.