Documentation Index
Fetch the complete documentation index at: https://langwatch.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
Pairs with: Ingestion Sources index. Webhook envelope shape is shared with
s3_custom callback mode.Currently implemented
- Receiver:
POST /api/ingest/webhook/:sourceId. - Auth:
Authorization: Bearer lw_is_<secret>. - Body: any JSON payload (Workato’s exact webhook envelope).
- Persistence: one governance event per delivery, with
eventType: agent.action,actor/targetempty, and the verbatim payload inrawPayload. The CLI tail will show one row per Workato webhook hit and the per-source detail page will let you expand the row to see the raw envelope. - Status flip: flips
awaiting_first_event→activeafter the first webhook is received.
What the admin configures upstream
The composer collects:| Field | Required | Stored |
|---|---|---|
| Last 4 chars of the shared HMAC secret | yes | IngestionSource.payloadConfig.sharedSecretLastFour, purely cosmetic; helps the admin visually confirm which secret is configured upstream |
| Field | Value |
|---|---|
| Webhook URL | https://<your-langwatch>/api/ingest/webhook/<sourceId> |
| Bearer secret | lw_is_<base64url> |
Authorization: Bearer lw_is_<secret> header. Save.
Event shape we accept today
action → target because the webhook envelope hasn’t been parsed yet, the data is in rawPayload).
What is still envelope-only, follow-up work
- Recipe, job, connection event mapping. Workato has a stable JSON envelope (
event,recipe_id,connection_id,datablob). A Workato-specific normaliser will:- Map
eventtoeventType(e.g.recipe.success→api.call,connection.error→auth.action). - Pull
recipe_id,connection_idintotarget. - Pull the trigger user, connection account into
actor.
- Map
- HMAC signature verification. Workato signs every webhook with the shared secret (HMAC-SHA256 in the
X-Workato-Signatureheader). The receiver currently authenticates via the bearer secret but does NOT additionally verify the HMAC. This is fine for the foundation slice (bearer secret is unguessable) but the HMAC verify is on the roadmap as defence-in-depth. - Per-event timestamp. Today’s persistence stamps
eventTimestampto server receive time. Once the audit-shape parser lands, it’ll honour Workato’s owntimestampfield so historical replays land at the right time.
Verify with CLI + web
/settings/governance/ingestion-sources/<sourceId> will show the same row; click to expand and inspect rawPayload to confirm Workato’s envelope shape matches what you expect.
If you want to dry-run without a Workato recipe:
202 Accepted with {accepted, bytes, eventId}. The source’s status flips to active and langwatch ingest tail picks up the row.