# Webhooks & workflows

Cronofy tells your application when something happens, rather than your
application having to keep checking. Webhooks are sent to a URL your
application provides at each point in a meeting's lifecycle, so you can keep
your own records up to date and drive workflows from them. For example:

- Updating an applicant tracking system when an interview is booked

- Sending a confirmation or a survey once a time is chosen

- Sending a reminder by text or email ahead of a meeting

- Starting a payment flow after a coaching session

## Through the lifecycle
From the moment your application asks for a meeting to the transcript
arriving afterwards, there's a webhook at every step:

**A meeting's lifecycle**

Sequence diagram of a meeting's lifecycle between your application, Cronofy, and the recipient, with Cronofy sending your application a webhook at each step, from the time being chosen to the meeting's transcript being ready.

```mermaid
sequenceDiagram
autonumber
participant Your application
participant Cronofy
participant Recipient

Your application->>Cronofy: Create a Scheduling Request
Recipient->>Cronofy: Picks a time
Cronofy-->>Your application: Time chosen
Cronofy-->>Your application: Conference generated
opt Plans change
  Recipient->>Cronofy: Picks a new time
  Cronofy-->>Your application: Rescheduled
end
Cronofy-->>Your application: Event Trigger before the meeting
Cronofy-->>Your application: Meeting Agent joining
Cronofy-->>Your application: Meeting Agent recording
Cronofy-->>Your application: Transcript ready
Cronofy-->>Your application: Event Trigger after the meeting
```

1. Your application creates a Scheduling Request with Cronofy.
2. The recipient picks a time.
3. Cronofy sends your application a webhook that the time has been chosen.
4. Cronofy sends your application a webhook that the meeting's conference has been generated.
5. If plans change, the recipient picks a new time. This step and the next are optional.
6. Cronofy sends your application a webhook that the meeting has been rescheduled.
7. Cronofy sends your application an Event Trigger webhook at a set time before the meeting starts.
8. Cronofy sends your application a webhook that its Meeting Agent is preparing to join the meeting.
9. Cronofy sends your application a webhook that the Meeting Agent has started recording.
10. Cronofy sends your application a webhook that the Meeting Agent is complete, with the meeting's recording and transcript ready to download.
11. Cronofy sends your application an Event Trigger webhook at a set time after the meeting ends.


<table class="table--definitions">
	<thead>
			<tr>
					<th>Webhook</th>
					<th>When</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>[Scheduling Request webhooks](https://docs.cronofy.com/api-reference/managed-scheduling/scheduling-requests/webhooks/index.md)</td>
					<td>A Scheduling Request is booked, rescheduled, declined, or cancelled</td>
			</tr>
			<tr>
					<td>[Conferencing webhooks](https://docs.cronofy.com/api-reference/conferencing-and-transcription/conferencing-services/subscriptions/index.md)</td>
					<td>A meeting's conference is generated, or the event is written without one</td>
			</tr>
			<tr>
					<td>[Event Triggers](https://docs.cronofy.com/api-reference/calendar-control/event-triggers/index.md)</td>
					<td>A set time before or after a meeting starts or ends</td>
			</tr>
			<tr>
					<td>[Meeting Agent webhooks](https://docs.cronofy.com/api-reference/conferencing-and-transcription/meeting-agents/callbacks/index.md)</td>
					<td>A Meeting Agent joins a meeting, starts recording, completes, or fails</td>
			</tr>
	</tbody>
</table>
Similar webhooks are available across the rest of the infrastructure, such
as [Calendar Webhooks](https://docs.cronofy.com/api-reference/calendar-control/push-notifications/index.md)
for changes to the events in your users' calendars. Each reference page
covers how to subscribe, what's sent, and how quickly your application needs
to respond.

## Receiving webhooks
- Every webhook carries a `Cronofy-HMAC-SHA256` header, so you can
[check it came from Cronofy](https://docs.cronofy.com/api-reference/authorization/webhook-authentication/index.md).

- Respond with a `2xx` status quickly, and queue the work for later. A slow or
failed response is retried, so the same webhook can arrive more than once.

- Include an identifier in the webhook URL to know which of your users or
customers it relates to, as described in
[Identifying the account](https://docs.cronofy.com/api-reference/calendar-control/push-notifications/index.md).

- To test locally, forward webhooks to your machine with a tool such as
Hookdeck or ngrok; see [Testing locally](https://docs.cronofy.com/api-reference/calendar-control/push-notifications/index.md).

- Your webhook URL needs a valid HTTPS certificate; see
[Certificates](https://docs.cronofy.com/api-reference/calendar-control/push-notifications/index.md).


---
[Read in HTML](https://docs.cronofy.com/developers/temporal-grid/webhooks/)

## In this section

