monday.com Status Change to CRM/ERP Action
When an item's status changes on a monday.com board (e.g. to Ready to Invoice, Shipped, Approved), the flow performs the matching downstream action — create an invoice in Dataverse/QuickBooks, update the CRM deal, or notify a customer — and writes the result back to the item. Connects monday.com workflows to systems of record.
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 connects monday.com workflows to systems of record. When an item's status changes on a monitored board (e.g. to Ready to Invoice, Shipped, Approved), the flow performs the matching downstream action — create an invoice/CRM record in Dataverse, or notify a customer via Outlook — and writes a result reference back onto the monday.com item. It is idempotent: a Dataverse ledger guarantees a re-fired status does not double-act.
Why it matters: monday.com is great for process, but the value lands when status changes drive real actions in finance/CRM systems instead of manual re-entry.
Build status: Built and verified in this org (Off/demo). Flow Checker 0 errors / 0 warnings.
Build Note — Trigger Adaptation: The monday.com connector (shared_mondaycom) is an MCP-invoke connector (single InvokeMondayMCP over JSON-RPC + GraphQL). It has no native when-status-changes trigger. The flow uses a Recurrence poll (every 15 minutes) that reads the board via GraphQL and detects status changes against a Dataverse idempotency ledger (flowlibs_mondaystatusaction) — the connector-first equivalent of the status-change trigger.
Use Case
A team that runs a process on monday.com wants status changes to drive the corresponding action in the system of record — invoicing, CRM updates, or customer comms — automatically and without double-processing.
Flow Architecture
Recurrence
Recurrence (every 15 minutes)Polls monday.com; the MCP connector has no change trigger.
Init CorrelationId
Initialize VariableMints a guid() stamped on every ledger row + notification for cross-system tracing.
Init config + working variables
Initialize VariableLoad the six environment variables plus working vars varSession / varResultRef / varActionTaken.
Initialize MCP Session
monday.com InvokeMondayMCP (initialize)JSON-RPC initialize; returns the Mcp-Session-Id header (Set Session Id captures it).
Query Board Items
monday.com InvokeMondayMCP (tools/call -> all_monday_api)GraphQL query returning each item's id, name, and aliased statuscol.
Compose Items
ComposeParses the JSON-RPC response into the array of board items.
Apply to each Item
Foreach (concurrency 1)Per item: extract status, look up action in the map, check the Dataverse idempotency ledger, and if mapped and unprocessed switch on action (Invoice/Notify/UpdateCRM), write the result back to monday via change_simple_column_value, and log to the ledger.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_MondayMcpToolName | String | all_monday_api | monday.com MCP tool to invoke. |
| flowlibs_MondayBoardId | String | REPLACE_WITH_BOARD_ID | Board monitored for status changes. |
| flowlibs_StatusColumnId | String | status | monday.com status column id to read. |
| flowlibs_ResultColumnId | String | text | monday.com text column for the write-back. |
| flowlibs_StatusActionMap | String | {"Ready to Invoice":"Invoice","Shipped":"Notify","Approved":"UpdateCRM"} | Status label to downstream action. |
| flowlibs_NotifyEmail | String | operations@flowlibs.local | Recipient for customer/ops notifications. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| monday.com | shared_mondaycom | InvokeMondayMCP |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord |
| 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.
- QuickBooks/Xero
- Replace the Invoice-case Dataverse write with the finance system's create-invoice action.
- Real CRM
- Point the UpdateCRM-case Dataverse write at your CRM deal table.
- Customer comms
- Extend the Notify case (Shipped/Delivered) with templated emails or Teams.
- Approval gate
- Insert an Approvals action before high-value actions (e.g. large invoices).
- Poll cadence
- Adjust the Recurrence interval, or swap to a webhook if monday.com webhooks are wired to an HTTP-trigger receiver flow.
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.01Board GraphQL read
Builds the board read query with an aliased status column.
EXPR.02Items array
Extracts the items array from the MCP result.
EXPR.03Current status
Reads the current status label for the item.
EXPR.04Action for status
Looks up the downstream action from the status action map.
EXPR.05Idempotency filter
OData filter guarding against double-processing.
EXPR.06Write-back mutation
Writes the result reference back onto the monday item.
EXPR.07MCP session capture
Captures the MCP session id for reuse.
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.