---
updatedAt: 2026-03-08T11:21:49.000Z
---

Fetch the complete documentation index at: https://apidocs.hibob.com/llms.txt. Use this file to discover all available pages before exploring further.

# Employee data Webhooks

Receive notificaions about employee updates

Employee data in Bob includes profile fields, tables (such as work history, bank accounts, and lifecycle), and custom fields. Webhooks notify your endpoint when employees are created, updated, or deleted, when table entries change, and when lifecycle status changes (e.g., joined, terminated, or on leave).

## Before you begin

* Explore [Getting started with Bob webhooks](/reference/getting-started-webhooks) to learn how to work with webhooks.

## Employee webhook events

There are three types of employee update events: Update event, table events and lifecycle events.

### Employee update events

| Event   | Type                                                                                  | Description                                    |
| :------ | :------------------------------------------------------------------------------------ | :--------------------------------------------- |
| Created | [employee.created](https://apidocs.hibob.com/reference/post_webhook_employee-created) | Triggered when an employee is created.         |
| Updated | [employee.updated](https://apidocs.hibob.com/reference/post_webhook_employee-updated) | Triggered when an employee's field is updated. |
| Deleted | [employee.deleted](https://apidocs.hibob.com/reference/post_webhook_employee-deleted) | Triggered when an employee is deleted          |

## Employee table events

Triggered when an entry is created or updated. Relevant to specific out-of-the-box tables.

| Event               | Type                                                                                        | Description                                                |
| :------------------ | :------------------------------------------------------------------------------------------ | :--------------------------------------------------------- |
| Table Entry Created | [table.entry.created](https://apidocs.hibob.com/reference/post_webhook_table-entry-created) | Triggered when an entry is added to an employee's table.   |
| Table Entry Updated | [table.entry.updated](https://apidocs.hibob.com/reference/post_webhook_table-entry-updated) | Triggered when an entry is updated in an employee's table. |

<Callout icon="🚧" theme="warn">
  **Table events behavior**

  1. Deleting a table entry will **not trigger** a webhook event.
  2. When adding or updating an entry in an employee table, this action will trigger the following events:

  <Table align={["left","left"]}>
    <thead>
      <tr>
        <th>
          Event
        </th>

        <th>
          Description
        </th>
      </tr>
    </thead>

    <tbody>
      <tr>
        <td>
          **`table.entry.created`**  **`table.entry.updated`**
        </td>

        <td>
          Will trigger when updating or creating an entry in an employee table, including out-of-the-box and custom tables.

          **Note**: The following tables **do not trigger** this event: `Training`, `Equity`, `Positions`, `Jobs`.
        </td>
      </tr>

      <tr>
        <td>
          **employee.updated**
        </td>

        <td>
          Will trigger only for the out-of-the-box **historical employee table** (with an effective date) when the effective date is reached - see Lifecycle events below for more details.

          **Note**: Custom tables will not trigger this event.
        </td>
      </tr>
    </tbody>
  </Table>
</Callout>

### Table entry events and employee.updated

When a table entry is created or updated, it may also update employee-level fields (for example, derived or linked fields). In that case you will also receive an **employee.updated** event with the list of changed field IDs in `fieldUpdates`. **Bank accounts and custom tables do not trigger this additional employee.updated event.** For payload examples (after lifecycle, work, salary, address, variable pay, entitlement, and other table changes), see the [employee.updated](https://apidocs.hibob.com/reference/post_webhook_employee-updated) webhook in the API reference.

## Employee Lifecycle events

Lifecycle events fire when an employee's **status** changes (e.g. joined, terminated, on leave). They are triggered only when the lifecycle entry becomes **effective**. To learn more, see [lifecycle status in Bob](https://help.hibob.com/hc/en-us/articles/4409776355857-Employee-lifecycle-status#h_01H95TQ2DCZ25SPT6R7CYCC0ZW).

| Event       | Type                                                                                                 | Description                                                                                      |
| :---------- | :--------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |
| Joined      | [employee.joined](https://apidocs.hibob.com/reference/post_webhook_employee-joined)                  | Triggered when an employee is granted access, once the lifecycle entry becomes effective.        |
| Terminated  | [employee.left](https://apidocs.hibob.com/reference/post_webhook_employee-left)                      | Triggered when an employee is set as terminated or on Garden leave, once the entry is effective. |
| Activated   | [employee.activated](https://apidocs.hibob.com/reference/post_webhook_employee-activated)            | Triggered when an employee's access is enabled, once the lifecycle entry becomes effective.      |
| Inactivated | [employee.inactivated](https://apidocs.hibob.com/reference/post_webhook_employee-inactivated)        | Triggered when an employee is set to on leave or terminated, once the entry is effective.        |
| On Leave    | [employee.temporaryLeave](https://apidocs.hibob.com/reference/post_webhook_employee-temporary-leave) | Triggered when an employee is set to temporary leave, once the entry is effective.               |

<Callout icon="🚧" theme="warn">
  **Notes:**

  * **Lifecycle events (Inactivated, Activated, Joined, Terminated, On Leave)** will be triggered automatically when the lifecycle entry becomes effective as part of Bob flows.
  * When triggered via the flow, the lifecycle events will be added to the lifecycle table and triggered **automatically at midnight** on the effective date of the lifecycle table entry. For example, if an employee is terminated with an effective date of **April 17**, the termination event will trigger at **midnight on April 18** (according to the site’s timezone).
  * To learn more, see [Handling scheduled employee changes](#handling-scheduled-employee-changes).
</Callout>

### How employee tables trigger events

When an employee's status is updated, Bob creates an entry in the relevant table with the date the change becomes effective (e.g., a promotion), and the status change event is triggered on that date.

When a scheduled change is added, Bob triggers the following webhook events:

1. **table.entry.created** – Fires immediately when a new entry is added to the relevant table.
2. **table.entry.updated** – Fires when changes occur in the existing entry.
3. **employee.updated** – Fires immediately if the new entry affects employee fields.
4. **Lifecycle specific events** – Some actions (e.g., an employee joining the company) trigger extra events like employee.joined at the effective date.

## Handling Employee events

1. The webhook sends a notification to your endpoint when an employee or table event is triggered. The payload includes `employeeId` and, for updates, the changed field IDs or table entry identifiers (`tableId`, `effectiveDate` or `id`).

2. **Retrieve the employee or table data**
   * Use the **employee ID** or **table name** and **entry identifier** to retrieve full details via the API.
   * For **employee.updated**, use the field IDs in the payload to retrieve the fields that were changed.
   * For **table.entry.created** or **table.entry.updated**, use the appropriate [Employee tables](https://apidocs.hibob.com/reference/employee-tables) endpoint. For **custom tables** only, the request includes a **`get-table`** header with the full URL to call to read that table entry (e.g. `https://api.hibob.com/v1/people/custom-tables/{employeeId}/{custom_table_id}`). For out-of-the-box tables the path is well known; for custom tables this header makes it easier to access the entry because the table ID (e.g. `category_1716214820047__table_1716214839517`) is already in the URL.

<Callout icon="🚧" theme="warn">
  **Notes:**

  * The payload of **employee.updated** includes only the **field IDs that were explicitly changed**. Calculated fields (e.g. age, shortBirthDate when birthDate changes) are **not** included; retrieve them via API if needed.
  * The payload of **employee.deleted** includes the employee **email**, since the record is no longer available after deletion. Use it to keep a reference to the deleted employee.
  * The payload of **Table entry events** uses **`effectiveDate`** for historical tables (e.g. work, employment, lifecycle, salary) and **`id`** for non-historical tables (e.g. bank accounts). Use the correct identifier when calling the table API to find the row
</Callout>

To learn more about employee data modeling and table types, see [Explore Employee data API](https://apidocs.hibob.com/docs/explore-employee-data).