
Monday.com Intake → Jira Backlog Harmonizer
描述
分类
⚙️ Automation
使用的节点
n8n-nodes-base.ifn8n-nodes-base.jiran8n-nodes-base.jiran8n-nodes-base.jiran8n-nodes-base.webhookn8n-nodes-base.functionn8n-nodes-base.functionn8n-nodes-base.mondayComn8n-nodes-base.mondayComn8n-nodes-base.stickyNote
价格免费
浏览量0
最后更新11/28/2025
workflow.json
{
"id": "HHGG8ayfMX7B8r9p",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Monday.com Intake → Jira Backlog Harmonizer",
"tags": [],
"nodes": [
{
"id": "45f009e0-33db-4c6f-a295-d6cf5c755664",
"name": "Listen for Monday.com Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-1904,
752
],
"webhookId": "76739f12-e0c0-48f8-ac17-6401f012e3a3",
"parameters": {
"path": "76739f12-e0c0-48f8-ac17-6401f012e3a3",
"options": {}
},
"typeVersion": 2.1
},
{
"id": "3be4baa8-90ac-49f1-8afb-f4ed9a906744",
"name": "🚀 Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2256,
640
],
"parameters": {
"width": 280,
"height": 320,
"content": "🚀 WORKFLOW START\n\nThis workflow synchronizes tasks between Monday.com and Jira:\n\n• Receives webhook from Monday.com\n• Normalizes data fields\n• Checks for duplicates in Jira\n• Creates new issues or updates existing\n• Logs actions back to Monday.com\n• Keeps backlog in sync"
},
"typeVersion": 1
},
{
"id": "111d4694-a01a-4189-ac6a-af3da8fecbd7",
"name": "Normalize Monday Fields",
"type": "n8n-nodes-base.function",
"position": [
-1664,
752
],
"parameters": {
"functionCode": "return items.map(item => ({\n json: {\n summary: item.json.name.trim(),\n component: item.json.column_values.find(c => c.id === 'component')?.text?.toLowerCase() || '',\n severity: item.json.column_values.find(c => c.id === 'severity')?.text?.toUpperCase() || '',\n description: item.json.column_values.find(c => c.id === 'description')?.text || 'No description',\n mondayItemId: item.json.id\n }\n}));"
},
"typeVersion": 1
},
{
"id": "30e2fa62-db9e-4b2c-99d8-61a6779fca67",
"name": "🔄 Normalize",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1792,
400
],
"parameters": {
"width": 280,
"height": 320,
"content": "🔄 DATA NORMALIZATION\n\nExtracts and standardizes Monday.com data:\n\nFrom column_values:\n✓ summary: Item name (trimmed)\n✓ component: Component column (lowercase)\n✓ severity: Severity level (uppercase)\n✓ description: Full description text\n✓ mondayItemId: Original Monday ID\n\nTransforms unstructured data into clean fields for Jira integration"
},
"typeVersion": 1
},
{
"id": "6d65b39b-53c6-452a-8f20-c9c9441b8620",
"name": "Query Jira Backlog",
"type": "n8n-nodes-base.jira",
"position": [
-1408,
752
],
"parameters": {
"options": {},
"operation": "getAll"
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "199LdjjU3PhhL8xb",
"name": "saurabh jira"
}
},
"typeVersion": 1
},
{
"id": "1deddf13-0946-410c-8382-4060c168c63e",
"name": "📊 Jira Search",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1536,
928
],
"parameters": {
"width": 280,
"height": 248,
"content": "📊 JIRA SEARCH\n\nRetrieves all existing issues from Jira:\n\n• Uses Jira REST API\n• Fetches all issues (getAll)\n• Returns: issue keys, summaries, fields\n• Scans entire backlog\n\nUsed as baseline for duplicate detection"
},
"typeVersion": 1
},
{
"id": "1be0064c-80c1-4ac4-940f-92a3c2bfb1fa",
"name": "Detect Duplicates (Fuzzy Match)",
"type": "n8n-nodes-base.function",
"position": [
-1152,
752
],
"parameters": {
"functionCode": "function similarity(a, b) {\n if (!a || !b) return 0;\n const longer = a.length > b.length ? a : b;\n const shorter = a.length > b.length ? b : a;\n const longerLength = longer.length;\n const same = longer.split('').filter((ch, i) => ch === shorter[i]).length;\n return same / longerLength;\n}\n\nconst mondayTitle = $json.summary;\nconst matches = $items(\"Query Jira Backlog\").map(i => i.json.fields.summary);\n\nlet found = matches.find(jiraTitle => similarity(mondayTitle, jiraTitle) > 0.8);\nreturn [{ json: { duplicateFound: !!found, jiraMatch: found || null, summary: mondayTitle, component: $json.component, severity: $json.severity, description: $json.description, mondayItemId: $json.mondayItemId } }];"
},
"typeVersion": 1
},
{
"id": "2f89cce7-8f05-45a6-8b7e-2a1609c24d22",
"name": "🔍 Fuzzy Match",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
336
],
"parameters": {
"width": 280,
"height": 372,
"content": "🔍 FUZZY DUPLICATE DETECTION\n\nAlgorithm:\n• Compares Monday summary against all Jira titles\n• Character-level similarity matching\n• Threshold: > 80% match\n\nDetects:\n✓ Exact duplicates\n✓ Minor typos/variations\n✓ Rephrased titles\n\nReturns:\n• duplicateFound: true/false\n• jiraMatch: Matching title or null\n\nPrevents duplicate work items"
},
"typeVersion": 1
},
{
"id": "f7defb99-5372-47b8-8dcd-71fdffbd50e8",
"name": "Is Duplicate Found?",
"type": "n8n-nodes-base.if",
"position": [
-912,
752
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$json.duplicateFound}}",
"value2": true
}
]
}
},
"typeVersion": 1
},
{
"id": "c4be938b-ea49-42a3-a350-b39a9df1a6d3",
"name": "⚖️ Decision Gate",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1024,
928
],
"parameters": {
"width": 280,
"height": 300,
"content": "⚖️ DECISION GATE\n\nBranches based on duplicate status:\n\nIF duplicateFound = true:\n→ Route to \"Update Existing\"\n→ Merge with existing issue\n→ Avoid duplicates\n\nIF duplicateFound = false:\n→ Route to \"Create New\"\n→ Create fresh Jira issue\n→ Add to backlog"
},
"typeVersion": 1
},
{
"id": "14c16881-d977-4cd3-a471-9c4c83d009c7",
"name": "Update Jira Issue (Duplicate)",
"type": "n8n-nodes-base.jira",
"position": [
-624,
640
],
"parameters": {
"issueKey": "={{ $json.key }}",
"operation": "update",
"updateFields": {}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "199LdjjU3PhhL8xb",
"name": "saurabh jira"
}
},
"typeVersion": 1
},
{
"id": "fc34cee2-b64b-46c7-b3b5-920b9ef7ebbb",
"name": "🔧 Update Existing",
"type": "n8n-nodes-base.stickyNote",
"position": [
-768,
304
],
"parameters": {
"width": 280,
"height": 300,
"content": "🔧 UPDATE EXISTING\n\nWhen duplicate detected:\n\n• Uses matched Jira issue key\n• Updates existing record\n• Adds new information\n• Increments counter\n• Preserves history\n\nFields updated:\n✓ Priority (from severity)\n✓ Component\n✓ Description\n✓ Comments (link to Monday)\n\nNo duplicate created"
},
"typeVersion": 1
},
{
"id": "e4f538fb-c6e7-48b8-ac96-3d0443a79770",
"name": "Create New Jira Issue",
"type": "n8n-nodes-base.jira",
"position": [
-624,
912
],
"parameters": {
"project": {
"__rl": true,
"mode": "list",
"value": "10001",
"cachedResultName": "Kanban"
},
"summary": "={{ $json.summary }}",
"issueType": {
"__rl": true,
"mode": "list",
"value": "10006",
"cachedResultName": "Task"
},
"additionalFields": {}
},
"credentials": {
"jiraSoftwareCloudApi": {
"id": "Q6d7sLBVOfGWmaLw",
"name": "Jira SW Cloud account vivek"
}
},
"typeVersion": 1
},
{
"id": "8bb7efe4-3bea-433b-82b2-2a8b6c97b2fe",
"name": "✨ Create New",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
1088
],
"parameters": {
"width": 280,
"height": 300,
"content": "✨ CREATE NEW\n\nWhen no duplicate found:\n\n• Creates new Jira issue\n• Project: Kanban (10001)\n• Issue Type: Task (10006)\n• Summary: From Monday title\n• Fields populated:\n ✓ Component\n ✓ Severity → Priority\n ✓ Description\n ✓ Monday link reference\n\nIssue added to backlog"
},
"typeVersion": 1
},
{
"id": "982e09b8-dd7a-4403-9350-3f36bdc45f0c",
"name": "Update Monday Item (Log Action)",
"type": "n8n-nodes-base.mondayCom",
"position": [
-400,
912
],
"parameters": {
"value": "={{ $json.text }}",
"itemId": "={{ $json.id }}",
"resource": "boardItem",
"operation": "addUpdate"
},
"credentials": {
"mondayComApi": {
"id": "v9QkK1x0MHK2ULvk",
"name": "Monday.com account ch"
}
},
"typeVersion": 1
},
{
"id": "39f2d6f0-c84c-45b4-9628-8691376f71ea",
"name": "📝 Log to Monday",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
1056
],
"parameters": {
"width": 280,
"height": 300,
"content": "📝 LOG BACK TO MONDAY\n\nAfter Jira action completed:\n\n• Adds update to Monday item\n• Documents:\n ✓ Action taken (created/updated)\n ✓ Jira issue key\n ✓ Timestamp\n ✓ Status\n\nCreates audit trail\nSyncronizes status bidirectionally\nTeam sees Jira confirmation in Monday"
},
"typeVersion": 1
},
{
"id": "3707e0dd-90bf-47ff-931e-ea55bbc5004c",
"name": "Create Monday Board",
"type": "n8n-nodes-base.mondayCom",
"position": [
-400,
640
],
"parameters": {
"kind": "private",
"name": "={{ $json.name }}",
"additionalFields": {}
},
"credentials": {
"mondayComApi": {
"id": "v9QkK1x0MHK2ULvk",
"name": "Monday.com account ch"
}
},
"typeVersion": 1
},
{
"id": "6eb9c805-91d0-4e34-9713-792fac117629",
"name": "📋 Create Board",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
560
],
"parameters": {
"width": 280,
"height": 300,
"content": "📋 OPTIONAL: CREATE BOARD\n\nCan create new Monday.com board:\n• Project name from Jira\n• Private board\n• For team collaboration\n\nNote: This node appears unused in current flow\nCan be utilized for advanced scenarios\nExample: Auto-create board per Jira project"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "3788c8fe-da28-419d-82f7-ccaec22e4d5e",
"connections": {
"Query Jira Backlog": {
"main": [
[
{
"node": "Detect Duplicates (Fuzzy Match)",
"type": "main",
"index": 0
}
]
]
},
"Is Duplicate Found?": {
"main": [
[
{
"node": "Update Jira Issue (Duplicate)",
"type": "main",
"index": 0
}
],
[
{
"node": "Create New Jira Issue",
"type": "main",
"index": 0
}
]
]
},
"Create New Jira Issue": {
"main": [
[
{
"node": "Update Monday Item (Log Action)",
"type": "main",
"index": 0
}
]
]
},
"Normalize Monday Fields": {
"main": [
[
{
"node": "Query Jira Backlog",
"type": "main",
"index": 0
}
]
]
},
"Listen for Monday.com Webhook": {
"main": [
[
{
"node": "Normalize Monday Fields",
"type": "main",
"index": 0
}
]
]
},
"Update Jira Issue (Duplicate)": {
"main": [
[
{
"node": "Create Monday Board",
"type": "main",
"index": 0
}
]
]
},
"Detect Duplicates (Fuzzy Match)": {
"main": [
[
{
"node": "Is Duplicate Found?",
"type": "main",
"index": 0
}
]
]
}
}
}