Docs

Webhooks

Get an HTTPS request on your server when content is published, a review is requested, someone finishes a tour or answers a survey.

A webhook endpoint is a URL on your server that Cueston POSTs events to. Each endpoint subscribes to the event types it wants.

Add an endpoint

In Settings → Integrations → Webhooks, add the URL and pick the events. Or use the API:

Shell
curl https://app.cueston.com/api/webhooks \
  -H "Authorization: Bearer $CUESTON_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/webhooks/cueston", "events": ["content.published", "survey.answered"] }'

The response includes the endpoint's signing secret (whsec_…). It's shown only once, here and when you rotate it. Store it on your server to verify signatures.

Managing webhooks needs the "Change workspace settings" permission. A workspace can have up to 20 endpoints. URLs must use https.

The request

Every request is a POST with a JSON body:

JSON
{
  "id": "evt_…",
  "type": "content.published",
  "createdAt": "2026-10-26T09:30:00.000Z",
  "workspaceId": 42,
  "data": {
    "contentType": "tour",
    "contentId": 318,
    "name": "Invoice flow",
    "environment": "production",
    "version": 7,
    "versionId": 1290,
    "publishedBy": { "userId": 12, "email": "ada@acme.com" },
    "rollback": false
  }
}

The id stays the same across retries and redeliveries: use it to ignore duplicates.

HeaderValue
Cueston-Signaturet=<unix seconds>,v1=<signature>. See Verify signatures.
Cueston-Event-IdThe event's id
Cueston-Event-TypeThe event's type
Cueston-Delivery-Attempt1 for the first attempt, then 2, 3…
User-AgentCueston-Webhooks/1.0 (+https://cueston.com)

Respond quickly

Return any 2xx status within 10 seconds. Anything else, including a redirect, counts as a failure and is retried. Do slow work after you respond.

On this page