Overnight alerts — digest into one summary
Three alerts drip in; a Digest (release at 3) holds them under one shared key and releases ONE batch — the third append hands a single { count, items } summary to the console instead of three separate pings. Pair a flush-mode Digest with a Schedule trigger for time-based digests ("every morning, everything that arrived overnight").
What’s inside
9 nodes — every type links to its full reference page.
| Step | Node | Type |
|---|---|---|
| First alert | Inject | input.inject |
| Digest (1st) | Digest | processing.digest |
| Digest (2nd) | Digest | processing.digest |
| Digest (3rd) | Digest | processing.digest |
| Second alert | Edit Fields (Set) | processing.set |
| Third alert | Edit Fields (Set) | processing.set |
| Still collecting | Console | utility.console |
| Still collecting (2) | Console | utility.console |
| One summary | Console | utility.console |
Import it
- Studio → Import — paste the JSON below (or the URL
/docs/templates/overnight-alerts-digest-into-one-summary.json). - Or ask the AI Copilot with the JSON pasted after the phrase:
import this workflow json into a new workflow named "Overnight alerts — digest into one summary" - Any credentials the nodes need are
${credential.…}references — add them once in Admin → Credentials and the template picks them up. Nothing secret ships in a template.
The workflow document (flowdrome.workflow.v1, 4 node types)
{
"schemaVersion": "flowdrome.workflow.v1",
"id": "",
"name": "Overnight alerts — digest into one summary",
"version": "0",
"status": "draft",
"nodes": [
{
"id": "seed",
"type": "input.inject",
"label": "First alert",
"category": "trigger",
"config": {
"contentType": "application/json",
"payload": {
"alert": "disk 91% on host-2"
}
},
"position": {
"x": 0,
"y": 0
}
},
{
"id": "d1",
"type": "processing.digest",
"label": "Digest (1st)",
"category": "flow",
"config": {
"key": "nd-digest-mrsqq3nq",
"mode": "collect",
"releaseCount": 3,
"maxHeld": 100
},
"position": {
"x": 530,
"y": 0
}
},
{
"id": "d2",
"type": "processing.digest",
"label": "Digest (2nd)",
"category": "flow",
"config": {
"key": "nd-digest-mrsqq3nq",
"mode": "collect",
"releaseCount": 3,
"maxHeld": 100
},
"position": {
"x": 2120,
"y": 0
}
},
{
"id": "d3",
"type": "processing.digest",
"label": "Digest (3rd)",
"category": "flow",
"config": {
"key": "nd-digest-mrsqq3nq",
"mode": "collect",
"releaseCount": 3,
"maxHeld": 100
},
"position": {
"x": 3710,
"y": 0
}
},
{
"id": "a2",
"type": "processing.set",
"label": "Second alert",
"category": "processing",
"config": {
"mode": "manual",
"assignments": [
{
"name": "alert",
"type": "string",
"value": "tls cert expires in 6 days"
}
],
"include": "none",
"dotNotation": true,
"ignoreConversionErrors": false
},
"position": {
"x": 1590,
"y": 0
}
},
{
"id": "a3",
"type": "processing.set",
"label": "Third alert",
"category": "processing",
"config": {
"mode": "manual",
"assignments": [
{
"name": "alert",
"type": "string",
"value": "queue depth 12k and climbing"
}
],
"include": "none",
"dotNotation": true,
"ignoreConversionErrors": false
},
"position": {
"x": 3180,
"y": 0
}
},
{
"id": "held1",
"type": "utility.console",
"label": "Still collecting",
"category": "utility",
"config": {
"message": "held — {{ $json.count }} so far"
},
"position": {
"x": 1060,
"y": 0
}
},
{
"id": "held2",
"type": "utility.console",
"label": "Still collecting (2)",
"category": "utility",
"config": {
"message": "held — {{ $json.count }} so far"
},
"position": {
"x": 2650,
"y": 0
}
},
{
"id": "summary",
"type": "utility.console",
"label": "One summary",
"category": "utility",
"config": {
"message": "MORNING SUMMARY — {{ $json.count }} alerts: {{ $json.items }}"
},
"position": {
"x": 4240,
"y": 0
}
}
],
"edges": [
{
"id": "e0",
"sourceNodeId": "seed",
"sourcePort": "output",
"targetNodeId": "d1",
"targetPort": "input"
},
{
"id": "e1",
"sourceNodeId": "d1",
"sourcePort": "held",
"targetNodeId": "held1",
"targetPort": "input"
},
{
"id": "e2",
"sourceNodeId": "held1",
"sourcePort": "output",
"targetNodeId": "a2",
"targetPort": "input"
},
{
"id": "e3",
"sourceNodeId": "a2",
"sourcePort": "output",
"targetNodeId": "d2",
"targetPort": "input"
},
{
"id": "e4",
"sourceNodeId": "d2",
"sourcePort": "held",
"targetNodeId": "held2",
"targetPort": "input"
},
{
"id": "e5",
"sourceNodeId": "held2",
"sourcePort": "output",
"targetNodeId": "a3",
"targetPort": "input"
},
{
"id": "e6",
"sourceNodeId": "a3",
"sourcePort": "output",
"targetNodeId": "d3",
"targetPort": "input"
},
{
"id": "e7",
"sourceNodeId": "d3",
"sourcePort": "digest",
"targetNodeId": "summary",
"targetPort": "input"
}
],
"triggers": [
{
"id": "t0",
"nodeId": "seed"
}
],
"meta": {
"snippets": [],
"source": "template-gallery",
"description": "Three alerts drip in; a Digest (release at 3) holds them under one shared key and releases ONE batch — the third append hands a single { count, items } summary to the console instead of three separate pings. Pair a flush-mode Digest with a Schedule trigger for time-based digests (\"every morning, everything that arrived overnight\")."
}
} Generated from the verified demo corpus — this exact document seeds and runs on a fresh Flowdrome. Raw JSON: overnight-alerts-digest-into-one-summary.json.