The moment it happens
Set a due date on new monday.com items automatically
New items on a monday.com board that arrive without a due date get one, a set number of working days ahead based on their priority.
- Runs
- The moment it happens
- Apps
- monday.com
- AI
- Not needed
- Access
- boards:read, boards:write, webhooks:write
Send this to your assistant
Create a ClickRuntime automation: when an item is created on my Support board in monday.com and its Due date column is empty, set the due date to 1 working day ahead if Priority is High, 3 if Medium and 5 otherwise. Skip weekends.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Items created from forms, emails and integrations often arrive with no due date. Without one they do not show on calendars or timelines, and nobody knows when they are expected.
Setting a default from the item's priority gives every request a target the moment it lands, and urgent items get a shorter one.
Counting working days means a High priority item created on Friday is due Monday, not Saturday.
What you get out of it
Every item has a date
Items no longer sit on the board with an empty due date.
Based on priority
Urgent items get a short deadline and routine ones a longer one.
Weekends skipped
Deadlines land on working days.
Manual dates kept
If someone set a date already, it is not changed.
Shows on timelines
With a date set, items appear on calendar and timeline views straight away.
How it works
What happens, step by step
A monday.com webhook tells ClickRuntime when a new item is created on the board.
If the item already has a due date, it is left alone.
Otherwise ClickRuntime reads the Priority column and counts that many working days ahead, skipping weekends.
The due date is written to the item, usually within seconds of it being created.
Before it runs live
- Connect monday.com
- Paste your automation's link into the other app's webhook settings
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
- 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 monday.com steps into one automation
Under the hood
The code that runs this automation
import json
from datetime import date, timedelta
from clickruntime import on_event, credentials, http
DAYS = {"High": 1, "Medium": 3}
DEFAULT_DAYS = 5
ITEM = """query ($id: [ID!]) { items(ids: $id) { board { id } column_values(ids: ["date", "priority"]) { id text } } }"""
SET = """mutation ($board: ID!, $item: ID!, $value: JSON!) {
change_column_value(board_id: $board, item_id: $item, column_id: "date", value: $value) { 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"]
def working_days_ahead(n):
d = date.today()
while n > 0:
d += timedelta(days=1)
if d.weekday() < 5:
n -= 1
return d
@on_event
def handle(event):
body = event.json or {}
if "challenge" in body:
return {"challenge": body["challenge"]}
item_id = body["event"]["pulseId"]
item = monday(ITEM, id=[item_id])["items"][0]
c = {v["id"]: v["text"] for v in item["column_values"]}
if c.get("date"):
return {"skipped": "already has a due date"}
days = DAYS.get(c.get("priority") or "", DEFAULT_DAYS)
due = working_days_ahead(days).isoformat()
monday(SET, board=item["board"]["id"], item=item_id, value=json.dumps({"date": due}))
return {"item": item_id, "due": due, "days": days}FAQ
Common questions
What if the priority is set after the item is created?
Can it skip public holidays as well as weekends?
Will it overwrite a date someone typed in?
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
Add form entries to a monday.com board
Each new form entry becomes an item on your board, with its fields filled into the right columns.
See how it worksLog app errors as monday.com items
Errors from your systems land on a board as items with the message, source and time, ready to assign.
See how it worksHear about new board items in Slack
Your channel gets a message with the item's name and key columns whenever something is added to the board.
See how it worksKeep exploring
Set up “Set a due date on new monday.com items automatically” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.