Skip to content

Every 5 minutes

Turn Slack #requests messages into monday.com items

Each new message in a Slack #requests channel becomes an item on a monday.com board, and the thread gets a link back to it.

Runs
Every 5 minutes
Apps
Slack, monday.com
AI
Not needed
Access
boards:write; channels:history, users:read, chat:write

Send this to your assistant

Create a ClickRuntime automation: every 5 minutes, read new messages in #requests in Slack. For each top-level message, create an item on my Requests board in monday.com named after the first line, add the full message and the author as an update, then reply in the Slack thread with the item link.

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

Requests posted in Slack are easy to make and easy to lose. A day later the message has scrolled away and nobody remembers who said they would handle it.

Turning each message into a monday.com item gives every request an owner, a status and a place in the queue, without asking people to leave Slack.

The reply in the thread closes the loop: the requester sees the request was logged and can open it any time.

What you get out of it

  • People keep asking in Slack

    Nobody has to learn a form. They post in #requests as they always have.

  • Nothing scrolls away

    Every top-level message becomes an item that stays on the board until it is done.

  • Requester can follow along

    The threaded reply links to the item, so status questions answer themselves.

  • Full context on the item

    The whole message and the author's name are saved as an update on the item.

  • No duplicates

    The automation remembers the last message it read, so each request is logged once.

How it works

What happens, step by step

  1. Every 5 minutes ClickRuntime reads the messages posted in #requests since the last check.

  2. It skips thread replies and bot posts, so only new requests count.

  3. Each request becomes a monday.com item named after its first line, with the full text and the author added as an update.

  4. The automation replies in the Slack thread with the item link, so the requester can follow progress.

Before it runs live

  • Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
  • Connect monday.com

What you get

RunsEvery 5 minutes
Turn Slack #requests messages into monday.com itemstoday, 9:00Succeeded
Slack · #requests (thread reply)Logged on the Requests board: *Need updated logo files for the Berlin event* https://acme.monday.com/boards/5530/pulses/90214

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 Google Sheets
  • Combine it with other Slack and monday.com 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.
turn_slack_requests_messages_into_monday_com_items.pyexample
from slack_sdk import WebClient
from clickruntime import on_trigger, credentials, http, state

CHANNEL, BOARD = "C04REQUESTS", 1234567890
CREATE = """mutation ($board: ID!, $name: String!) { create_item(board_id: $board, item_name: $name) { id url } }"""
UPDATE = """mutation ($item: ID!, $body: String!) { create_update(item_id: $item, body: $body) { id } }"""
def monday(query, **variables):
    resp = http.post("https://api.monday.com/v2", json={"query": query, "variables": variables},
                     headers={"Authorization": credentials.secret("MONDAY_API_TOKEN"), "API-Version": "2024-10"})
    resp.raise_for_status()
    return resp.json()["data"]

@on_trigger
def run(event):
    slack = WebClient(token=credentials.connection("slack", "work"))
    last = state.get("last_ts")
    if not last:
        latest = slack.conversations_history(channel=CHANNEL, limit=1)["messages"]
        state.set("last_ts", latest[0]["ts"] if latest else "0")
        return {"created": 0, "note": "starting point saved"}
    msgs = slack.conversations_history(channel=CHANNEL, oldest=last, limit=200)["messages"]
    created = 0
    for m in sorted(msgs, key=lambda m: float(m["ts"])):
        last = m["ts"]
        if m.get("bot_id") or m.get("subtype") or m.get("thread_ts", m["ts"]) != m["ts"]:
            continue
        text = m.get("text", "").strip()
        if not text:
            continue
        author = slack.users_info(user=m["user"])["user"]["real_name"]
        item = monday(CREATE, board=BOARD, name=text.splitlines()[0][:200])["create_item"]
        monday(UPDATE, item=item["id"], body=f"From {author} in #requests:\n\n{text}")
        slack.chat_postMessage(channel=CHANNEL, thread_ts=m["ts"], text=f"Logged on the Requests board: *{text.splitlines()[0][:120]}*\n{item['url']}")
        created += 1
    state.set("last_ts", last)
    return {"created": created}

FAQ

Common questions

Will replies in a thread create items too?
No. Only top-level messages count. Replies, bot posts and channel join messages are skipped.
Does it work in a private channel?
Yes, if your Slack app has the groups:history scope and has been invited to the channel.
Can it fill in a requester or priority column?
Yes. Ask your assistant to set column values when the item is created, for example a text column with the author's name or a priority based on words like urgent.
What permissions does it need?
boards:write; channels:history, users:read, chat:write. 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 “Turn Slack #requests messages into monday.com items” from your assistant

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