Skip to content

Hourly

Get a Slack alert when an Asana task goes overdue

The first time a task passes its due date, your team hears about it once.

Runs
Hourly
Apps
Asana
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: every hour, check my Asana Website Launch project and post to #launch in Slack when a task passes its due date without being completed. Only alert once per task.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A project manager in Asana tracks launch work across several teams. A designer's task slips past its due date on a Thursday and nobody mentions it, because everyone assumes someone else saw the red date. By the following Tuesday the delay has pushed back two dependent tasks, and what could have been a one-day fix becomes a rescheduled launch.

Every hour, ClickRuntime lists incomplete tasks in your chosen Asana project and finds those with a due date before today that it has not reported yet. It posts each one to Slack with the task name, assignee and due date, and then remembers its ID, so the same task is announced only once.

It works best for projects with firm deadlines and several assignees. It can also run for several projects, each posting to its own channel.

What you get out of it

  • Slips surface on day one

    An alert in the first hour after a due date passes turns a small delay into a short conversation. Waiting until a weekly review lets the delay grow into a missed milestone.

  • Dependent work gets protected

    When you know the upstream task is late, you can move the downstream dates before people begin waiting on it. Fewer knock-on delays means fewer surprise reschedules. The project plan stays realistic.

  • Managers stop acting as human reminders

    Nobody has to open the project each morning to look for red dates. The channel does the noticing, and the PM spends the time on removing blockers instead. Blockers get removed sooner.

  • One alert per task avoids fatigue

    Because IDs are remembered, a task that stays overdue for a week produces a single message. People keep reading the channel rather than muting it. Alerts stay trustworthy and noticed.

  • A shared record of lateness

    Over a quarter, the channel shows which kinds of tasks go late and who tends to be overloaded. That evidence supports honest conversations about capacity. Workloads can be rebalanced early.

  • Assignees get a prompt before a client does

    Tasks that touch customers, such as a promised report or an onboarding step, are often the ones that slip. The alert reaches the team before the customer asks where it is, which keeps trust intact.

How it works

What happens, step by step

  1. Every hour, ClickRuntime checks the unfinished tasks in your Asana project.

  2. It picks out tasks whose due date has passed.

  3. It skips tasks it has already alerted on, so each one is flagged once.

  4. A message goes to your Slack channel with the task name, due date, owner and a link.

Before it runs live

  • Connect Asana

What you get

RunsHourly
Get a Slack alert when an Asana task goes overduetoday, 9:00Succeeded
Slack · #launchOverdue: Final QA on pricing page (due 2026-10-18, Alex) app.asana.com/0/1205/1209

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Asana steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
alert_when_a_task_becomes_overdue.pyexample
from datetime import date
from clickruntime import on_trigger, http, credentials, notify, state, report_fetched

PROJECT = "WEBSITE_LAUNCH_PROJECT_GID"

def asana(method, path, body=None, **params):
    r = http.request(method, f"https://app.asana.com/api/1.0{path}", params=params,
                     json={"data": body} if body else None,
                     headers={"Authorization": f"Bearer {credentials.secret('ASANA_TOKEN')}"})
    r.raise_for_status()
    return r.json().get("data")

@on_trigger
def run(event):
    today = date.today().isoformat()
    alerted = set(state.get("alerted") or [])
    tasks = asana("GET", f"/projects/{PROJECT}/tasks", completed_since="now",
                  opt_fields="name,due_on,assignee.name,permalink_url")
    late = [t for t in tasks if t["due_on"] and t["due_on"] < today and t["gid"] not in alerted]
    report_fetched(len(late))
    if not late:
        return {"overdue": 0}
    for t in late:
        who = (t.get("assignee") or {}).get("name", "unassigned")
        notify.slack(f"Overdue: {t['name']} (due {t['due_on']}, {who})\n{t['permalink_url']}", channel="#launch")
        alerted.add(t["gid"])
    state.set("alerted", list(alerted))
    return {"overdue": len(late)}

FAQ

Common questions

What if I change a due date after the alert?
The task has already been remembered, so a new alert is not posted for it unless you clear that memory. If you push a due date forward and it then lapses again, ask your AI assistant to reset tracking for that task.
Does it include tasks without a due date?
No. Only tasks with a due date earlier than today are treated as overdue. Tasks with no date have nothing to compare against, which is why a separate hygiene report is useful for catching undated work.
Can the alert go to the assignee directly?
The message can mention the assignee in Slack if their Asana and Slack emails match. Otherwise it posts to the project channel with the assignee's name in the text, which is the safer default for mixed workspaces.
What permissions does it need?
read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get a Slack alert when an Asana task goes overdue” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.