Send a daily Slack DM to each person with overdue ClickUp tasks

By General Input

Every morning, each assignee gets a personal Slack DM listing their own overdue ClickUp tasks, plus a one-line summary in your ops channel.

Integrations

  • ClickUp
  • Slack

Type

Deterministic Code

Categories

  • Operations

Build me a code workflow that DMs each assignee on Slack every morning with their own list of overdue ClickUp tasks, then posts a single summary line to a manager channel. This is a deterministic fan-out, no LLM reasoning needed.

Trigger: cron, once a day at 10am local time. The hour and timezone should be configurable. Default to weekdays only.

Step 1. Call ClickUp Get Filtered Team Tasks with due_date_lt set to the current timestamp (ClickUp uses Unix epoch milliseconds) and statuses restricted to open statuses (everything that is not closed or done). Paginate through all pages until the result array is empty. Collect every returned task.

Step 2. Group the returned tasks by assignee. ClickUp tasks can have multiple assignees, so a task with two assignees should appear in two people's lists. Drop tasks that have no assignees, but keep their count so the manager summary can mention how many overdue tasks are unassigned.

Step 3. Call Slack List Users once at the start of the run and build an email-to-Slack-user-id map from the response. Skip deleted, deactivated, and bot users. For each ClickUp assignee, look up their Slack user_id by email. If there is no match, skip that person and increment a 'no Slack match' counter.

Step 4. For each matched assignee, call Slack Open a Conversation with their user_id to get the DM channel, then call Slack Send a Message with a fixed-format message. The message should start with a short greeting, then list each overdue task as a bullet with: task title (linked to the ClickUp task URL), due date in the user's local format, and priority if set. Use Slack mrkdwn formatting (*bold*, <url|text> for links).

Step 5. After all DMs are sent, post a single summary message to a configurable Slack manager channel (set as a workflow input). The summary should say something like 'Sent overdue task nudges to N people covering M total overdue tasks. K people had no Slack match. U overdue tasks are unassigned.' Use the same Slack Send a Message operation.

Inputs the user should configure: the manager Slack channel id, the cron schedule (hour and timezone), and an optional list of ClickUp status names to treat as 'open' (default to everything not in the closed category).

Error handling: if a single Slack DM fails (user deactivated, channel error), log it and continue with the rest. Do not abort the run. Respect ClickUp and Slack rate limits with simple backoff on 429.

Do not call any other ClickUp or Slack operations beyond the four listed above (ClickUp Get Filtered Team Tasks, Slack List Users, Slack Open a Conversation, Slack Send a Message). Every step has known inputs and outputs, which is why this is a code workflow and not an agent.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes