Skip to main content
Webhooks let Bindbee push updates to you. When a sync starts, finishes or fails, and when records are created or updated, Bindbee sends a POST to a URL you control.

Events

Five events are available. The dashboard groups them under Get notified when, and each label is the event string in title case. On Connector changes On Data model changes
connector_synced is the event most integrations start with. It is the cleanest signal that a newly connected account has finished its initial sync and is ready to use in your product.

Creating a webhook

Webhooks are configured in the dashboard, under Configure → Webhooks.
The Add Webhook dialog, with a Destination URL field beside a Send test event button, a Webhook Name field, Webhook Type set to Production rather than Development, and checkboxes under Get notified when for Connector Synced, Connector Sync Started and Connector Sync Error, above a Create Webhook button

The Add Webhook form, carrying the four steps above in order: Destination URL, Webhook Name, Webhook Type, and the events under Get notified when.

1

Enter your destination URL

Add the URL that should receive the notifications. Use Test URL to confirm your endpoint is reachable and accepting requests before you save.
2

Name the webhook

Give it something descriptive, for example Employee data. The name appears in delivery logs, which makes tracing a specific delivery easier later.
3

Choose the environment

Webhooks are environment-specific. A Production webhook never fires for a Development connector, and the reverse is also true — if you are testing and nothing arrives, check this first. See Environments.
4

Select events and create

Tick the events you want. One webhook can subscribe to several, or you can create separate webhooks per event to route them to different handlers. Then press Create webhook.

Webhook Signature

Your URL is public, so anyone can post to it. Check the signature on every request, and only act on the ones that really came from Bindbee. Each request carries an X-Bindbee-Webhook-Signature header. Hash the raw body with your signature key and compare the result to that header. If they don’t match, reject the request. Your signature key is under Security on the Webhooks page. It is unique to your organization, and you can regenerate it if it ever leaks.

Payload structure

Every payload shares a common envelope. Four objects are always present, and one more appears on failures.

webhook

Read webhook.event to route the payload. Do not infer the event from the shape of data.

connector

origin_id is the identifier you supplied when creating the connector, and it is usually the fastest way to map an incoming webhook back to a customer in your own database without storing Bindbee connector IDs. categories is an array — a single connector can serve more than one category, for example ["LMS", "HRIS"].

sync

sync_id is stable across every event from the same job, so you can correlate a connector_sync_started with the connector_synced that closes it. It also works as an idempotency key, since a retried delivery carries the same values.

error

Included only on connector_sync_error:
detail is returned as {} when no additional information is available.

data

This is the part that changes between events, so handle it per event rather than writing one parser for all five.

Sample payloads

data is a flat array of employee IDs. Fetch them with the ids parameter on Get Employees.
data is keyed by model name. Iterate the keys rather than assuming which models are present, since that depends on what changed in the sync.

Delivery and retries

When a webhook event is triggered, Bindbee sends a POST request to your configured destination URL. If the request fails due to a request or network-layer issue, Bindbee automatically retries the delivery up to 4 times within 60 seconds. Each delivery attempt has a timeout of 10 seconds. Your server should respond within this window to avoid the request being treated as timed out.

Retry behavior

Failures that trigger retries

Retries are triggered only for request or network-layer failures, including:

Acknowledge first, process after

A handler that does its work before responding will exceed the 10-second timeout under load, and every timeout spends part of the retry budget. Return 200 as soon as you have the payload, then process asynchronously. Deliveries that exhaust all four retries are not redelivered later.

Keeping a cron schedule

Subscribing to webhooks doesn’t mean moving your processing onto them. Subscribe to connector_sync_error alone, purely as a signal to skip or defer that customer’s run - your cron keeps its schedule, and stops processing a connection whose data hasn’t updated.

Monitoring deliveries

In the dashboard

Delivery logs are on the Webhooks tab under Logs. Logs for one specific webhook are also shown on that webhook’s own page.

Through the API

Three endpoints cover the same ground programmatically, which is useful for alerting on delivery failures rather than discovering them by hand. List your webhooks to get their IDs, names, URLs, enabled state, and when each last fired:
List delivery attempts, with filters:
Get one delivery by its log ID for the full request and response detail, including the status code your endpoint returned:

Syncing

When syncs run, and how to trigger one on demand.

Environments

Why Production and Development webhooks fire separately.

Reading data

Reading the records an event points at, with ids and modified_after.

Monitor sync status

Catching a connector that stopped, which silence will not tell you.