Create icon
Create icon
SlackIncomingWebhook icon
Webhook icon

Turn Monitoring Alerts into monday.com Incident Items via Webhook

Route monitoring alerts into monday.com with Kestra. A webhook creates an incident item with column values, attaches the payload, and confirms in Slack.

Categories
Business

Alerts that live only in a Slack channel get scrolled past; alerts that become monday.com items get owners, statuses, and closure. This blueprint exposes a Kestra webhook that any monitoring tool can POST to. Each call creates an item on your incidents board through io.kestra.plugin.monday.items.Create, mapping payload fields to column values with input fallbacks, then posts the raw alert JSON as an update on the item and confirms the new item id in Slack.

How it works

  1. The alert_webhook trigger (io.kestra.plugin.core.trigger.Webhook) accepts a JSON POST from any alerting system. The URL contains the flow identifiers plus the secret key, so replace change-me-strong-webhook-key before wiring anything to it.
  2. create_incident (io.kestra.plugin.monday.items.Create) creates the item with itemName from {{ trigger.body.title ?? inputs.default_title }}. The columnValues map sets a status label from the payload severity and a text column from the service name, and createLabelsIfMissing: true adds new severity labels on the fly.
  3. attach_context (io.kestra.plugin.monday.updates.Create) posts the full alert payload as an update on the item, addressed by {{ outputs.create_incident.itemId }}, so the triage thread starts with complete context.
  4. notify posts the created item id and name to Slack; the errors block posts a distinct alert when intake fails, because a dropped incident is itself an incident.

What you get

  • Every alert becomes a tracked monday.com item instead of a lost chat thread.
  • Payload fields flow into real board columns, with ?? fallbacks so a manual test execution works without a webhook body.
  • The raw alert JSON preserved as the first update on the item, ready for triage.
  • A Slack confirmation carrying the item id, and a failure alert when intake breaks.

Who it's for

  • Ops and platform teams who run incident tracking on monday.com boards.
  • Teams whose alerts currently land in chat and evaporate without an owner.
  • Anyone standardizing intake from several monitoring tools into one board.

Why orchestrate this with Kestra

monday.com automations cannot receive an arbitrary webhook from your monitoring stack, and point-to-point integrations multiply per tool. Kestra gives every tool one URL, applies the same mapping and fallbacks, keeps a full execution history of every alert received, and raises its own alarm when intake fails.

Prerequisites

  • A monday.com board for incidents, with a status column and a text column, or adjust the columnValues map to your column ids.
  • The board id and target group id (the board_id and group_id inputs).
  • A Slack incoming webhook for confirmations and failure alerts.

Secrets

  • MONDAY_API_TOKEN: monday.com personal API v2 token, from Profile, Developers, My Access Tokens.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL.

Quick start

  1. Add the two secrets to your Kestra namespace and set board_id and group_id to your incidents board.
  2. Replace the webhook key with a strong random value.
  3. Execute the flow manually once; the fallbacks create a test item, and Slack reports its id.
  4. Point your monitoring tool at the webhook URL with a JSON body containing title, severity, and service.

How to extend

  • Map more payload fields into columnValues, for example a date column for the alert timestamp or a person column for the on-call engineer.
  • Add io.kestra.plugin.monday.notifications.Create after intake to ping the on-call user directly on the new item.
  • Route by severity with io.kestra.plugin.core.flow.If, creating critical items in a dedicated group via io.kestra.plugin.monday.items.Move.
  • Deduplicate flapping alerts by querying the board first with io.kestra.plugin.monday.items.Query.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.