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
1
Open the Webhooks settings
Go to My account → Integrations → Webhooks, or open it directly:
Open Webhooks settings
app.tomorro.com → Settings → Integrations → Webhooks
2
Add a webhook
Click Add a webhook.
3
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.
4
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
{
"eventId": "b21213e3-8a9a-4e04-9bfc-c4e53f123xxx",
"webhookId": "2a76094c-1f2e-48c8-a47f-1add41234xxx",
"createdAt": "2025-03-25T14:55:16.280Z",
"eventType": "contractCreated",
"data": {
"contract": {
"id": "6954ad41-19f3-446f-b0db-fcc661234xxx",
"name": "TestWebhook",
"organizationId": "115e926b-9c61-4172-8609-02212344exxx",
"author": {
"id": "974d2a1c-eb63-4237-877e-37d12341axxx",
"user": {
"id": "fd61234d-a4e1-4103-8d31-59e351d2bxxx",
"username": "user@example.com",
"firstname": "John",
"lastname": "Doe"
}
},
"referent": {
"id": "974d2a1c-eb63-4237-877e-37123451axxx",
"user": {
"id": "fd61234d-a4e1-4103-8d31-59e351d2bxxx",
"username": "user@example.com",
"firstname": "John",
"lastname": "Doe"
}
},
"referentId": "974d2a1c-eb63-4237-877e-37123451axxx",
"supervisorId": null,
"externalCompany": {
"id": "01611234-7cdf-4785-966e-ee06b74ccxxx",
"name": "My external company"
},
"priorNoticeDuration": "undefined",
"priorNoticeValue": null,
"renewal": "no",
"signatureDate": null,
"status": "draft",
"createdAt": "2025-03-25T14:55:14.690Z",
"updatedAt": "2025-03-25T14:55:14.000Z",
"documentId": null,
"typeId": null,
"templateId": null,
"contractAttributes": [
{ "attributeDefinition": { "name": "durationType" }, "value": "PERMANENT" },
{ "attributeDefinition": { "name": "endAt" }, "value": null },
{ "attributeDefinition": { "name": "externalPartyName" }, "value": "My external company" },
{ "attributeDefinition": { "name": "initialDuration" }, "value": null },
{ "attributeDefinition": { "name": "internalPartyName" }, "value": "John Doe" },
{ "attributeDefinition": { "name": "language" }, "value": "fr" },
{ "attributeDefinition": { "name": "nextRenewalDate" }, "value": null },
{ "attributeDefinition": { "name": "priorNotice" }, "value": null },
{ "attributeDefinition": { "name": "renewalDuration" }, "value": null },
{ "attributeDefinition": { "name": "renewalType" }, "value": "no" },
{ "attributeDefinition": { "name": "signatureDate" }, "value": null },
{ "attributeDefinition": { "name": "startAt" }, "value": null }
],
"attributes": {
"durationType": { "value": "PERMANENT", "name": "durationType", "attributeDefinitionId": "durationType" },
"endAt": { "value": null, "name": "endAt", "attributeDefinitionId": "endAt" },
"externalPartyName": { "value": "My external company", "name": "externalPartyName", "attributeDefinitionId": "externalPartyName" },
"initialDuration": { "value": null, "name": "initialDuration", "attributeDefinitionId": "initialDuration" },
"internalPartyName": { "value": "John Doe", "name": "internalPartyName", "attributeDefinitionId": "internalPartyName" },
"language": { "value": "fr", "name": "language", "attributeDefinitionId": "language" },
"nextRenewalDate": { "value": null, "name": "nextRenewalDate", "attributeDefinitionId": "nextRenewalDate" },
"priorNotice": { "value": null, "name": "priorNotice", "attributeDefinitionId": "priorNotice" },
"renewalDuration": { "value": null, "name": "renewalDuration", "attributeDefinitionId": "renewalDuration" },
"renewalType": { "value": "no", "name": "renewalType", "attributeDefinitionId": "renewalType" },
"signatureDate": { "value": null, "name": "signatureDate", "attributeDefinitionId": "signatureDate" },
"startAt": { "value": null, "name": "startAt", "attributeDefinitionId": "startAt" }
}
}
}
}
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.{
"eventId": "dcdfce0c-5914-42b2-bcda-ce53b0afbed7",
"webhookId": "a6493b01-0a87-4fd6-a851-8def5a76c9a1",
"createdAt": "2026-06-10T13:08:43.801Z",
"eventType": "contractStatusUpdated",
"data": {
"contract": {
"id": "b9ce25f0-9b85-4c31-acf4-e6311e95xxxc",
"name": "NDA - Adobe",
"organizationId": "392ef54d-dc59-41f6-8ef9-37c6a1b7xxx3",
"author": {
"id": "53a9760f-ad03-4f18-b7e0-a52fe303xxx7",
"user": {
"id": "b30bb4d4-007c-4a93-b2e7-0be8b0bxxx9f",
"username": "user@example.com",
"firstname": "John",
"lastname": "Doe"
}
},
"referent": {
"id": "53a9760f-ad03-4f18-b7e0-a52fe303xxx7",
"user": {
"id": "b30bb4d4-007c-4a93-b2e7-0be8b0xxx59f",
"username": "user@example.com",
"firstname": "John",
"lastname": "Doe"
}
},
"referentId": "53a9760f-ad03-4f18-b7e0-a52fe303xxx7",
"supervisor": null,
"supervisorId": null,
"externalCompany": {
"id": "e7d3d7d6-0f0b-4bdf-9233-7b7188aaxxx4",
"name": "Adobe"
},
"durationType": "FIXED_TERM",
"startAt": "2026-01-01T00:00:00.000Z",
"endAt": "2026-01-31T00:00:00.000Z",
"terminatedAt": null,
"priorNoticeDuration": "undefined",
"priorNoticeValue": null,
"renewal": "no",
"renewalType": "no",
"renewalDuration": null,
"renewalDurationUnit": null,
"isRenewable": false,
"signatureDate": null,
"status": "negotiating",
"dateStatus": "negotiating",
"nextRenewedDate": null,
"realEndDate": "2026-01-31T00:00:00.000Z",
"createdAt": "2026-06-10T13:07:40.997Z",
"updatedAt": "2026-06-10T13:08:43.000Z",
"typeId": "7591d403-53df-41d4-8d5d-ec56aad4e375",
"templateId": "74829184-734a-4f08-b0d5-9e36f67db126",
"contractAttributes": [
{ "attributeDefinition": { "name": "Adresse du cocontractant" }, "value": "a" },
{ "attributeDefinition": { "name": "Département" }, "value": "a05e7e8d-a149-4c38-85e2-12cfc79674de" },
{ "attributeDefinition": { "name": "Loi applicable" }, "value": "915a2d5f-b6ba-4b2d-a01e-c63932a4c783" },
{ "attributeDefinition": { "name": "Forme juridique du cocontractant" }, "value": "6917969e-3e7f-4cc8-a027-4f54cfce32ee" },
{ "attributeDefinition": { "name": "Richtext" }, "value": "[{\"type\":\"paragraph\",\"children\":[{\"text\":\"Sample text\"}]}]" },
{ "attributeDefinition": { "name": "Équipe" }, "value": "396c1bd9-7740-411f-bab4-854b995c2734" },
{ "attributeDefinition": { "name": "Montant" }, "value": "12000" },
{ "attributeDefinition": { "name": "Type de durée" }, "value": "FIXED_TERM" },
{ "attributeDefinition": { "name": "Date de fin" }, "value": "2026-01-31" },
{ "attributeDefinition": { "name": "Counterparty name" }, "value": "Adobe" },
{ "attributeDefinition": { "name": "Durée " }, "value": "1:month" },
{ "attributeDefinition": { "name": "Dénomination sociale de votre organisation" }, "value": "Acme Corp" },
{ "attributeDefinition": { "name": "Language of the document" }, "value": "fr" },
{ "attributeDefinition": { "name": "général Tomorro - Prochaine date de reconduction" }, "value": null },
{ "attributeDefinition": { "name": "Préavis" }, "value": null },
{ "attributeDefinition": { "name": "ID du projet" }, "value": "260600003" },
{ "attributeDefinition": { "name": "général Tomorro - Durée de reconduction" }, "value": null },
{ "attributeDefinition": { "name": "Type de reconduction" }, "value": "no" },
{ "attributeDefinition": { "name": "Date de signature du contrat-cadre" }, "value": null },
{ "attributeDefinition": { "name": "Start date" }, "value": "2026-01-01" }
],
"attributes": {
"0144e4a2-75ed-4893-954f-84686eb94ad6": { "value": "a", "name": "Adresse du cocontractant", "attributeDefinitionId": "0144e4a2-75ed-4893-954f-84686eb94ad6", "valueLabel": "a" },
"12caf9df-d15d-4267-88b6-29b0ca9e4659": { "value": "a05e7e8d-a149-4c38-85e2-12cfc79674de", "name": "Département", "attributeDefinitionId": "12caf9df-d15d-4267-88b6-29b0ca9e4659", "valueLabel": "Comptabilité / Finances" },
"14862943-7b0f-49ed-aa0a-33d1084fe1b6": { "value": "915a2d5f-b6ba-4b2d-a01e-c63932a4c783", "name": "Loi applicable", "attributeDefinitionId": "14862943-7b0f-49ed-aa0a-33d1084fe1b6", "valueLabel": "FR" },
"32dc2fd1-6048-43aa-bbde-bb9e2b19f740": { "value": "6917969e-3e7f-4cc8-a027-4f54cfce32ee", "name": "Forme juridique du cocontractant", "attributeDefinitionId": "32dc2fd1-6048-43aa-bbde-bb9e2b19f740", "valueLabel": "EI" },
"6dd82116-95a4-40a7-8100-4e9776d01d7f": { "value": "[{\"type\":\"paragraph\",\"children\":[{\"text\":\"Sample text\"}]}]", "name": "Richtext", "attributeDefinitionId": "6dd82116-95a4-40a7-8100-4e9776d01d7f", "valueLabel": "[{\"type\":\"paragraph\",\"children\":[{\"text\":\"Sample text\"}]}]" },
"96864b82-de02-43ad-8d68-1f60273d8aa5": { "value": "396c1bd9-7740-411f-bab4-854b995c2734", "name": "Équipe", "attributeDefinitionId": "96864b82-de02-43ad-8d68-1f60273d8aa5", "valueLabel": "Tech" },
"d6cf7bb4-c897-498c-85ec-cf02251e6f9d": { "value": "12000", "name": "Montant", "attributeDefinitionId": "d6cf7bb4-c897-498c-85ec-cf02251e6f9d", "valueLabel": "12000" },
"durationType": { "value": "FIXED_TERM", "name": "Type de durée", "attributeDefinitionId": "durationType", "valueLabel": "FIXED_TERM" },
"endAt": { "value": "2026-01-31", "name": "Date de fin", "attributeDefinitionId": "endAt", "valueLabel": "2026-01-31" },
"externalPartyName": { "value": "Adobe", "name": "Counterparty name", "attributeDefinitionId": "externalPartyName", "valueLabel": "Adobe" },
"initialDuration": { "value": "1:month", "name": "Durée ", "attributeDefinitionId": "initialDuration", "valueLabel": "1:month" },
"internalPartyName": { "value": "Acme Corp", "name": "Dénomination sociale de votre organisation", "attributeDefinitionId": "internalPartyName", "valueLabel": "Acme Corp" },
"language": { "value": "fr", "name": "Language of the document", "attributeDefinitionId": "language", "valueLabel": "fr" },
"nextRenewalDate": { "value": null, "name": "général Tomorro - Prochaine date de reconduction", "attributeDefinitionId": "nextRenewalDate", "valueLabel": null },
"priorNotice": { "value": null, "name": "Préavis", "attributeDefinitionId": "priorNotice", "valueLabel": null },
"projectIdentifier": { "value": "260600003", "name": "ID du projet", "attributeDefinitionId": "projectIdentifier", "valueLabel": "260600003" },
"renewalDuration": { "value": null, "name": "général Tomorro - Durée de reconduction", "attributeDefinitionId": "renewalDuration", "valueLabel": null },
"renewalType": { "value": "no", "name": "Type de reconduction", "attributeDefinitionId": "renewalType", "valueLabel": "no" },
"signatureDate": { "value": null, "name": "Date de signature du contrat-cadre", "attributeDefinitionId": "signatureDate", "valueLabel": null },
"startAt": { "value": "2026-01-01", "name": "Start date", "attributeDefinitionId": "startAt", "valueLabel": "2026-01-01" }
}
}
}
}