Trello WIP Limit Enforcer
On a schedule, the flow counts cards per list against configured WIP limits; when a list exceeds its limit, it flags the newest card, posts a WIP-breach alert to Teams, and emails the team lead. Enforces the flow discipline that Trello does not enforce natively.
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
This flow enforces Work-In-Progress (WIP) limits on a Trello board. On a schedule it reads every list and open card, counts cards per list against a configurable per-list limit, and when a list exceeds its limit it flags the newest card with a comment, posts a consolidated WIP-breach alert to a Microsoft Teams channel, and emails the team lead a summary.
Why it matters: WIP limits are the core discipline of Kanban - they force teams to finish work before starting new work. Trello has no native WIP enforcement, so limits get ignored. This surfaces overload automatically and nudges the team to pull rather than push.
Ships Off - turn on after authorizing connections and setting the board ID and limits.
Use Case
A team running Kanban on a Trello board wants its WIP limits actually respected. Instead of relying on people to self-police, a scheduled check counts cards per list and raises an alert the moment a list goes over its limit - flagging the newest card, notifying the channel, and emailing the lead.
Flow Architecture
Hourly Recurrence
RecurrencePeriodic WIP audit, every 1 hour (Eastern). Tune to your cadence.
Initialize Config & Counters
Initialize variable (x8)Binds board id, WIP map, default limit, Teams group/channel, lead email; seeds the breach counter and HTML summary accumulator.
List Board Lists
Trello - ListListsReads all lists on the board.
List Board Cards
Trello - ListCardsReads all cards on the board once (filtered per-list in memory to avoid one call per list).
For Each List
Apply to each (concurrency 1)Filters open cards in the list, resolves the per-list limit (map lookup, else default), counts them, and branches when count exceeds the limit.
Flag Newest Card (over limit)
Trello - AddCommentToCardAdds a WIP-breach comment to the newest card on the over-limit list, increments the breach count, and appends an HTML summary row.
Notify if Any Breach
ConditionOnly when at least one list breached: post a consolidated alert to Teams and email the lead (Importance High). A healthy board stays silent.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_TrelloBoardId | String | REPLACE_WITH_TRELLO_BOARD_ID | The Trello board whose lists are checked. |
| flowlibs_WipLimitMap | String | {"In Progress":3,"In Review":2,"Testing":2,"Doing":3} | JSON map of list name to WIP limit. |
| flowlibs_DefaultWipLimit | String | 5 | Limit applied to any list not in the map. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Target Teams team (group) ID. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Target Teams channel ID. |
| flowlibs_LeadEmail | String | lead@contoso.com | Recipient of the breach summary email. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Trello | shared_trello | ListLists ListCards AddCommentToCard |
| 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.
- Tune limits without editing logic
- Change flowlibs_WipLimitMap (per-list) or flowlibs_DefaultWipLimit (catch-all). No flow edits needed.
- Change cadence
- Edit the Check WIP Limits recurrence (e.g. every 15 min during work hours, or daily).
- Block on breach
- Add a red label to all cards in an over-limit list via UpdateCard_V2 idLabels inside the loop, not just a comment on the newest.
- Aging WIP
- Add a second check to flag cards sitting in a list past an age threshold using dateLastActivity.
- Trend reporting
- Log each breach (list, count, limit, timestamp) to a Dataverse table or SharePoint list to spot chronic bottlenecks.
- Per-list owners
- Replace the single flowlibs_LeadEmail with a name to email map and notify the specific list owner.
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.01Per-list limit (map lookup with fallback)
Resolves the list's limit from the map, else the default.
EXPR.02Open cards in the list (Filter where)
Keeps open cards belonging to the current list.
EXPR.03Over-limit gate
True when the list exceeds its limit.
EXPR.04Newest card on the list
The most-recently-active card, flagged as the likely violator.
EXPR.05Notify only when something breached
Keeps a healthy board silent.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.