Source · Browserbase · Verified November 1, 2026

Browserbase

Short answer: Browserbase Functions webhooks report invocation and build lifecycle states (pending, running, completed, failed).

Hooks verifies Browserbase deliveries with standard webhooks: hmac-sha256, base64, v1= prefix over <id>.<timestamp>.<body> and normalizes them into the unified event format.

Set up the webhook in Browserbase

  1. Create a webhook in Browserbase Settings or with POST /v1/webhooks, and set its endpoint to your Hooks receive URL.
  2. Copy the whsec_… signing secret shown once at creation (or on rotation) into the Hooks source secret field.
  3. Subscribe to the functions.invocations.* and functions.builds.* types you need; retries keep the same webhook-id.

Signature verification

Headerwebhook-signature
AlgorithmStandard Webhooks: HMAC-SHA256, base64, v1= prefix over <id>.<timestamp>.<body>
Replay window5 minutes
Delivery idwebhook-id

Events Hooks normalizes

event.typesubjectWhat it means
functions.invocations.completedeventBrowserbase Functions webhooks report invocation and build lifecycle states (pending, running, completed, failed).

Normalized payload

Every adapter produces this shape before filters or templates run. The raw payload and sanitized headers stay attached for audit, but filters and templates read the normalized fields.

Normalized event

{
  "id": "evt_demo",
  "source": "browserbase",
  "type": "functions.invocations.completed",
  "action": "completed",
  "deliveryId": "delivery_demo",
  "subject": {
    "title": "Browserbase event"
  },
  "raw": {
    "id": "85e6ff2d-91de-468a-867c-e0d9e4587063",
    "type": "functions.invocations.completed",
    "resourceId": "a3f1c2d4-7b90-4e51-9c8a-2f6d1e0b4c73",
    "data": {
      "functionId": "e5f6a7b8-0000-4000-8000-000000000000",
      "status": "COMPLETED",
      "results": {
        "title": "Example Domain"
      }
    }
  }
}

Filter and template examples

Filter

type equals "functions.invocations.completed"

Template

"Browserbase event: {{event.subject.title}}"

Retries and the delivery log

408, 425, 429, and 5xx responses retry with backoff and honor Retry-After; other 4xx responses fail permanently with a named code. Every attempt keeps the rendered request and the target response, so a failure points at one field or one status instead of a guess.

Hooks delivery detail: attempt timeline, request payload, and the destination response for one delivery
Delivery detail: the attempt timeline, the rendered request the target received, and its response — the same record an event keeps for every destination.

Common errors

SymptomFix
SIGNATURE_INVALIDUse the signing secret Browserbase shows when the webhook is created, and send webhook-signature for the exact raw body.
Nothing arrivesConfirm the webhook points at the endpoint's /in/<endpoint-id> URL and that the endpoint is active.

Pair with a target

Reference

Other sources