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-Signatureheader (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.failedanddrift.detectedas 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.