POST request to a URL you control, with the event details in the body.
Available events
A webhook can be triggered by any of the following actions:| Event type | Triggered when |
|---|---|
contractCreated | A contract is created |
contractDeleted | A contract is deleted |
contractSigned | A contract is fully signed |
contractStatusUpdated | A contract’s status changes |
reminderEventCreated | A reminder is triggered |
Webhooks are personal. A webhook only fires for events that concern the member who
created it.
- The
contractCreatedwebhook only triggers if you are a participant of the contract. - The
reminderEventCreatedwebhook only triggers if the reminder is intended for you.
Create a webhook
Open the Webhooks settings
Go to My account → Integrations → Webhooks, or open it directly:
Open Webhooks settings
app.tomorro.com → Settings → Integrations → Webhooks
Configure it
- Name your webhook.
- Paste the URL that will receive the events.
- Select one or more triggers (the events that activate it).
- Click Create webhook.
Save your signing secret
A secret is generated for the webhook. Tomorro uses it to sign every event so you can
verify authenticity — keep it safe and use it to check the
Leeway-Signature header.Event payloads
Every webhook is delivered as an HTTPPOST with a JSON body. All events share the same
top-level envelope; the event-specific content lives under data.
Envelope
| Field | Type | Description |
|---|---|---|
eventId | string | Unique identifier of this event delivery (UUID). |
webhookId | string | Identifier of the webhook that produced the event (UUID). |
createdAt | string | ISO 8601 timestamp of when the event was created. |
eventType | string | One of the available event types. |
data | object | The event-specific payload (see examples below). |
The
data shape depends on eventType. Contract events wrap the contract under
data.contract. Always branch on eventType before reading data.Examples
contractCreated
contractCreated
contractStatusUpdated
contractStatusUpdated
Status-update events include the contract’s lifecycle fields (
status, dateStatus,
realEndDate, …) and the resolved attributes, where each attribute carries a human-readable
valueLabel in addition to its raw value.