Webhooks

Prev Next

Webhooks let Bobsled notify your systems when something happens in your organization: a Transfer starts, completes or fails, or a Sledhouse Table sync runs. Each event is sent as an HTTPS POST with a JSON body to a URL you choose.

Typical uses are alerting, ticketing, and forwarding Bobsled activity into your monitoring or log platform.

NOTE: Webhooks carry the same events you see in Bobsled's activity log: events about your Shares, Transfers and Sledhouse resources. They are not infrastructure or system logs.


How delivery works

  • One event per request. POST with Content-Type: application/json;charset=UTF-8; the body is a single JSON object.

  • Success is any 2xx response. Respond within 15 seconds and queue slow processing on your side.

  • Failed deliveries are retried with exponential backoff when your endpoint times out or returns a non-2xx status.

  • At-least-once delivery. The same event can arrive more than once, so deduplicate on id (Transfers events) or logId (Sledhouse events). Events can arrive out of order; use timestamp.

  • Fixed source IP. Each Bobsled environment sends webhooks from a dedicated static IP address (see Allowlisting Bobsled's IP address).


Creating a webhook

You need the Owner or Member role.

  1. Select Webhooks in the left navigation, then select Add Webhook.

  2. Enter a Webhook name and an optional Description.

  3. Choose the events to receive (see Choosing events).

  4. Optionally add up to 20 Headers (key and value), typically used for authentication.

  5. Enter the Callback URL (https://…). Query parameters are kept as entered.

  6. Select Test to send a sample request to your endpoint, then select Save.

Your webhooks are listed with the events each one receives:

You can also manage webhooks through the REST API: Create ↗, Update ↗, List ↗, Get ↗ and Delete ↗.


Choosing events

Bobsled Transfers events

Select any of the five event groups (API field transfersConfig.eventCodes). In the API, omitting transfersConfig delivers all Transfers events and an empty list delivers none.

UI option

API value

Payload eventIds delivered

Transfer created

transfer-created

transfer.created

Transfer started

transfer-started

transfer.transferring, transfer.resumed, transfer.edited, table.transferring, table.unload.started, file.transferring

Transfer success

transfer-success

transfer.transferred, segment.completed, transfer.accessRevoked, transfer.deleted, table.transferred, table.unload.completed, file.transferred

Transfer failed

transfer-failed

transfer.failed, table.failed, file.failed

Transfer paused

transfer-paused

transfer.paused

Sledhouse events

If Sledhouse is enabled for your organization, you can select individual Sledhouse events (API field sledhouseConfig.eventCodes). They cover Sledhouse Tables (created, edited, deleted, sync and load started/completed/failed, schema changes), Data Consumers and Fulfillments, destination access grants and revocations, and Data Products (sync, sharing, view and table changes). The full list of codes is in the API reference ↗.


Payload schema

Bobsled sends one of two payload formats depending on the event type. The full machine-readable schemas are in the API reference: Transfer Events payload ↗ and Sledhouse Events payload ↗.

Transfers events

Field

Type

Description

id

string

Unique event id. Use it for deduplication.

timestamp

string

When the event occurred (ISO 8601).

level

string

SUCCESS, WARNING or ERROR.

eventId

string

Event type, for example transfer.failed (see Choosing events).

eventEntity

string

Always TRANSFER.

eventName

string

Human-readable event name, for example Transfer failed.

eventDescription

string

Human-readable description.

authorId

string

Id of the user or system that triggered the event.

authorEmail

string

Email of the user that triggered the event.

runId

string or null

Transfer run id, when applicable.

extraProperties

object

Transfer details (see below).

extraProperties contains:

Field

Type

Description

transferId

string

The Transfer.

shareId

string

The Share the Transfer belongs to.

transferMetadata

object

Status and metrics of the Transfer (see below).

changes

array or null

Only on transfer.created and transfer.edited: a list of { field, before, after }.

transferMetadata contains:

Field

Type

Description

transferType

string

oneTime or automated.

lastTransferStatus

string

created, transferring, transferred, paused, failed, error, segmentCompleted, accessRevoked or deleted.

createdAt

integer

When the Transfer was created (epoch milliseconds).

errors

array

Errors for a failed Transfer, each with an exception code and a message.

bytesTransferred, filesTransferred

number

Volume moved, when known.

rowsLoaded, totalRowsAfterLoad

number

Rows loaded and the resulting table size, for warehouse destinations.

table

object

Per-table events only: tableName and tableStatus (started, unloadStarted, unloadFinished, complete or error).

file

object

Per-file events only: filePath and fileStatus (same values as tableStatus).

Example:

{
  "id": "7c1e9a2f-…",
  "timestamp": "2026-10-06T14:02:11.000Z",
  "level": "ERROR",
  "eventId": "transfer.failed",
  "eventEntity": "TRANSFER",
  "eventName": "Transfer failed",
  "eventDescription": "A transfer failed",
  "authorId": "…",
  "authorEmail": "user@example.com",
  "runId": "…",
  "extraProperties": {
    "transferId": "…",
    "shareId": "…",
    "transferMetadata": {
      "transferType": "automated",
      "lastTransferStatus": "failed",
      "createdAt": 1791295331000,
      "errors": [{ "exception": "FileTransferFailed", "message": "…" }]
    }
  }
}

Sledhouse events

Field

Type

Description

logId

string

Unique event id. Use it for deduplication.

timestamp

string

When the event occurred (ISO 8601).

code

string

Event code, for example shtSyncFailed.

eventName

string

Human-readable form of the code, for example Sync failed.

level

string

Info, Warning or Error.

trigger

string

Manual (a person) or System (Bobsled).

author

string or null

The user, for Manual events.

message

string

Human-readable explanation.

resource

array

Affected resources as { type, id, name }, where type is for example sledhouse_table, data_product, data_consumer or destination.

jobId

string

Job id, on job events.

details

object

Event-specific details. Error events include details.errorMessage.

Example:

{
  "logId": "…",
  "timestamp": "2026-10-06T14:05:00.000Z",
  "code": "shtSyncFailed",
  "eventName": "Sync failed",
  "level": "Error",
  "trigger": "System",
  "author": null,
  "message": "…",
  "resource": [{ "type": "sledhouse_table", "id": "…", "name": "orders" }],
  "jobId": "…",
  "details": { "errorMessage": "…" }
}


Securing your endpoint

Bobsled does not sign payloads. Protect your endpoint with a secret in a custom header (for example Authorization: Bearer <token>) or in the Callback URL's query string, and allowlist Bobsled's IP address.


Allowlisting Bobsled's IP address

Every webhook from your Bobsled environment comes from a single, dedicated static IP address. Contact your Bobsled account team or support for your environment's address.