Skip to main content

Prerequisites

Before continuing, you should have already completed the following for this connector:
1

Configure the Connector

Enable the connector and set up its connector profile in your project. See Managing Connectors.
https://stackone-logos.com/api/bamboohr/filled/png

Connector Profile

BambooHR - OAuth 2.0
https://stackone-logos.com/api/bamboohr/filled/png

Connector Profile

BambooHR - API Key
2

Link an Account

Connect an account using StackOne Hub or Auth Link.
https://stackone-logos.com/api/bamboohr/filled/png

Link Account

BambooHR - OAuth 2.0
https://stackone-logos.com/api/bamboohr/filled/png

Link Account

BambooHR - API Key

Subscribe via the StackOne dashboard

This connector uses Programmatic Webhooks. When you enable webhook events for a connected BambooHR account, StackOne automatically creates a single webhook (via POST /api/v1/webhooks) registered for the event types you enable, pointing at your StackOne callback URL.

1

Select event subscriptions in the dashboard

In the StackOne dashboard, open the BambooHR connector profile and enable the webhook events you want delivered downstream. See the Available Webhook Events section below for the full list.

2

Registration on subscribe

When webhook events are enabled (or the event selection changes), StackOne creates the webhook on your behalf using the connected account’s credentials. The webhook is registered for all enabled event types in a single call.

  • StackOne registers a comprehensive set of standard employee fields as monitorFields so that any change to core employee data triggers employee.updated.
  • The webhook is created with format: json so payloads arrive as JSON.
3

Service-account API key recommendation

BambooHR webhooks are permanently tied to the user account that created them. If the creating user is deactivated, the webhook silently stops firing with no error or notification.

  • For API Key connections, generate the key from a dedicated service account (e.g. a non-person integration user) that will not be deactivated.
  • OAuth 2.0 connections are not subject to this limitation.
4

Verify delivery

Trigger a matching change in BambooHR (for example, update an employee’s name) and confirm the event reaches your downstream consumer.

  • BambooHR retries failed deliveries up to 5 times with exponential backoff (immediate, +5 min, +10 min, +20 min, +40 min with jitter).
5

Unsubscribe

Changing your event selection re-registers the StackOne-managed webhook. Disconnecting the account deletes it, stopping deliveries.

Available Webhook Events

The following BambooHR employee events can be enabled using the modern event-based webhook family.

1

Employee lifecycle events

Events fired when employee records are created, updated, or deleted.

  • Employee Created (employee.created) — Fired when a new employee record is created. Note: BambooHR also fires employee.updated immediately after employee.created — downstream consumers should expect both.
  • Employee Updated (employee.updated) — Fired when any monitored field on an employee changes. The payload includes data.changedFields listing the changed field aliases. Only fires for fields in the registered monitorFields list — StackOne registers all standard fields.
  • Employee Deleted (employee.deleted) — Fired when an employee record is deleted.

Payload and signature

Details of how BambooHR delivers events to StackOne.

1

JSON payloads

BambooHR delivers each event as an HTTP POST with a JSON body. The envelope contains type (the event string, e.g. employee.updated), timestamp (ISO 8601), and data (with companyId, employeeId, and for updated events, changedFields).

2

Signature mechanism

BambooHR signs each delivery using the privateKey returned in the webhook creation response (201). The key is shown only once and cannot be retrieved again — store it securely at creation time.

  • Signature header: X-BambooHR-Signature
  • Algorithm: HMAC-SHA256 computed over the raw request body concatenated with the X-BambooHR-Timestamp header value.
  • To verify: reconstruct the HMAC using your stored privateKey and compare it to the header value.

Verify

Your Connector should now be able to receive and process events. Try triggering an event and you should see an Event appear in the Connector logs.