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.

StepNodeType
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

  1. Studio → Import — paste the JSON below (or the URL /docs/templates/overnight-alerts-digest-into-one-summary.json).
  2. 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"
  3. 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.