> For the complete documentation index, see [llms.txt](https://herd-security.gitbook.io/herd-security-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://herd-security.gitbook.io/herd-security-docs/hris-and-erp/hris.md).

# HRIS Integrations (Workday, BambooHR & Rippling)

## Overview

Herd's HRIS integrations pull **read-only employment signals** from your HR system once a day:

* **Leave of absence** — employees on leave are automatically placed on the do-not-disturb list, so trainings, reminders, and nudges pause while they're out. When they return, they're taken off the list, their outstanding due dates shift by the time they were away (no pile-up of "overdue" work on day one), and Herd sends a single catch-up reminder for anything genuinely past due.
* **Hire date** — kept current for onboarding and reporting.
* **Employment status & terminations** — status stays current, and terminated employees are flagged.

Manager and department stay owned by your identity provider — the HRIS never overrides them. Herd never writes anything back to your HR system, and one HRIS connection is active per organization (connecting a second replaces the first).

All three integrations — **Workday**, **BambooHR**, and **Rippling** — live under **Settings → Integrations**, in the **HRIS & ERP** section.

***

## Connecting Workday

Herd reads from a **Workday custom report** (RaaS) via a dedicated Integration System User. Expand **Workday Connection Settings** and provide:

* **Workday Tenant Base URL** — your Workday RaaS base URL (HTTPS only), for example `https://wd2-impl-services1.workday.com/ccx/service/customreport2/acme`.
* **Report Path** — the custom report's path relative to the base URL. Point it at a **read-only report** exposing leave status, hire date, and employment status.
* **Integration System Username** / **Integration System Password** — a dedicated Integration System User (ISU) with read-only access to that report. The password is stored encrypted and never displayed again.

Click **Save Workday Configuration** to connect.

***

## Connecting BambooHR

Expand **BambooHR Connection Settings** and provide:

* **Company Domain** — just the subdomain: `acme` for `acme.bamboohr.com`.
* **API Key** — an API key created by a dedicated **read-only** BambooHR user. Stored encrypted and never displayed again.

Click **Save BambooHR Configuration** to connect.

***

## Connecting Rippling

Herd connects to Rippling with a single credential — expand **Rippling Connection Settings** and provide:

* **API Token** — a **read-only** Rippling API token with access to workers and leave requests. Stored encrypted and never displayed again.

There's no URL to configure — Herd talks to Rippling's fixed API endpoint. Click **Save Rippling Configuration** to connect. The sync is read-only and pulls employee records (including future hires), start dates, departments, managers, termination flags, and approved leave requests.

{% hint style="info" %}
**Future hires are handled sensibly.** Workers created in Rippling ahead of their start date are matched but don't receive any training until their start date arrives — the hire date, not the employment status, gates delivery, so onboarding trainings follow your onboarding-delay setting from day one.
{% endhint %}

***

## Monitoring the sync

Once connected, Herd syncs daily; use **Sync now** to pull immediately. The tile shows the last sync, its duration and status, and outcome counts: **Matched**, **Updated**, **On leave (suppressed)**, **Returned (cleared)**, **Terminated (flagged)**, and **Unmatched** (rows Herd couldn't match to a user).

{% hint style="info" %}
**If the HRIS starts rejecting Herd's credentials**, the tile shows an **"Auto-sync paused"** warning with the provider's error and the next automatic retry time. Once an admin fixes the missing permissions on the HR side, click **Sync now** to resume immediately — a successful manual sync clears the pause.
{% endhint %}

### Disabling

Click **Disable** on the tile to stop the sync. Employment data already synced is kept, but leave-of-absence suppressions stop updating until you reconnect.
