# Webhooks

## Overview

Rippling Partner Applications have the option to provide a webhook URL for their application to receive event triggered notifications.

Webhooks are only available for use by app partners building integrations for listing in the Rippling App Shop.

Rippling supports both unauthenticated and authenticated webhook events. For authenticated webhook events, Rippling only supports sending a Bearer token in the authorization header. Rippling does not support Basic authorization header. You can choose to provide Rippling with a bearer token upfront that will be passed as part of every subsequent webhook event. Using a token is not mandatory.

Webhook events are emitted to the 3rd-party using a ~5 minute lag, and in certain situations or depending on the webhook used, partners can expect to receive one or multiple webhook events.

Rippling will make a POST to the Webhook URL that is configured in the _Integration > Webhook > Webhook URL_ field.

![webhooks1](https://developer.rippling.com/assets/images/webhooks1-45179d8bf6e21249f8bdecb2046238a2.png)

The POST will include the following form-encoded parameters:

| Parameter | Description |
| --- | --- |
| event\_name | The name of the event. Can include one of the following events: `employee.created`, `employee.updated`, `employee.deleted`, `employee.hired`, `employee.terminated`, `group.created`, `group.updated`, `group.deleted`, `company.updated`, `company.deleted`, `custom_info_field.created`, `custom_info_field.updated`, `custom_info_field.deleted`, `401_deductions.updated`, `leave_request.created`, `leave_request.updated`, `leave_request.deleted` |
| company\_id | Rippling ID of the company as a string. |
| company\_primary\_email | The email address of the primary company admin as a string. |
| id | Rippling ID of the the employee or group, if applicable. |

## Webhook formats

#### employee.created

This event is sent when an employee has been provisioned access to your app in Rippling. This is a recommended event to support for User Management. The output will look like this:

```json
event_name=employee.created&id=656992816f26d6caea00072c&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### employee.updated

This event is sent when an employee, who already has provisioned access to your app in Rippling, has information changed or updated on the employee object.

```json
event_name=employee.updated&id=656992a16f26d6caea000ce1&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### employee.deleted

This event is sent when an employee has had their access removed from your app in Rippling. This could be the result of either the employee being terminated, the admin changing the access rules such that the employee does not meet the criteria, or the admin has manually removed the employee's access from your app.

This event is a recommended event to support for user management:

```json
event_name=employee.deleted&id=656992a16f26d6caea000ce1&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### employee.hired

This event is sent when an employee has been hired into a company in Rippling.

```json
event_name=employee.hired&id=656992a16f26d6caea000ce1&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

The difference between `employee.hired` and `employee.created` is that an employee can be hired into a Rippling company, but that employee might not necessarily get provisioned with access to your app in Rippling. This is based off of Rippling's Access Rules that are configured as part the app installation process.

#### employee.terminated

This event is sent when an employee has been terminated from a company in Rippling.

```json
event_name=employee.terminated&id=656992a16f26d6caea000ce1&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### group.created

```json
event_name=group.created&id=6617fe6d45810a5e2fa0f6dd&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### group.updated

```json
event_name=group.updated&id=6617fe6d45810a5e2fa0f6dd&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### company.updated

```json
event_name=company.updated&id=656992806f26d6caeaffff9f&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### company.deleted

```json
event_name=company.deleted&id=656992806f26d6caeaffff9f&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

## FAQs

#### What are the differences between the leave request webhook events?

The `leave_request.created` webhook event is sent when a leave request has been created - regardless of the status. It can be sent when an admin created a leave request that is pre-approved or when an employee created a leave request that is in a pending state.

The `leave_request.updated` webhook event is sent when a leave request has been updated. A leave request can be updated when any of the following fields in a leave request changes:

-   `startDate`
-   `endDate`
-   `numMinutes`
-   `startDateStartTime`
-   `endDateEndTime`
-   `status`

The `leave_request.deleted` webhook event is sent when a leave request has been deleted - regardless of the status. It can be sent when an admin or an employee deletes/cancels a leave request.

#### How do I tell if a customer has uninstalled my app in Rippling?

Rippling will send this event when a Rippling customer has uninstalled your app. The webhook will look like this:

```json
event_name=company.deleted&id=656992806f26d6caeaffff9f&company_id=656992806f26d6caeaffff9f&company_primary_email=ripplingpartnerms%2Btestcompany123%40gmail.com
```

#### Why did I receive multiple webhook events?

In certain situations or depending on the webhook used, you can expect to receive one or multiple webhook events.

#### Is there a delay with webhooks?

There is a ~5 minute delay with webhooks.

In certain situations or depending on the webhook used, you can expect to receive one or multiple webhook events.

Need Support?

If you're a partner seeking answers or encountering difficulties while integrating with Rippling, please contact us at [partner.support@rippling.com](mailto:partner.support@rippling.com). Ensure our responses reach you by preventing emails from this address from being filtered into your spam folder.

Source: https://developer.rippling.com/documentation/developer-portal/v2-guides/webhooks

> For the complete documentation index, see [llms.txt](https://developer.rippling.com/llms.txt). Public pages have a Markdown version at the same URL with .md added.
