Real-time event delivery

Webhooks that don't break under load

Push mission, anomaly, and score events from your fleet straight into PagerDuty, Slack, Datadog, or any service that speaks HTTPS — with HMAC-signed payloads, automatic retries, and a per-subscription audit log.

Signed

Signed deliveries

HMAC-SHA256 in X-RoboTrace-Signature, same scheme as Stripe and GitHub. Verify with two lines of code in any language.

Built-in

Built-in retries

5xx and network errors are retried with exponential backoff. 4xx is permanent — no thundering herd when your endpoint is broken.

Audit

Audit log per sub

Every delivery — including failures — is recorded with attempt count, HTTP status, error, and duration. Visible in the dashboard.

Two-line verification, real-shape payloads

The SDK ships verify_webhook for Python; signing is plain HMAC-SHA256 elsewhere — your stdlib already has it.

Python (verify)
from robotrace import verify_webhook, WebhookSignatureError

@app.post("/hooks/robotrace")
async def hook(req):
    try:
        verify_webhook(SECRET, await req.body(),
                       req.headers["X-RoboTrace-Signature"])
    except WebhookSignatureError:
        return Response(status=401)
    event = req.headers["X-RoboTrace-Event"]
    # ... handle event ...
Payload (mission.completed)
{
  "event": "mission.completed",
  "delivery_id": "8fc2a31...",
  "data": {
    "trace_id": "a3b1...",
    "device_id": "fleet-agv-003",
    "name": "patrol-aisle-3",
    "status": "completed",
    "start_time": "2026-05-10T18:00:00Z",
    "end_time":   "2026-05-10T18:04:31Z"
  }
}

Webhooks vs. polling

ConcernPollingWebhooks
LatencyBounded by poll interval (often 30–60s)< 1 second p99
Cost at fleet scaleN robots × poll rate; quadratic if you fan outOne delivery per event; no idle reads
Auth + integrityAPI token over HTTPSHMAC-SHA256 + delivery ID + retry envelope
Failure visibilityNo record of skipped eventsAudit log with status, attempts, duration
BackpressureYour code32-concurrent semaphore + per-sub retry budget
Works with what you have

Drop into any HTTPS receiver

No special SDK needed on the receiving side. If your service can accept a POST with JSON, it can consume RoboTrace webhooks.

PagerDuty
Slack
Datadog
Opsgenie
Microsoft Teams
Custom Lambda / Cloud Function

Subscribe in 30 seconds

Open the dashboard, hit Settings → Webhooks → New webhook, paste your endpoint URL, save the signing secret, done.

Open the dashboard →