monday.com WIP and Capacity Guard
On a schedule, the flow counts in-progress items per owner on monday.com against a capacity limit; when someone is over capacity it alerts them and the manager in Teams, flags the newest assignment, and suggests rebalancing. Prevents overload and keeps work-in-progress healthy.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
FlowLibs - monday.com WIP and Capacity Guard is a scheduled cloud flow that protects against work-in-progress (WIP) overload. Once a day it reads every item on a configured monday.com board, counts how many in-progress items each owner holds, and when any owner exceeds the configured WIP limit it posts an alert to a Microsoft Teams channel and emails the manager a rebalancing suggestion.
Why it matters: Overloaded people drop balls and burn out. Surfacing capacity breaches early keeps WIP healthy and prompts rebalancing before delivery slips.
Status: Built and published to the default environment in the Off state. Going live requires only authorizing the three connections and setting the environment variable values — no logic changes.
Use Case
A delivery team manages work on a monday.com board with a status column and a people (owner) column. Leadership wants an automatic, daily early-warning when an individual is carrying more in-progress items than the agreed WIP limit, so work can be rebalanced before it stalls.
Flow Architecture
Recurrence
Recurrence (Daily, 08:00 UTC)Runs the capacity check once per day.
Initialize config variables
Initialize VariableBind tool name, board ID, status/owner column IDs, in-progress label, capacity limit, Teams group/channel IDs, and manager email.
Init Monday Session
monday.com InvokeMondayMCP (initialize)Opens an MCP session and returns the Mcp-Session-Id header.
Compose GraphQL Query
ComposeBuilds the GraphQL query, injecting the board ID and status/owner column IDs.
Query Board Items
monday.com InvokeMondayMCP (tools/call -> all_monday_api)Runs the GraphQL query, returning items with status and owner text.
Compose Board Items
ComposeExtracts the items array from the GraphQL response (empty array if none).
Select Map Items
SelectProjects each item to { Name, Status, Owner }.
Filter In Progress Items
Filter arrayKeeps only items whose status equals the in-progress label.
Select Owners
SelectProjects the owner of each in-progress item.
Compose Distinct Owners
Compose (union)De-duplicates the owner list.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_MondayBoardId | String | 1234567890 | Numeric monday.com board ID to evaluate. |
| flowlibs_MondayMcpToolName | String | all_monday_api | MCP tool name used to run GraphQL. |
| flowlibs_MondayStatusColumnId | String | status | Column ID of the status column. |
| flowlibs_MondayOwnerColumnId | String | person | Column ID of the people/owner column. |
| flowlibs_MondayInProgressLabel | String | Working on it | Status label that marks an item in progress. |
| flowlibs_WipCapacityLimit | String | 5 | Max in-progress items per owner before alerting. |
| flowlibs_TeamsGroupId | String | REPLACE_WITH_TEAMS_GROUP_ID | Teams group (team) ID for alerts. |
| flowlibs_TeamsChannelId | String | REPLACE_WITH_TEAMS_CHANNEL_ID | Teams channel ID for alerts. |
| flowlibs_ManagerEmail | String | manager@contoso.com | Manager email for rebalancing suggestion. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| monday.com | shared_mondaycom | InvokeMondayMCP |
| Microsoft Teams | shared_teams | PostMessageToConversation |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Tighten or relax the limit
- Change flowlibs_WipCapacityLimit. For per-owner limits, replace the single limit with a JSON map env var and look up the current owner's limit in the condition.
- Change the cadence
- Edit the Recurrence trigger (e.g. hourly, or weekdays only).
- Notify the owner directly
- Add an Office 365 Users lookup to resolve the owner's email from their monday.com display name, then email them as well as the manager.
- Effort-weighted WIP
- Pull an effort/size column in the GraphQL query and sum it instead of counting items.
- Adaptive Card
- Replace the HTML Teams message with an Adaptive Card that includes the over-capacity item list.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Build GraphQL query (Compose)
Builds the board query with aliased status and owner columns.
EXPR.02Capture MCP session id
Captures the MCP session id from the initialize response.
EXPR.03Parse items from MCP result
Extracts the items array with an empty-array fallback.
EXPR.04Owner text per item
Reads the owner text, defaulting to Unassigned.
EXPR.05In-progress filter
Keeps items whose status matches the in-progress label.
EXPR.06Over-capacity test (If)
True when the owner's in-progress count exceeds the limit.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.