On a schedule
Post a weekly progress report from monday.com to Slack
Each week, progress against targets on your monday.com board is posted to Slack, with at-risk items called out.
- Runs
- On a schedule
- Apps
- Slack, monday.com
- AI
- Optional
- Access
- boards:read; chat:write
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am, compare progress to target for each item on my OKR board in monday.com, and post a report to #leadership listing anything more than 15% behind.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Teams set goals and targets on a monday.com board, then only look at them at the end of the quarter, when it is too late to change course. A weekly check is the habit that makes goals work, and the one most often skipped.
Posting progress against target in Slack every Monday keeps goals visible. Items falling behind are named early, while there is time to help.
What you get out of it
Goals stay visible
A weekly post keeps targets in front of the team rather than buried on a board.
Problems surface early
Items more than a set amount behind are called out, so they get attention mid-quarter.
No report to build
Nobody spends Monday morning compiling numbers; they are read from the board.
Shared context for leaders
Everyone in the channel sees the same figures before the weekly meeting.
How it works
What happens, step by step
Every Monday ClickRuntime reads each item's progress and target from your monday.com board.
It works out where each item should be at this point in the quarter.
Items more than your chosen amount behind are marked as at risk.
A report with every item's progress and the at-risk list is posted to Slack.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect monday.com
What you get
Build your own
Need it to work differently?
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
- Change what the AI looks for, or how it writes the result
- 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
from datetime import date
from clickruntime import on_trigger, credentials, http, notify
BOARD, TOLERANCE = 1234567890, 0.15
ITEMS = """query ($board: [ID!]) { boards(ids: $board) { items_page(limit: 200) { items {
id name url column_values { id text } } } } }"""
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):
items = monday(ITEMS, board=[BOARD])["boards"][0]["items_page"]["items"]
today = date.today()
q_start = date(today.year, 3 * ((today.month - 1) // 3) + 1, 1)
expected = min((today - q_start).days / 91, 1)
lines, risky = [], []
for i in items:
c = {v["id"]: v["text"] for v in i["column_values"]}
current, target = float(c.get("numbers") or 0), float(c.get("target") or 0)
if not target:
continue
done = current / target
lines.append(f"{i['name']}: {done:.0%} of target (expected {expected:.0%})")
if done < expected - TOLERANCE:
risky.append(f"⚠️ {i['name']} – {done:.0%} vs {expected:.0%}")
notify.slack("Weekly goal check\n" + "\n".join(lines) + ("\n\nAt risk:\n" + "\n".join(risky) if risky else "\n\nNothing at risk."),
channel="#leadership")
return {"items": len(lines), "at_risk": len(risky)}FAQ
Common questions
Which columns does it read?
How is behind calculated?
Can it update the board too?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Alert Slack when monday.com items get stuck
When an item on your monday.com board is marked Stuck, Slack gets a message with the owner and a link.
See how it worksPost monday.com items due today to Slack by person
Every weekday morning, a Slack channel gets the monday.com items due today or overdue, grouped by owner and mentioning each one.
See how it worksPost finished monday.com items to Slack #wins
When an item on a monday.com board is set to Done, #wins gets a message with the item, its owner and a link.
See how it worksKeep exploring
Set up “Post a weekly progress report from monday.com to Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.