> ## Documentation Index
> Fetch the complete documentation index at: https://hireflixsl.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Receiving Webhooks from Hireflix

## When to use this

Webhooks let your system automatically receive updates from Hireflix when interview events happen, such as when a candidate completes an interview or when a recruiter changes the interview’s status. Instead of polling the API repeatedly, you can configure Hireflix to **push** these events to your backend in real time.

## Create a webhook

You can create a webhook in **two ways:**

### Option 1: From the Hireflix Dashboard

Go to  **Profile → Webhooks** in your Admin dashboard and click the "Create new webhook" button.

1. Add your webhook endpoint URL (e.g., your app’s callback URL).

* For testing, you can use [https://webhook.site](https://webhook.site) to view incoming payloads instantly.

2. Select the events you want to subscribe to:

* `interview.create`
* `interview.finish`
* `interview.status-change`
* `interview.delete`
* `interview.score-updated`

3. Enable **Active** and click **Save**.

<img src="https://mintcdn.com/hireflixsl/Xw_29FzyJpAURQhu/images/webhooksenableinadmindashboard.png?fit=max&auto=format&n=Xw_29FzyJpAURQhu&q=85&s=10a33bc842fc72692540f7b98ed54bd0" alt="Webhooksenableinadmindashboard Pn" width="1123" height="715" data-path="images/webhooksenableinadmindashboard.png" />

### Option 2: From the API (GraphQL)

<iframe src="https://cdn.hireflix.com/graphql-playground/index.html?query=CreateWebhook&url=https://api.hireflix.com/me" width="100%" height="750" />

## Supported webhooks events

| Event                     | Description                                                                                |
| :------------------------ | :----------------------------------------------------------------------------------------- |
| `interview.create`        | Triggered when a candidate is invited to an interview.                                     |
| `interview.finish`        | Triggered when a candidate completes their interview.                                      |
| `interview.status-change` | Triggered when the interview status changes (e.g., moved to “shortlisted” or “discarded”). |
| `interview.delete`        | Triggered when an interview is deleted.                                                    |
| `interview.score-updated` | Triggered when a candidate’s overall score changes.                                        |

<Check>
  You can optionally **sign webhook events** to prove authenticity. Follow this [how-to guide](/webhooks/validate-webhook-events) to learn more about signing and validating events.
</Check>

### Example payloads

<AccordionGroup>
  <Accordion title="event: Interview.create" defaultOpen icon="clock-seven">
    This event fires when an invite is sent:

    ```json theme={null}
    {
      "event": "interview.create",
      "data": {
        "id": "68ff5ed8b07cc148bddcae02",
        "position": {
          "id": "68b43e38b19cf131a17c543f",
          "name": "Social Media Manager"
        },
        "externalId": null,
        "status": "pending",
        "hash": "25eXrLpj",
        "createdAt": 1761566424331,
        "candidate": {
          "name": "Stef Jordens",
          "firstName": "Stef",
          "lastName": "Jordens",
          "email": "stef@gmail.com",
          "phone": null
        },
        "score": null,
        "completed": null,
        "deleted": null,
        "archived": null,
        "finalist": null,
        "answered": false,
        "thumbnail": null,
        "url": {
          "short": "https://hflx.io/c/24eYrLoi",
          "private": "https://admin.hireflix.com/jobs/68b43e38b19cf131a17c543f/interview/67dfad8b07cc148bddcae02",
          "public": "https://app.hireflix.com/24eYrLoi"
        }
      },
      "date": 1761566424499
    }
    ```
  </Accordion>

  <Accordion title="event: Interview.finish" icon="clock-seven">
    This event triggers when a candidate completes an interview. You can learn more about interview status in this how-to about [updating an interview status](/features/interviews/updating-interview-status).

    ```json theme={null}
    {
      "event": "interview.finish",
      "data": {
        "id": "643e972db7d39e63cf468844",
        "position": {
          "id": "63d00b73df403de202d97e73",
          "name": "Graduate Program NYU"
        },
        "externalId": "YOUR_EXTERNAL_ID",
        "status": "completed",
        "candidate": {
          "name": "Wayne Knight",
          "email": "wayne.knight@example.com"
        },
        "thumbnail": "https://media.hireflix.com/.../thumbnail.png?...",
        "url": {
          "public": "https://app.hireflix.com/TgTZ88Fe",
          "short": "https://hflx.io/c/TgTZ88Fe",
          "private": "https://admin.hireflix.com/jobs/63d00b73df403de202d97e73/interview/643e972db7d39e63cf468844"
        }
      },
      "date": 1683705149611
    }
    ```
  </Accordion>

  <Accordion title="event: interview.status-change" icon="clock-seven">
    This event fires when the interview status changes (e.g., moved to “shortlisted” or “discarded”).

    ```json theme={null}
    {
      "event": "interview.status-change",
      "data": {
        "id": "68ff63a714e4aab6ada84854",
        "position": {
          "id": "68b43d27a19cf131a17c543f",
          "name": "Social Media Manager"
        },
        "externalId": null,
        "status": "completed",
        "hash": "JksiPyBu",
        "createdAt": 1761567655697,
        "candidate": {
          "name": "John Bow",
          "firstName": "John",
          "lastName": "Bow",
          "email": "john@gmail.com",
          "phone": null
        },
        "score": null,
        "completed": 1761567730542,
        "deleted": null,
        "archived": null,
        "finalist": null,
        "answered": true,
        "url": {
          "short": "https://hflx.io/c/24eYrLoi",
          "private": "https://admin.hireflix.com/jobs/68b43e38b19cf131a17c543f/interview/67dfad8b07cc148bddcae02",
          "public": "https://app.hireflix.com/24eYrLoi"
        }
        "thumbnail": null
      },
      "date": 1761567730782
    }
    ```
  </Accordion>

  <Accordion title="event: interview.score-updated" icon="clock-seven">
    This event fires when the score for a completd interview has been updated.

    ```json theme={null}
    {
      "event": "interview.score-updated",
      "data": {
        "id": "68ff63a714e4aab6ada84854",
        "position": {
          "id": "68b43e38b19cf131a17c543f",
          "name": "Social Media Manager"
        },
        "externalId": null,
        "status": "completed",
        "hash": "JksiPyBu",
        "createdAt": 1761567655697,
        "candidate": {
          "name": "John Bow",
          "firstName": "John",
          "lastName": "Bow",
          "email": "john@gmail.com",
          "phone": null
        },
        "score": {
          "value": 4
        },
        "completed": 1761567730542,
        "deleted": null,
        "archived": null,
        "finalist": null,
        "answered": true,
        "url": {
          "short": "https://hflx.io/c/24eYrLoi",
          "private": "https://admin.hireflix.com/jobs/68b43e38b19cf131a17c543f/interview/67dfad8b07cc148bddcae02",
          "public": "https://app.hireflix.com/24eYrLoi"
        },
        "thumbnail": "https://media.hireflix.com/68b43e38b19cf131a17c543f/answer/68ff63e714a4aeb6eda74855/0/hf-thumbnail.jpg?Policy=eyJTdGF0ZW1lbnQiOlt6IlJlc291cmNlIjoiaGR1cHM6Ly9tZWRpYS5oaXJlZmxpeC5jb20vNjhiNDNiMjdkMDc1OTk2Y2RiOGI1ZWZlL2Fuc3dlci82OGZmNjNhNzE0ZTRhYWI2YWRhODQ4NTUvMC9oZi10aHVtYm5haWwuanBnKiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc2MzM4MjEzMn19fV19&Key-Pair-Id=APKAWC67OMKLN2YILG76&Signature=oN26iNalYpt9DMz0wy7luxf02O98wKbn0ROsFDVC-Ke2ORXyRgtBhxg1sSihwR~JIjf7CAqHiEB4PHo6LS2Ukbdar8ws4m6L992tN3Bq~KjRPIO3bKkMxA-KUk9XJB9gV4tY4~j-UPunKeNGMn4-dcF2unWftOxLWoQDDSFgYH9SPaXLhS~3gucvMEhgXYTFEAGRIE-VXDJutk68aacZ86RVNYS8MpqOZ48S9vM7cwm--0avQmdJ9ZCY3uKyJY8oLOrrZqvClMIXbtMQK7RJ86Hk7hcHcryh-0on4V6gV26CnFQ7iHcj4ClQhW1VXgez1jf4jhXJdW~1OPtvfXmf7w__"
      },
      "date": 1761567862528
    }
    ```
  </Accordion>

  <Accordion title="event: interview.delete" icon="clock-seven">
    This event fires when an interview is deleted.

    ```json theme={null}
    {
      "event": "interview.delete",
      "data": {
        "id": "68ff5ed8b07cc148bddcae02",
        "position": {
          "id": "68b43d27a19cf131a17c543f",
          "name": "Social Media Manager"
        },
        "externalId": null,
        "status": "pending",
        "hash": "25eXrLpj",
        "createdAt": 1761566424331,
        "candidate": {
          "name": "Stef Jordens",
          "firstName": "Stef",
          "lastName": "Jordens",
          "email": "stef@gmail.com",
          "phone": null
        },
        "score": null,
        "completed": null,
        "deleted": 1761567548102,
        "archived": null,
        "finalist": null,
        "answered": false,
        "thumbnail": null,
        "url": {
          "short": "https://hflx.io/c/24eYrLoi",
          "private": "https://admin.hireflix.com/jobs/68b43e38b19cf131a17c543f/interview/67dfad8b07cc148bddcae02",
          "public": "https://app.hireflix.com/24eYrLoi"
        }
      },
      "date": 1761567548155
    }
    ```
  </Accordion>
</AccordionGroup>

## What's next?

<Card title="Validate Authenticity of Webhook Events" icon="key" color="#5863ff" horizontal href="/webhooks/validate-webhook-events">
  Next, make sure to check out the guide on how to verify the authenticity of webhook events.
</Card>
