subscription.ended
Defined, not yet delivered. Build and test your receiver against the trigger; real deliveries start when the publisher ships.
A resident subscription has ended.
Read the Webhooks guide for signature verification, retries, and idempotency, and the event envelope for the fields every event shares.
Payload
data fields
These names match the subscription resource. provider and
serviceType are added so you can find your own rows. The payload is the subscription after the end.
Read the full record with GET /subscriptions.
Ordering
version is the ordering key. It increases on every write to the subscription row, not only on a write that
raises an event. The versions you receive are therefore not contiguous. A gap does not mean a missed event.
Dedupe on eventId, which is stable across retries. Order events for one subscription by version.
Ignore an event whose version is lower than the highest one you have applied.
Your rows only
Fortress delivers events for subscriptions of every provider. Act only on events whose provider is your own
slug. Ignore the others.
When it fires
subscription.ended is sent once for a subscription row, in any of these cases:
- The resident moves out.
- The household moves out.
- A collections claim ends the subscription.
- The property is disabled.
changeReason names the cause of the last change. Each trigger sets one value:
When it does not fire
- Fortress does not send it a second time for the same subscription row.
- A change to a live subscription raises
subscription.updated.

