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 & connections → Webhooks; each one carries the events you chose and a signing secret.

Settings → AI & integrations → Webhooks: what a webhook does, none yet, how to verify a delivery, and the New webhook button ringed.
Webhooks → New webhook: choose the events, and Seayora signs every delivery so you can prove it came from us.

Adding a webhook, changing where one sends or which events it carries, and showing its signing secret again ask for the same 6-digit confirmation code as the rest of Settings. Pausing or deleting one never does.

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 (18)

EventWhen it fires
listing.publishedA new rental listing went live and is publicly visible.
property.updatedRent, availability or listing copy changed.
work_order.createdA new maintenance job was opened.
work_order.updatedStatus, urgency, schedule or assignee changed.
work_order.completedA maintenance job was closed out.
task.createdA property-management task was added.
task.updatedA task changed status, priority or due date.
task.completedA task was marked done.
application.decidedAn application was pre-approved, accepted or rejected.
calendar_event.createdA showing, inspection or meeting was booked.
message.sentA message went out through the API.
iot.alert.raisedA connected device tripped a rule — a leak, a freeze risk, carbon monoxide — or stopped reporting.
iot.alert.resolvedA device alert cleared, automatically or by a person.
camera.event.raisedA camera rule with "Send to webhooks" fired — motion after hours, a person at the loading dock, a soft-trigger button pressed.
camera.event.updatedSomebody took, resolved or closed a camera event as a false alarm.
camera.status.changedA camera stopped sending video, or came back.
camera.mode.changedA property was armed, disarmed, or an incident started or ended.
automation.firedOne of your automations ran and chose to tell your webhooks — which rule, what happened and the record it was about.

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.

Explore Seayora