Daily
Get your open work items by email each morning
You start the day with a list of every work item assigned to you that isn't closed.
- Runs
- Daily
- Apps
- Azure DevOps
- AI
- Not needed
- Access
- Work Items Read
Send this to your assistant
Create a ClickRuntime automation: every weekday at 8:30am, email me the Azure DevOps work items in project Phoenix assigned to me that aren't Closed, with state and title.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
In Azure DevOps, a developer's day starts with a board that holds work from three sprints, a backlog of bugs and items assigned by other teams. Opening Boards, applying the right query and scanning for what is active takes a few minutes each morning, and on busy days people skip it. The result is a bug that has been assigned to them for a week without a reply, or a task they forgot was theirs until the sprint review.
Each morning, ClickRuntime runs a work item query against Azure DevOps, fetches the fields for the matching items and emails you a list of your active work items with their type, title, state and link. You can open the day's plan from your inbox.
It also helps people who split time across several projects and need one combined list.
What you get out of it
The day starts with a clear list
Rather than scanning a board, you read one email with only your active items. Choosing what to start takes seconds, and the first hour is not lost to orientation. The first hour is not lost to orientation on the board.
Forgotten assignments are rediscovered
Work assigned by another team might sit unseen for days. Because the email lists every active item assigned to you, nothing hides in a backlog column. You do not need to rebuild queries each morning.
Several projects appear in one place
If you work across multiple Azure DevOps projects, a single email shows all active items together. You do not need to switch projects and rebuild queries each morning. Nothing important hides behind a column filter.
Stale items become obvious
Seeing the same work item in your email for two weeks tells you it is blocked or abandoned. That prompts you to update it or hand it back before it becomes a problem.
Managers can ask for the same email
A team lead who wants visibility without sitting in on every board review can receive the same list for their own items or for a team query. Visibility does not require sitting through board reviews.
How it works
What happens, step by step
Every morning, ClickRuntime asks Azure DevOps for every work item assigned to you that isn't closed.
It looks up each item's number, type, status and title.
You get one email with a line per item, like "#1834 [Active] Bug: Checkout fails for Acme EU customers".
Before it runs live
- Connect Azure DevOps
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
- 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 Azure DevOps steps into one automation
Under the hood
The code that runs this automation
import base64
from clickruntime import on_trigger, credentials, http, notify
ORG, PROJECT = "acme", "Phoenix"
BASE = f"https://dev.azure.com/{ORG}/{PROJECT}/_apis/wit"
@on_trigger
def run(event):
token = base64.b64encode(f":{credentials.secret('AZURE_DEVOPS_PAT')}".encode()).decode()
headers = {"Authorization": f"Basic {token}"}
wiql = {"query": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @project "
"AND [System.AssignedTo] = @me AND [System.State] <> 'Closed' ORDER BY [System.ChangedDate] DESC"}
ids = [w["id"] for w in http.post(f"{BASE}/wiql", params={"api-version": "7.1"}, json=wiql,
headers=headers).json()["workItems"]][:200]
if not ids:
notify.email_me("No open work items", "Nothing assigned to you in Phoenix.")
return {"items": 0}
items = http.get(f"{BASE}/workitems", headers=headers, params={
"ids": ",".join(map(str, ids)), "fields": "System.Title,System.State,System.WorkItemType",
"api-version": "7.1"}).json()["value"]
lines = [f"#{w['id']} [{w['fields']['System.State']}] {w['fields']['System.WorkItemType']}: "
f"{w['fields']['System.Title']}" for w in items]
notify.email_me(f"{len(items)} open work items in {PROJECT}", "\n".join(lines))
return {"items": len(items)}FAQ
Common questions
What query decides which items are included?
Does it show work items assigned to my team?
What permissions does the token need?
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
Get a message when a pull request opens
Reviewers see each new pull request with its title, author and link as soon as it's created.
See how it worksGet alerted when a pipeline run fails
A failed build on your main pipeline is posted right away, so nobody merges on top of it.
See how it worksKnow the moment your website goes down
Your team hears in Slack when the site stops responding or slows down, and again when it's back.
See how it worksKeep exploring
Set up “Get your open work items by email each morning” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.