Skip to content

Weekdays at 9:00

Send everyone their Notion tasks each morning

Every weekday, each person gets a Slack message with their open tasks and due dates.

Runs
Weekdays at 9:00
Apps
Notion, Slack
AI
Not needed
Access
Notion read; Slack chat:write, users:read.email

Send this to your assistant

Create a ClickRuntime automation: every weekday at 9am, check my Notion tasks database for anything not done, and send each assignee a Slack message with their tasks and due dates.

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 Notion task database is easy to fill and easy to ignore. People assign tasks in meetings, due dates are set, and then nobody opens the database until something is late. Without a prompt, an item due on Thursday is noticed on Friday, and managers end up sending individual messages to remind people. The team uses Slack all day but only visits Notion occasionally, so the information is in the wrong place.

Every weekday at 9:00 ClickRuntime queries your Notion task database for items that are not Done, groups them by assignee, matches each Notion person to their Slack account by email, and sends a direct message or a channel post listing their open tasks and due dates. Each person sees their own list when the day starts.

It works well for teams of five to fifty where one Notion database tracks the work.

What you get out of it

  • Due dates are seen on the day they matter

    A task due today appears at the top of the morning message. People plan the day around it, and fewer items slip because nobody looked. People plan their day around it, so fewer items slip merely because nobody opened the database.

  • Managers stop sending reminders

    A manager who spent twenty minutes a day messaging people about their tasks gets that time back. The reminder comes from the system, which is also easier for the recipient to take.

  • Each person sees only their own list

    Grouping by assignee means no one scrolls through a team-wide list to find their lines. A short personal message is read, and a long shared one is skimmed. A short personal message gets read, whereas a long shared list gets skimmed and forgotten.

  • Notion stays the source of truth

    People continue to update tasks in the database because that is what drives the reminder. Data quality improves since an out-of-date task now produces an incorrect message. An out-of-date task now produces a visibly wrong message, so people keep the database accurate.

  • Workload problems show early

    If one person's list has twenty items on Monday, that is visible to them and to the manager. Reassignment happens before anyone is overloaded and quietly falls behind. Reassigning work happens before anyone is overloaded and quietly falling behind on the rest.

How it works

What happens, step by step

  1. Every weekday at 9:00, ClickRuntime reads your Notion tasks database for every task that is not marked Done.

  2. It groups the tasks by the person they are assigned to.

  3. It finds each person in Slack by their email address.

  4. Each person gets a Slack direct message listing their open tasks and due dates.

Before it runs live

  • Connect Notion and share the database you want it to use
  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)

What you get

RunsWeekdays at 9:00
Send everyone their Notion tasks each morningtoday, 9:00Succeeded
Slack · DMYour open tasks: • Draft Q4 newsletter (due 2026-10-21) • Review Northwind contract (due 2026-10-23)

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

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Google Sheets
  • Combine it with other Notion and Slack 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.
notion_task_reminders_in_slack.pyexample
from collections import defaultdict
from slack_sdk import WebClient
from clickruntime import on_trigger, credentials, http

DATABASE_ID = "your-tasks-database-id"

@on_trigger
def run(event):
    resp = http.post(f"https://api.notion.com/v1/databases/{DATABASE_ID}/query",
                     headers={"Authorization": f"Bearer {credentials.secret('NOTION_TOKEN')}", "Notion-Version": "2022-06-28"},
                     json={"filter": {"property": "Status", "status": {"does_not_equal": "Done"}}})
    by_person = defaultdict(list)
    for page in resp.json()["results"]:
        p = page["properties"]
        title = "".join(t["plain_text"] for t in p["Name"]["title"])
        due = (p["Due"]["date"] or {}).get("start", "no date")
        for person in p["Assignee"]["people"]:
            by_person[person["person"]["email"]].append(f"• {title} (due {due})")
    slack = WebClient(token=credentials.connection("slack", "work"))
    for email, tasks in by_person.items():
        user = slack.users_lookupByEmail(email=email)["user"]["id"]
        slack.chat_postMessage(channel=user, text="Your open tasks:\n" + "\n".join(tasks))
    return {"people": len(by_person)}

FAQ

Common questions

How are Notion people matched to Slack users?
By email address. The email on the Notion person is looked up in Slack and the message is sent to that user. People without a match can be sent to a fallback channel instead. The Slack workspace must have the same email for that person.
Does it include tasks with no due date?
You choose. Many teams list dated tasks first and show undated ones in a short section underneath, while others leave them out so the message only covers what is due soon. Overdue items can be shown first, ahead of items due later in the week.
Can reminders go to a channel instead of direct messages?
Yes. You can post one message per team to a channel, with each person's tasks under their name. Direct messages feel more personal, while a channel adds gentle visibility across the team. Either way, the content is built from the same query.
What permissions does it need?
Notion read; Slack chat:write, users:read.email. 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 runs (weekdays at 9:00). Checks that find nothing to do 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 “Send everyone their Notion tasks each morning” from your assistant

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