Telemetry & Audit Logs

Every webhook operation — event receipt, delivery attempt, scheduled webhook run, and pipeline step — emits a structured log entry. Search, filter, and export your operational history.

Overview

The telemetry system captures a structured log entry for every significant operation in your webhook pipeline. These logs are searchable in the dashboard and can be exported to external systems for long-term storage and analysis.

Telemetry logs are separate from event data. Events store the payload and delivery results; telemetry logs capture the operational timeline with timing, status, and metadata.

Log entry structure

Each log entry contains the following fields:

FieldTypeDescription
timestampstring (ISO 8601)When the operation occurred
typestringOperation type (event.received, delivery.attempt, delivery.success, delivery.failed, sw.run, pipeline.step, etc.)
webhookIdstringThe webhook this operation belongs to
eventIdstring | nullThe event ID, if applicable
statusstringOutcome (success, failed, blocked, filtered, skipped)
durationnumberOperation duration in milliseconds
metadataobjectType-specific data (HTTP status, error message, node type, attempt number, etc.)

Example log entries

jsonEvent received
{
  "timestamp": "2025-05-19T14:30:00.000Z",
  "type": "event.received",
  "webhookId": "664a1f2e8b1c4a001f2d0001",
  "eventId": "664a1f2e8b1c4a001f2d0050",
  "status": "success",
  "duration": 12,
  "metadata": {
    "payloadSize": 1240,
    "contentType": "application/json",
    "sourceIp": "54.187.174.169"
  }
}
jsonDelivery attempt
{
  "timestamp": "2025-05-19T14:30:00.150Z",
  "type": "delivery.attempt",
  "webhookId": "664a1f2e8b1c4a001f2d0001",
  "eventId": "664a1f2e8b1c4a001f2d0050",
  "status": "success",
  "duration": 142,
  "metadata": {
    "attempt": 1,
    "httpStatus": 200,
    "targetUrl": "https://api.example.com/webhooks",
    "responseSize": 48
  }
}
jsonScheduled webhook run
{
  "timestamp": "2025-05-19T15:00:00.000Z",
  "type": "sw.run",
  "webhookId": "664a1f2e8b1c4a001f2d0001",
  "eventId": "664a1f2e8b1c4a001f2d0060",
  "status": "success",
  "duration": 205,
  "metadata": {
    "scheduledWorkflowId": "664a1f2e8b1c4a001f2d0020",
    "cronExpression": "0 */1 * * *",
    "targetsDelivered": 2
  }
}

Log types

TypeEmitted when
event.receivedA new event arrives at the ingress URL
event.filteredAn event is discarded by a payload filter
delivery.attemptA delivery attempt is made (initial or retry)
delivery.successA delivery attempt succeeds (2xx response)
delivery.failedA delivery attempt fails (non-2xx or timeout)
sw.runA scheduled webhook fires
chain.stepA chain step is triggered
schema.validatedA schema validator checks a payload
pipeline.stepA generic pipeline node processes an event

Retention by plan

Telemetry log retention varies by plan tier. Logs older than the retention period are automatically deleted.

PlanRetention
Free7 days
Pro30 days
Enterprise90 days
If you need logs beyond your plan's retention window, export them to an external system before they expire. See the Export section below.

Searching logs

In the dashboard, navigate to the Telemetry section to search and filter logs. You can filter by:

  • Type: Select one or more log types (e.g., only delivery failures)
  • Webhook: Filter to a specific webhook
  • Status: Filter by outcome (success, failed, blocked)
  • Time range: Select a date/time window
  • Event ID: Find all logs for a specific event

Exporting logs

Telemetry logs can be exported to external systems for long-term storage, alerting, or analysis. Two approaches:

HTTP action (real-time)

Configure an HTTP action on your pipeline to forward telemetry data to an external webhook (e.g., Datadog, Splunk, your own logging service) as events are processed.

API export (batch)

Query the telemetry API to fetch logs in bulk for offline analysis:

jsonQuery example
GET /api/telemetry?type=delivery.failed&webhookId=664a...&from=2025-05-18T00:00:00Z&to=2025-05-19T23:59:59Z

Response:
{
  "logs": [
    {
      "timestamp": "2025-05-18T09:15:00.000Z",
      "type": "delivery.failed",
      "webhookId": "664a1f2e8b1c4a001f2d0001",
      "eventId": "664a1f2e8b1c4a001f2d0040",
      "status": "failed",
      "duration": 30042,
      "metadata": {
        "attempt": 3,
        "httpStatus": 504,
        "error": "Gateway Timeout",
        "targetUrl": "https://api.example.com/webhooks"
      }
    }
  ],
  "total": 1,
  "page": 1,
  "pageSize": 50
}
For high-volume webhooks, use the real-time HTTP action approach rather than polling the API. This ensures you capture all logs regardless of retention limits.