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
- Create a webhook in Browserbase Settings or with
POST /v1/webhooks, and set its endpoint to your Hooks receive URL. - Copy the
whsec_…signing secret shown once at creation (or on rotation) into the Hooks source secret field. - Subscribe to the
functions.invocations.*andfunctions.builds.*types you need; retries keep the samewebhook-id.
Signature verification
| Header | webhook-signature |
|---|---|
| Algorithm | Standard Webhooks: HMAC-SHA256, base64, v1= prefix over <id>.<timestamp>.<body> |
| Replay window | 5 minutes |
| Delivery id | webhook-id |
Events Hooks normalizes
| event.type | subject | What it means |
|---|---|---|
functions.invocations.completed | event | Browserbase 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.

Common errors
| Symptom | Fix |
|---|---|
SIGNATURE_INVALID | Use the signing secret Browserbase shows when the webhook is created, and send webhook-signature for the exact raw body. |
Nothing arrives | Confirm the webhook points at the endpoint's /in/<endpoint-id> URL and that the endpoint is active. |
Pair with a target
Reference
- Receiving eventshttps://docs.browserbase.com/platform/webhooks/overview
- Verify signatureshttps://hooks.events/docs/signatures.md
- Payload templateshttps://hooks.events/docs/templates.md
Other sources
X-Hook-Secret handshake.Auth0Auth0 custom log streams POST tenant log events (login, signup, logout, token exchange, user changes) to a webhook.AWS SNSAWS SNS delivers JSON notifications and subscription confirmations to HTTP(S) endpoints, signed with an RSA certificate published under an sns.<region>.amazonaws.com URL.Azure DevOpsAzure DevOps service hooks send git pushes, pull requests, work items, builds and releases to a public webhook endpoint.BitbucketBitbucket Cloud repository webhooks cover pushes, pull request changes, and issue events.Cal.comCal.com booking webhooks wrap the booking in a triggerEvent envelope and sign each delivery with an HMAC-SHA256 of the raw body.CalendlyCalendly webhook deliveries report scheduled-event invitee bookings, cancellations, and no-shows.Browse all sourcesSetup steps, signatures, events, and payload samples for every provider.