Webhooks
Get pushed an event when something changes instead of polling: the payload, signature verification, delivery guarantees and the event list.
A webhook is a URL of yours that Seayora POSTs to when something happens — a work order is created, a payment settles. Set them up under Settings → AI & integrations → Webhooks; each one carries the events you chose and a signing secret.
Payload
POST https://your-endpoint.example.com
Seayora-Event: work_order.created
Seayora-Delivery: 40213
Seayora-Signature: t=1786411896,v1=9f86d081884c7d…
{
"event": "work_order.created",
"created_at": "2026-08-11T01:31:00.000Z",
"account": "[email protected]",
"data": { "id": 318, "title": "Kitchen sink leaking", "urgency": "high" }
}Verifying
Compute HMAC-SHA256(secret, "<t>.<raw body>") and compare it to v1. Use the raw body, before any JSON parsing — re-serializing changes the bytes and the signature will not match. Reject anything whose t is more than a few minutes old to stop replays.
Delivery guarantees
- At least once. Answer 2xx quickly and process afterwards; if you answer slowly we retry and you will see the event twice. Deduplicate on Seayora-Delivery.
- Failures retry with growing gaps for roughly seven hours.
- Twenty consecutive failures pause the endpoint so it stops burning retries — resume it from the Webhooks screen once it is fixed.
Events (13)
| Event | When it fires |
|---|---|
| listing.published | A new rental listing went live and is publicly visible. |
| property.updated | Rent, availability or listing copy changed. |
| work_order.created | A new maintenance job was opened. |
| work_order.updated | Status, urgency, schedule or assignee changed. |
| work_order.completed | A maintenance job was closed out. |
| task.created | A property-management task was added. |
| task.updated | A task changed status, priority or due date. |
| task.completed | A task was marked done. |
| application.decided | An application was pre-approved, accepted or rejected. |
| calendar_event.created | A showing, inspection or meeting was booked. |
| message.sent | A message went out through the API. |
| iot.alert.raised | A connected device tripped a rule — a leak, a freeze risk, carbon monoxide — or stopped reporting. |
| iot.alert.resolved | A device alert cleared, automatically or by a person. |
Related guides
Related features and guides
- API Requests & Responses — Documentation. The response envelope, paging, the money and date conventions, and how writes work on the Seayora REST API.
- API Rate Limits & Error Codes — Documentation. The error shape, every stable error code and what to do about it, rate-limit headers, and how to retry well.
- Approvals: How an Assistant Proposes Changes — Documentation. Why a connected assistant usually proposes rather than performs, what the Approvals queue is, and the one action that can never be automated.
- Apartment & Rental Search — Feature. Search rentals by city, neighborhood, price, bedrooms, and amenities. Save homes, get alerts when something changes, and apply online in minutes with a reusable renter profile.
- Rental Listing Software — 60 Days Free, Then $9/Month — Feature. Advertise apartments, houses, condos, and townhomes for rent. Every listing gets its first 60 days free, then $9/month while the unit stays vacant — prorated daily and stopped the moment it rents. No brokerage fee, no setup fee, no subscription.