Skip to content

Notifications

Three complementary channels keep MSPs informed: webhooks (chat/PSA), email (humans), and an in-portal activity feed.

Webhooks

Each client can register HTTPS endpoints that receive a POST on run.completed, run.failed, drift.detected, and build.ready. Choose a delivery format:

  • Generic — a signed JSON payload; verify the X-Totl-Signature header (HMAC-SHA256 of the body) with the secret shown once on creation.
  • Slack — posts a Slack-formatted message (use a Slack incoming-webhook URL).
  • Teams — posts a Microsoft Teams MessageCard.

Endpoints: GET/POST /v1/webhooks, DELETE /v1/webhooks/:id.

Email

Set a per-partner notification email (Clients list → Notifications). With it you get:

  • Weekly digest — Mondays 07:00 UTC: clients, machines, active seats, run success rate, failures, drift (opt-in with the digest toggle).
  • Event alerts — an email on run.failed and drift.detected as they happen.

Email is delivered via Resend and is dormant until RESEND_API_KEY + EMAIL_FROM are configured on the Worker. See Billing for the config pattern; the email vars follow the same wrangler secret put / [vars] approach.

Activity feed

The Clients list shows a recent activity strip (last 14 days) across all of a partner's clients — failed runs, drift, and ready builds — a quick "what needs attention" view. Endpoint: GET /v1/partner/activity.