Webhook icon
CreateTask icon
SlackIncomingWebhook icon

Create an Urgent Todoist Task from Every Incoming Alert

Turn monitoring alerts into urgent Todoist tasks with Kestra. A webhook creates a task due today and confirms the task id to Slack so nothing is lost.

Categories
Business

Alerts are easy to see and easy to lose. A Slack ping or a pager notification scrolls away, and thirty minutes later nobody remembers whether anyone picked it up. This blueprint gives every alert a durable owner: a Kestra webhook receives the alert payload, io.kestra.plugin.todoist.CreateTask creates a priority 4 task due today, and Slack gets a confirmation carrying the created task id. The alert now lives somewhere that nags until it is closed.

How it works

  1. alert_webhook (io.kestra.plugin.core.trigger.Webhook) exposes an endpoint keyed by a shared secret string. Any monitoring tool that can POST JSON can call it.
  2. create_task (io.kestra.plugin.todoist.CreateTask) builds the task from the request body: content comes from trigger.body.title and the long description from trigger.body.description, each with a ?? fallback so a malformed payload still produces a visible task instead of a template error. The task is created with priority: 4 and dueString: today, so it lands at the top of today's list.
  3. The task id returned by Todoist is exposed as {{ outputs.create_task.taskId }} and posted to Slack by confirm.
  4. The errors block posts a distinct Slack warning when creation fails, explicitly saying the alert was not captured.

What you get

  • Every alert becomes a task with an owner, a priority, and a due date, instead of a notification that scrolls away.
  • Graceful handling of incomplete payloads through ?? fallbacks.
  • The Todoist task id in Slack, linking the alert conversation to the todo that tracks it.
  • A failure path that says loudly when an alert was NOT captured.

Who it's for

  • On-call engineers who triage alerts through a personal or shared task list.
  • Small teams without a full incident management platform who still want alerts tracked to closure.
  • Anyone wiring monitoring tools, cron jobs, or CI systems into a lightweight follow-up system.

Why orchestrate this with Kestra

Todoist has no native inbound webhook for task creation from arbitrary systems. Kestra provides the endpoint, the payload templating with safe fallbacks, the secret handling for the API token, the Slack confirmation, and an execution history that shows exactly which alert produced which task and when.

Prerequisites

  • A Todoist account and a personal API token.
  • A Slack incoming webhook for confirmations and failure alerts.
  • A monitoring or alerting tool able to POST JSON with title and description fields, or adjust the expressions to your payload shape.

Secrets

  • TODOIST_API_TOKEN: Todoist personal API token.
  • SLACK_WEBHOOK_URL: Slack incoming webhook URL.

Quick start

  1. Add the two secrets to your Kestra namespace.
  2. Replace change-me-strong-webhook-key with a strong random string.
  3. POST a test payload such as {"title": "Disk 90 percent on db-1", "description": "Grows 2 percent per hour"} to the webhook URL.
  4. Check Todoist for the urgent task and Slack for the confirmation with its id.

How to extend

  • Route tasks into a dedicated on-call project by setting projectId.
  • Map alert severity to priority with a conditional expression instead of hardcoding 4.
  • Pair with the done-signal closer blueprint so the resolving system completes the task automatically.
  • Add an io.kestra.plugin.core.flow.If task to skip task creation for low-severity payloads.

Links

See How

New to Kestra?

Use blueprints to kickstart your first workflows.