ZKRINET Docs
Build

Alerts

Zkrinet tells you when something happens to your project — by email, to a webhook or both. Set it up under the Alerts tab.

What triggers an alert

EventWhen
DownThe project has not responded to two checks in a row. We check once a minute and try to restart it automatically.
Up againThe project responds again after a down alert.
StorageStorage reaches 80 % and 95 % of your quota. Alerts once per level; if you drop below 75 % it can alert again.
Deploy rolled backA deploy from GitHub didn't go through and the project was restored.

A paused project does not alert. At most 20 alerts per project per day (test alerts don't count) — so that a project going up and down doesn't fill your inbox.

Alerts for failed backups COMING together with the backups.

Email

Alerts go to the email address on your account. Uncheck Email me alerts if you only want the webhook.

Webhook

Enter an https address — for example a Slack or Discord webhook or your own server. Each alert is sent as a POST with JSON:

{
  "id": "…",                 // unique per alert
  "typ": "nere",             // nere | uppe | lagring | deploy | test
  "projekt": "min-app",
  "adress": "https://min-app.zkrinet.com",
  "text": "Projektet har inte svarat …",
  "text_en": "The project has failed …",
  "data": {},
  "tid": "2026-11-08T10:15:00.000Z"
}

Verify the signature

When you save a webhook you get a secret (shown once). Every request has two headers:

Example in Node:

import crypto from "node:crypto"

function verify(req, body, secret) {
  const tid = req.headers["x-zk-tid"]
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(tid + "." + body).digest("hex")
  const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers["x-zk-signatur"] || ""))
  const fresh = Math.abs(Date.now() / 1000 - Number(tid)) < 300   // reject old requests
  return ok && fresh
}

Use the body exactly as it arrived (raw text), not re-parsed JSON.

Test

Send test alert sends an alert of type test to email and webhook and shows the result. The history of recent alerts is shown on the same tab.