Lifecycle
What happens to a property from the moment you send it until it's no longer listed on Spot2.
Possible states
| State | What it means for you |
|---|---|
| New | The property appears in your feed for the first time. |
| Modified | The property already exists but some of its data changed (price, description, photos, etc.). |
| Unchanged | The property already exists and no data has changed since the last sync. |
| Deactivated | Its external_id appeared in the /properties/deleted endpoint. |
| Resurrected | The property was deactivated but reappeared in the main feed. |
When a property is published
A property is published when:
- It is new and passes all mandatory validations.
- It is modified and still passes all validations.
If the property fails a blocking rule, it does not continue and you receive the details in the feedback webhook. If it only fails DRAFT rules, it may continue as draft or with reduced visibility.
When a property is deactivated
A property is deactivated when its external_id appears in the deletion endpoint (/properties/deleted). This indicates the property was delisted in your CRM and should no longer be published.
It must also be deactivated when it remains active in your CRM, but the user no longer explicitly marks it to appear in Spot2.
Spot2 queries the deletion endpoint on each sync cycle. The delisting is immediate: the property is deactivated in the same cycle.
The absence of a property from the main feed is never interpreted as deletion. Only the deletion endpoint can deactivate properties.
More details in Deletion Protocol.
When a property is resurrected
If a property was deactivated and then reappears in your main feed with the same external_id, it is republished with the current data. It goes through all validations again before being published.
If the external_id changes, it is treated as a new property.
Fault tolerance
The incremental model is designed to tolerate failures:
- API returns empty (temporary bug): If Spot2 sends
updated_sinceand your API responds with 0 items, nothing is deleted. Absence is never deletion. - Timeout mid-pagination: The cycle is marked as failed. The next cycle retries from the same timestamp — no information is lost.
- Spot2 is down for N days: On return, it sends
updated_sincewith the last successful cycle's date. Your API returns all accumulated changes.