Card templates

A template is just a name that picks which card the app draws. You send data; the app already has the design built in. Pick one of the three below and fill in the fields — the cards here are rendered by the exact same component the app uses.

text — the everyday notification

The simple one, and what you get for any unknown template name — so a message always shows up, never disappears.

fieldtypenotes
titlestringdefaults to "Notification"
bodystringoptional extra text
iconstringoptional emoji
accentstringoptional hex color
payload
{
  "template": "text",
  "data": {
    "title": "Nightly backup complete",
    "body": "412 MB uploaded to R2 in 38s.",
    "icon": "🌙"
  }
}
🌙Nightly backup complete
412 MB uploaded to R2 in 38s.

deploy — build & deploy status

Made for CI: a clear pass/fail badge with branch, commit and how long it took.

fieldtypenotes
titlestringdefaults to "Deploy"
status"ok" | "fail"sets the color, icon and badge
branchstringoptional, monospace
commitstringoptional, monospace
durationstringoptional, monospace
payload
{
  "template": "deploy",
  "data": {
    "title": "Build finished",
    "branch": "main",
    "commit": "a1b2c3d",
    "status": "ok",
    "duration": "2m13s"
  }
}
Build finished
Success
Branchmain
Commita1b2c3d
Duration2m13s

alert — something needs attention

For monitors and warnings. The level sets how loud it looks, from a calm info to a red critical.

fieldtypenotes
level"info" | "warn" | "critical"sets the color and icon
titlestringdefaults to "Alert"
messagestringoptional body
sourcestringoptional footnote
payload
{
  "template": "alert",
  "data": {
    "level": "critical",
    "title": "Disk usage above 90%",
    "message": "Volume /dev/sda1 on web-01 is at 93% capacity.",
    "source": "node-exporter"
  }
}
🚨Disk usage above 90%
Volume /dev/sda1 on web-01 is at 93% capacity.
Source: node-exporter

Tweaking the look

Any card takes an optional style object: accent recolors the edge, icon swaps the emoji, and urgency hints how attention- grabbing the pop-up should be. Leave it out and the template's own defaults apply.