AnchorReal estate webhooks built for an idempotent listing-update receiver
Immoteur webhooks deliver selected live listing notifications to a receiver your team operates. They are useful when a system needs eligible listing updates without polling records one by one. The receiver must handle at-least-once, unordered delivery as part of its normal design.
AnchorUse live notifications for the right job
Configure one live service for notifications. Choose either classified-notification-single or classified-notification-batch. Set onlyNew to false on that service when it should receive eligible updates as well as new listings. A separate classified-export service is used for full and Delta exports.
This separation matters because a notification stream and a batch reconciliation have different payloads and completion rules. They can use the same receiver URL, but they should remain separate integration roles in your system.
AnchorPersist before you acknowledge
Send the complete request body and its service and event IDs to a customer-operated durable event queue. Return a successful 2xx response only after the queue has accepted that work durably. A worker can then update a CRM or another downstream system asynchronously, keeping slow downstream work off the receiver's request path.
The queue, worker, CRM, and update rules are part of the customer-operated integration architecture. Immoteur supplies the delivery contract, not a turnkey downstream application.
AnchorSeparate events from delivery attempts
Deduplicate a live-notification retry with a durable key composed of X-Immoteur-Service-Id and X-Immoteur-Event-Id. X-Immoteur-Delivery-Id identifies an HTTP attempt, so do not use it as proof of a new business event. Delivery order is not guaranteed.
If you coalesce or update records per listing, make the policy safe for duplicate, late, and unordered deliveries. Do not treat the last arrival as the newest source state or claim a globally ordered stream from the receiver's observed arrival order.
AnchorPair live updates with a baseline and reconciliation
For a local dataset, start with a full classified-export baseline and store source snapshots by classified identifier. Ingest notifications from the selected live service for prompt changes. Use compatible Delta exports to reconcile later changes.
An absent, expired, or incompatible export baseline can require a full export. Changing only the receiver URL preserves a compatible Delta baseline, while a changed filter scope does not.
AnchorHandle source observations carefully
meta.lastModifiedAt identifies a normalized source change, while meta.lastSeenAt records the most recent observed revisit. A last-seen change alone does not produce a live notification. An item absent from a later export is not automatically a deletion instruction.
AnchorImplement against the delivery guide
Read the webhook delivery guide for acknowledgement, retry, and header details. Read the local data mirror guide when a receiver also needs an export baseline. Create an account at Immoteur sign-up when you are ready to configure the service.
Customer-operated CRM workflow
Acknowledge only after a customer-operated durable event queue accepts the delivery.
A customer-operated durable event queue must accept the complete delivery before the receiver returns `2xx`. An asynchronous worker deduplicates retries using the `X-Immoteur-Service-Id` and `X-Immoteur-Event-Id` pair. If it coalesces work per `classified.id`, it compares source freshness such as `meta.lastModifiedAt` before overwriting, then writes the resulting update to the CRM.