Skip to main content

Webhooks

Warning

Webhooks are only available for enterprise accounts.

Webhooks are a technique of programming that allows a web application to receive real-time notifications of events from another application. In other words, webhooks allow two applications to communicate with each other.

Webhooks configuration

The webhooks are available only for organizations, so the events will be triggered when something happens in a resource owned by that organization.

The webhook configuration has 2 important fields:

  • url: The URL that will be used to send a webhook.
  • password (optional): This will allow webhook receivers to verify that the webhook is coming from TimeTime and not from a bad actor that discovered the webhook receiver URL. The password will be securely stored in TimeTime, and then appended as a header in each webhook delivery, the header name is X-TT-Webhook-Password.

Webhooks delivery order

TimeTime will send webhooks to your org one by one, reducing the chances of race conditions on your side. No webhooks will be sent if there is one webhook delivery in process.

Webhooks retries

TimeTime will perform 10 attempts to deliver a webhook. To allow your server recover from a temporary issue, TimeTime will apply an exponential backoff between retries. The initial delay will be 200ms, and it'll be doubling that till reaching the 10 attempts (with a maximum delay of 10 seconds).

After exhausting all the attempts, TimeTime won't try again to send this webhook, and it'll move on to the next one. Here we're making a decision in favor the "availability" over "consistency", we prefer to move one instead of "stopping the world" so your system keep receiving webhooks, at the chance of losing some of them.

TimeTime will securely store the webhook payloads, so if you missed some webhooks and really need them, contact us so we can consider retrying those ones.

Available webhooks

TimeTime offers webhooks for some events:

  • Calendar event changed: Triggered when a calendar event is created or updated.

Calendar event changed

The full documentation of the webhook payloads can be found here

{
"type": "CalendarEventChanged",
"new": {
"id": "5934c6a5-6f01-4223-8b4d-308af18be8dc",
"calendarId": "ae0e1585-a169-4e0a-bc8a-5a7a4ce7e62b",
"interval": {
"inclusiveStart": {
"dateTime": "2024-03-20T15:00:00+01:00",
"timeZone": "Europe/Madrid"
},
"exclusiveEnd": {
"dateTime": "2024-03-20T16:00:00+01:00",
"timeZone": "Europe/Madrid"
}
},
"status": "CONFIRMED",
"summary": "Some event",
"description": "Some event description",
"attachments": [],
"locations": [],
"attendees": [
{
"id": "460b4f91-87f8-4c03-8724-80a651e56976",
"invitation": {
"id": "27de4f27-46fb-4899-8ad4-bce8f3349afe",
"displayTimeMode": "EXACT",
"summary": "You have been invited to an event",
"subtitle": "Please accept or decline the invitation.",
"description": "Some invitation description"
},
"status": "ACCEPTED",
"organizer": false,
"email": "someone@example.com",
"displayName": null,
"comment": null,
"managementUrl": "https://app.timetime.in/i/27de4f27-46fb-4899-8ad4-bce8f3349afc"
}
],
"comments": [
"comment 1",
"comment 2 🤣"
],
"tags": {
"tag 1": "grande"
}
},
"semanticDiff": []
}