The platform emits 17 public webhook event types organised
by category. Every row links to an auto-generated reference page with
the envelope shape, data schema, sample payload, retry behaviour, and
verification contract.
Source of truth: GET /api/v1/webhooks/events at
https://valara.cloud/api/v1/webhooks/events.
Appointment Lifecycle
| Event Type | Description | Page |
|---|
appointment.cancelled | An appointment was cancelled (via dashboard delete, via the Media Agency API, or as a side-effect of listing cancellation). | open |
appointment.orphan.detected | A Tour's stored Google Calendar event was not reconcilable with the owning agency's calendar (missing, moved, or malformed). | open |
appointment.rescheduled | An appointment was moved to a new date/time (dashboard reschedule or future API reschedule endpoint). | open |
appointment.scheduled | A photo/video shoot appointment was scheduled on the agency's Google Calendar (via order form, dashboard booking, or API). | open |
Billing
| Event Type | Description | Page |
|---|
invoice.payment_made | A Square invoice transitioned to PAID (customer-level invoice payment received) | open |
subscription.cancelled | An agency cancelled their subscription | open |
subscription.created | An agency started a new platform subscription | open |
Listing Lifecycle
| Event Type | Description | Page |
|---|
listing.cancelled | A listing was cancelled via API or dashboard | open |
listing.created | A new listing was created via API or dashboard | open |
listing.section_modified | Atomic update to a listing section (gallery, home, features, documents, matterport, floorplan) | open |
listing.status_changed | A listing's status transitioned (e.g. Active -> Sold) | open |
listing.updated | Listing metadata mutation (address, agents, selected propertyData sub-fields) | open |
| Event Type | Description | Page |
|---|
media.delivery.completed | Composio upload of listing media to the agent's cloud storage finished successfully. summary.files_failed may be > 0 in the partial-success case (some files uploaded, some files skipped) - this is still considered a completion. | open |
media.delivery.failed | Composio upload of listing media to the agent's cloud storage failed after exhausting all retries. NO files were uploaded (for partial-success, subscribe to media.delivery.completed instead - the summary there carries files_failed counts). | open |
User Lifecycle
| Event Type | Description | Page |
|---|
user.deactivated | A user was deactivated (is_active flipped to False) or suspended via the admin user management endpoints. | open |
user.hierarchy_changed | A user's managerId changed (within-agency reshuffle or cross-agency move). Emitted scoped to the new owning agency. | open |
user.signed_up | A new Better Auth user was provisioned under an agency hierarchy (admin-invoked create or invite flow). | open |
Envelope primer
Every event carries the canonical envelope documented on the
webhook overview page. Subscribe to a subset via the
event_types array on POST /api/v1/webhooks/endpoints; omit the
array to subscribe to every active type.
Events NOT listed here are part of the public deny list
and are intentionally unavailable via the public subscription surface.