Auto Categorise Outlook Emails With Ai

1 Tools

Explore Tool Categories

Find Agencies for This Project

Know a Better Recipe?

Help the community by sharing your proven tool combinations.

Submit a Recipe

About this recipe

A recipe for Auto Categorise Outlook Emails With Ai

Recipe Template

{
    "meta": {
        "instanceId": "67d4d33d8b0ad4e5e12f051d8ad92fc35893d7f48d7f801bc6da4f39967b3592"
    },
    "nodes": [
        {
            "id": "30f5203b-469d-4f0c-8493-e8f08e14e4fe",
            "name": "When clicking \u2018Test workflow\u2019",
            "type": "n8n-nodes-base.manualTrigger",
            "position": [
                -560,
                440
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "d16f59dd-f54e-487b-9aac-67f109ba9869",
            "name": "Sticky Note8",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1000,
                -280
            ],
            "parameters": {
                "color": 7,
                "width": 727.9032097745135,
                "height": 110.58643966444157,
                "content": "# Auto Categorise Outlook Emails with AI\nBuilt by [Wayne Simpson](https:\/\/www.linkedin.com\/in\/simpsonwayne\/) at [nocodecreative.io](https:\/\/nocodecreative.io)"
            },
            "typeVersion": 1
        },
        {
            "id": "4e110412-8530-4322-bc5c-7f9df2b63bcb",
            "name": "Sticky Note9",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1100,
                -120
            ],
            "parameters": {
                "color": 7,
                "width": 506.8102696237577,
                "height": 337.24177957113216,
                "content": "### Watch Set Up Video \ud83d\udc47\n[![Auto Categorise Outlook Emails with AI](https:\/\/vdyfnvnstovfxpabhdjc.supabase.co\/storage\/v1\/object\/public\/images\/Thumbnails\/auto-categories-emails.png?t=2024-10-11T09%3A56%3A37.961Z#full-width)](https:\/\/www.youtube.com\/watch?v=EhRBkkjv_3c)\n\n"
            },
            "typeVersion": 1
        },
        {
            "id": "9d79875f-148e-46ef-967a-95c07298456d",
            "name": "Ollama Chat Model1",
            "type": "@n8n\/n8n-nodes-langchain.lmChatOllama",
            "position": [
                1129,
                684
            ],
            "parameters": {
                "model": "qwen2.5:14b",
                "options": {
                    "temperature": 0.2
                }
            },
            "typeVersion": 1
        },
        {
            "id": "bcf92a71-ff5f-46a7-bec3-cedb5be2bf98",
            "name": "Microsoft Outlook10",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                3020,
                8
            ],
            "parameters": {
                "folderId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAAAAgFJAAAA",
                    "cachedResultUrl": "https:\/\/outlook.office365.com\/mail\/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAAAAgFJAAAA",
                    "cachedResultName": "Junk Email"
                },
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "move"
            },
            "typeVersion": 2
        },
        {
            "id": "100db1cb-3819-43c7-a74b-5c087ad4f2da",
            "name": "Microsoft Outlook12",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2700,
                8
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "d4969259-a3ae-473d-82ef-0c9f7933c899",
            "name": "Loop Over Items1",
            "type": "n8n-nodes-base.splitInBatches",
            "position": [
                160,
                448
            ],
            "parameters": {
                "options": []
            },
            "typeVersion": 3
        },
        {
            "id": "524f6be3-7708-4aae-b9ab-e0ef8180a627",
            "name": "Microsoft Outlook13",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2700,
                188
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "72cb54f3-4e4e-4ad2-8845-11a38fc29f1a",
            "name": "Microsoft Outlook15",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                3020,
                188
            ],
            "parameters": {
                "folderId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrBwAAAA==",
                    "cachedResultUrl": "https:\/\/outlook.office365.com\/mail\/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrBwAAAA%3D%3D",
                    "cachedResultName": "Receipt"
                },
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "move"
            },
            "typeVersion": 2
        },
        {
            "id": "e4446e84-c05e-4d04-b415-7608e39024ee",
            "name": "Microsoft Outlook16",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2709,
                504
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "3ee05cfe-a528-472e-aa3d-c890fd88b6c4",
            "name": "Microsoft Outlook17",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                3020,
                508
            ],
            "parameters": {
                "folderId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCAAAAA==",
                    "cachedResultUrl": "https:\/\/outlook.office365.com\/mail\/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCAAAAA%3D%3D",
                    "cachedResultName": "Community"
                },
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "move"
            },
            "typeVersion": 2
        },
        {
            "id": "2fcecd9e-95cc-489a-b874-699c54518e44",
            "name": "Microsoft Outlook18",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2709,
                344
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "41a39309-1a94-461f-9308-63dd5b9a94a7",
            "name": "Microsoft Outlook19",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                3020,
                348
            ],
            "parameters": {
                "folderId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCQAAAA==",
                    "cachedResultUrl": "https:\/\/outlook.office365.com\/mail\/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCQAAAA%3D%3D",
                    "cachedResultName": "SaaS"
                },
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "move"
            },
            "typeVersion": 2
        },
        {
            "id": "ebf606f9-099c-4218-b23b-66e2487262d0",
            "name": "Markdown1",
            "type": "n8n-nodes-base.markdown",
            "notes": "Converts the body of the email to markdown",
            "position": [
                420,
                468
            ],
            "parameters": {
                "html": "={{ $('Loop Over Items1').item.json.body.content }}",
                "options": []
            },
            "notesInFlow": true,
            "typeVersion": 1
        },
        {
            "id": "ff447dd5-3ef6-4a02-8453-3489af8bf6b5",
            "name": "varEmal1",
            "type": "n8n-nodes-base.set",
            "notes": "Set email fields",
            "position": [
                620,
                468
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "edb304e1-3e9f-4a77-918c-25646addbc53",
                            "name": "subject",
                            "type": "string",
                            "value": "={{ $json.subject }}"
                        },
                        {
                            "id": "57a3ef3a-2701-40d9-882f-f43a7219f148",
                            "name": "importance",
                            "type": "string",
                            "value": "={{ $json.importance }}"
                        },
                        {
                            "id": "d8317f4f-aa0e-4196-89af-cb016765490a",
                            "name": "sender",
                            "type": "object",
                            "value": "={{ $json.sender.emailAddress }}"
                        },
                        {
                            "id": "908716c8-9ff7-4bdc-a1a3-64227559635e",
                            "name": "from",
                            "type": "object",
                            "value": "={{ $json.from.emailAddress }}"
                        },
                        {
                            "id": "ce007329-e221-4c5a-8130-2f8e9130160f",
                            "name": "body",
                            "type": "string",
                            "value": "={{ $json.data\n .replace(\/<[^>]*>\/g, '') \/\/ Remove HTML tags\n .replace(\/\\[(.*?)\\]\\((.*?)\\)\/g, '') \/\/ Remove Markdown links like [text](link)\n .replace(\/!\\[.*?\\]\\(.*?\\)\/g, '') \/\/ Remove Markdown images like ![alt](image-link)\n .replace(\/\\|\/g, '') \/\/ Remove table separators \"|\"\n .replace(\/-{3,}\/g, '') \/\/ Remove horizontal rule \"---\"\n .replace(\/\\n+\/g, ' ') \/\/ Remove multiple newlines\n .replace(\/([^\\w\\s.,!?@])\/g, '') \/\/ Remove special characters except essential ones\n .replace(\/\\s{2,}\/g, ' ') \/\/ Replace multiple spaces with a single space\n .trim() \/\/ Trim leading\/trailing whitespace\n}}\n"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "198524cb-c9f0-4261-8c38-7c878efe7457",
            "name": "Microsoft Outlook20",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2700,
                668
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "ec73629c-59ac-4f0e-a432-2c06934952ab",
            "name": "Microsoft Outlook21",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2709,
                1044
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "0a19d15c-0cd3-4f26-9be2-4914522751fb",
            "name": "Filter1",
            "type": "n8n-nodes-base.filter",
            "position": [
                -100,
                448
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "c8cd6917-f94e-4fb7-8601-b8ed8f1aa8bf",
                            "operator": {
                                "type": "array",
                                "operation": "empty",
                                "singleValue": true
                            },
                            "leftValue": "={{ $json.categories }}",
                            "rightValue": ""
                        }
                    ]
                }
            },
            "typeVersion": 2.2
        },
        {
            "id": "96e6e31c-6306-44a8-a57a-2b5216636b00",
            "name": "If1",
            "type": "n8n-nodes-base.if",
            "notes": "Checks if the email has been read",
            "position": [
                3320,
                668
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "strict"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "f8cf2a56-cea8-4150-b7a0-048dbda20f2f",
                            "operator": {
                                "type": "boolean",
                                "operation": "true",
                                "singleValue": true
                            },
                            "leftValue": "={{ $json.isRead }}",
                            "rightValue": ""
                        }
                    ]
                }
            },
            "typeVersion": 2.2
        },
        {
            "id": "8a6e0118-abe3-45e2-aefc-94640348b2ec",
            "name": "Microsoft Outlook22",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                2709,
                864
            ],
            "parameters": {
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "update",
                "updateFields": {
                    "categories": "={{ \n [$('varJSON1').first().json.output.category, $('varJSON1').first().json.output.subCategory]\n .filter(item => item && item.trim() !== \"\")\n .map(item => item.charAt(0).toUpperCase() + item.slice(1))\n}}"
                }
            },
            "typeVersion": 2
        },
        {
            "id": "e2d8e7b5-4447-4327-9f4e-b8d52765667e",
            "name": "Catch Errors1",
            "type": "n8n-nodes-base.set",
            "position": [
                1760,
                608
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "0dc6d439-60fb-49f6-b4d5-f5cce6f030ad",
                            "name": "error",
                            "type": "string",
                            "value": "={{ $json }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "17f6ac43-51e4-4bee-b0d8-13deb3bf3cc9",
            "name": "varJSON1",
            "type": "n8n-nodes-base.set",
            "onError": "continueErrorOutput",
            "position": [
                1540,
                468
            ],
            "parameters": {
                "options": {
                    "ignoreConversionErrors": true
                },
                "assignments": {
                    "assignments": [
                        {
                            "id": "0c52f57f-74eb-4385-ac6b-f3e5f4f50e73",
                            "name": "output",
                            "type": "object",
                            "value": "={{ $json.output.replace(\/^.*?({.*}).*$\/s, '$1') }}"
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "82dd9631-a34b-4d54-be28-6f8dcc3548f0",
            "name": "Sticky Note10",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -360,
                220
            ],
            "parameters": {
                "width": 411.91693012378937,
                "height": 401.49417117683515,
                "content": "## Outlook Business with filters\nFilters:\n```\nflag\/flagStatus eq 'notFlagged' and not categories\/any()\n```\n\nThese filters ensure we do not process flagged emails or email that already have a category set."
            },
            "typeVersion": 1
        },
        {
            "id": "0583e196-37a5-43db-8c0a-aa624029c926",
            "name": "Microsoft Outlook23",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                -300,
                448
            ],
            "parameters": {
                "limit": 1,
                "fields": [
                    "flag",
                    "from",
                    "importance",
                    "replyTo",
                    "sender",
                    "subject",
                    "toRecipients",
                    "body",
                    "categories",
                    "isRead"
                ],
                "output": "fields",
                "options": [],
                "filtersUI": {
                    "values": {
                        "filters": {
                            "custom": "flag\/flagStatus eq 'notFlagged' and not categories\/any()",
                            "foldersToInclude": [
                                "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAAAAgEMAAAA"
                            ]
                        }
                    }
                },
                "operation": "getAll"
            },
            "typeVersion": 2
        },
        {
            "id": "a9540e6b-929b-4460-8972-93e4d19cd934",
            "name": "varID & Category1",
            "type": "n8n-nodes-base.set",
            "position": [
                900,
                468
            ],
            "parameters": {
                "options": [],
                "assignments": {
                    "assignments": [
                        {
                            "id": "de2ad4f2-7381-4715-a3f4-59611e161b74",
                            "name": "id",
                            "type": "string",
                            "value": "={{ $('Microsoft Outlook23').item.json.id }}"
                        },
                        {
                            "id": "458c7a89-e4a3-46d0-8b38-72d87748e306",
                            "name": "category",
                            "type": "string",
                            "value": "\"action\", \"junk\", \"receipt\", \"SaaS\", \"community\", \"business\" or \"other\""
                        }
                    ]
                }
            },
            "typeVersion": 3.4
        },
        {
            "id": "e6b3b41e-d7d3-4c9b-8189-a005c748ff18",
            "name": "Sticky Note11",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                360,
                348
            ],
            "parameters": {
                "color": 6,
                "width": 418.7820408163265,
                "height": 301.40952380952365,
                "content": "## Sanitise Email \nRemoves HTML and useless information in preparation for the AI Agent"
            },
            "typeVersion": 1
        },
        {
            "id": "f9787a75-526c-4ef1-b0a7-0db7d890ab3f",
            "name": "Sticky Note12",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                820,
                348
            ],
            "parameters": {
                "color": 6,
                "width": 256.16108843537415,
                "height": 298.37931972789124,
                "content": "## Modify Categories \nEdit this to customise category selection"
            },
            "typeVersion": 1
        },
        {
            "id": "50223a01-34cf-4191-9dd7-3dac02a9e945",
            "name": "Sticky Note13",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                1480,
                328
            ],
            "parameters": {
                "color": 5,
                "width": 441.003537414966,
                "height": 463.0204081632651,
                "content": "## Convert to JSON\n* Ensures the Agent output to converted to JSON\n* Catches any errors and continues processing"
            },
            "typeVersion": 1
        },
        {
            "id": "4580c532-96a6-46b4-8922-d79316d1cc01",
            "name": "Sticky Note14",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                2120,
                328
            ],
            "parameters": {
                "color": 5,
                "width": 311.71482993197264,
                "height": 454.93986394557805,
                "content": "## Switch Categories\nEnsure your categories match the **varID & Category** Edit Fields node"
            },
            "typeVersion": 1
        },
        {
            "id": "b51a7c34-2a5e-4670-81a4-d1582711c69a",
            "name": "Sticky Note15",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                2629,
                -76
            ],
            "parameters": {
                "color": 4,
                "width": 251.3480889735252,
                "height": 1289.0156245602684,
                "content": "## Set Categories\n"
            },
            "typeVersion": 1
        },
        {
            "id": "3a7ede7b-539b-49d2-8803-153ca6c9eb69",
            "name": "Sticky Note16",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                2949,
                -76
            ],
            "parameters": {
                "color": 4,
                "width": 251.3480889735252,
                "height": 770.995811762121,
                "content": "## Move to Folders\n"
            },
            "typeVersion": 1
        },
        {
            "id": "ee9a9d78-8c07-470a-9d1b-ceddfc8875ca",
            "name": "Sticky Note17",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                3260,
                553
            ],
            "parameters": {
                "color": 4,
                "height": 293.65527013262994,
                "content": "## Check if email has been read\n\n"
            },
            "typeVersion": 1
        },
        {
            "id": "c75b9d38-79a7-4be2-a90b-a99da1bbd745",
            "name": "Microsoft Outlook Move Message1",
            "type": "n8n-nodes-base.microsoftOutlook",
            "position": [
                3609,
                604
            ],
            "parameters": {
                "folderId": {
                    "__rl": true,
                    "mode": "list",
                    "value": "AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj-aQEAnz-IOcWBGE2lrVuQgAF6zAADLJmrCwAAAA==",
                    "cachedResultUrl": "https:\/\/outlook.office365.com\/mail\/AQMkAGE3ZTU5MGMzLTFkNGItNGQ5Zi04MDQ1LThmNGFlMTVhYjMwYgAuAAAD8UhruVwm402lgPBG2Tj%2FaQEAnz%2FIOcWBGE2lrVuQgAF6zAADLJmrCwAAAA%3D%3D",
                    "cachedResultName": "Actioned"
                },
                "messageId": {
                    "__rl": true,
                    "mode": "id",
                    "value": "={{ $('varID & Category1').item.json.id }}"
                },
                "operation": "move"
            },
            "typeVersion": 2
        },
        {
            "id": "85ff0348-16dc-46e6-bf70-48a10fe0ded8",
            "name": "AI Agent1",
            "type": "@n8n\/n8n-nodes-langchain.agent",
            "position": [
                1160,
                468
            ],
            "parameters": {
                "text": "=Categorise the following email\n<email>\n{{ $('varEmal1').first().json.toJsonString() }}\n<\/email>\n\nEnsure your final output is valid JSON with no additional text or token in the following format:\n\n{\n \"subject\": \"SUBJECT_LINE\",1\n \"category\": \"CATEGORY\",\n \"subCategory\": \"SUBCATEGORY\", \/\/use sparingly\n \"analysis\": \"ANALYSIS_REASONING\"\n}\n\nRemember you can only use ONE of the following categories {{ $json.category }}. No other categories can be used. Use the subcategory for additional context, for example, if a SaaS email requires action, or if a business email requires action. Do not create any additional subcategories, you can only use ONE of the following {{ $json.category }}.",
                "options": {
                    "systemMessage": "=You're an AI assistant for a freelance developer, categorizing emails as {{ $json.category }}. Email info is in <email> tags.\n\nCategorization priority:\n\nAction: Needs response or action (includes some SaaS emails), avoid sales email but include enquires.\nJunk: Ads, sales, newsletters, promotions, daily digests, (emojis often indicate junk), phishing, scams, discounts etc.\nReceipt: Any purchase confirmation.\nSaaS: Account\/security updates, unless action required, generic SaaS information, usually from a non-personal email address.\nCommunity: Updates, events, forums, everything related to \"community\".\nBusiness: Any communication related to freelance work, usually from a humans email address\nOther: Doesn't fit into any other category.\n\nKey points:\n\nSaaS emails needing action are \"SaaS\" and subcategory \"action\".\nAnalyze the subject, body, email addresses and other data.\nLook for specific keywords and phrases for each category.\nEmail can have 2 categories, primary and sub, for example, \"action\" and \"SaaS\" or \"action\" and \"business\".\nEmails from business development executives are often junk.\n\n\nOutput in valid JSON format:\n{\n\"subject\": \"SUBJECT_LINE\",\n\"category\": \"PRIMARY CATEGORY\",\n\"subCategory\": \"SUBCATEGORY\", \/\/use sparingly\n\"analysis\": \"Brief 1-2 sentence explanation of category choice\"\n}\nNo additional text or tokens outside the JSON.\n\nYou may only use the following categories and subcategories, do not create any more categories or subcategories: {{ $json.category }}"
                },
                "promptType": "define",
                "hasOutputParser": true
            },
            "typeVersion": 1.6
        },
        {
            "id": "93e7be79-9035-4b58-9a83-b9182a0515f8",
            "name": "Merge1",
            "type": "n8n-nodes-base.merge",
            "position": [
                3989,
                564
            ],
            "parameters": {
                "numberInputs": 7
            },
            "typeVersion": 3
        },
        {
            "id": "cbaeaed1-cb09-4614-93f1-3fe349cd0e4e",
            "name": "Switch1",
            "type": "n8n-nodes-base.switch",
            "position": [
                2220,
                488
            ],
            "parameters": {
                "rules": {
                    "values": [
                        {
                            "outputKey": "junk",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "operator": {
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "junk"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "receipt",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "0c61c7a8-e8b4-49c5-a96c-402d5eae7089",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "receipt"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "SaaS",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "703f65c8-cf4a-47fe-ad1a-a5f6e0412ae7",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "SaaS"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "community",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "b074d5cd-9215-40df-8877-5df904edc000",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "community"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "action",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "bece338a-e0c5-43b5-b8cc-41229a374213",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "action"
                                    }
                                ]
                            },
                            "renameOutput": true
                        },
                        {
                            "outputKey": "business",
                            "conditions": {
                                "options": {
                                    "version": 2,
                                    "leftValue": "",
                                    "caseSensitive": false,
                                    "typeValidation": "strict"
                                },
                                "combinator": "and",
                                "conditions": [
                                    {
                                        "id": "d6c9751f-0ffa-4041-a579-6957bb9c9296",
                                        "operator": {
                                            "name": "filter.operator.equals",
                                            "type": "string",
                                            "operation": "equals"
                                        },
                                        "leftValue": "={{ $json.output.category }}",
                                        "rightValue": "business"
                                    }
                                ]
                            },
                            "renameOutput": true
                        }
                    ]
                },
                "options": {
                    "ignoreCase": true,
                    "fallbackOutput": "extra"
                }
            },
            "typeVersion": 3.2
        }
    ],
    "pinData": [],
    "connections": {
        "If1": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook Move Message1",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 5
                    }
                ]
            ]
        },
        "Merge1": {
            "main": [
                [
                    {
                        "node": "Loop Over Items1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Filter1": {
            "main": [
                [
                    {
                        "node": "Loop Over Items1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Switch1": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook12",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook13",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook18",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook16",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook20",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook22",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Microsoft Outlook21",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "varEmal1": {
            "main": [
                [
                    {
                        "node": "varID & Category1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "varJSON1": {
            "main": [
                [
                    {
                        "node": "Switch1",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "Catch Errors1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "AI Agent1": {
            "main": [
                [
                    {
                        "node": "varJSON1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Markdown1": {
            "main": [
                [
                    {
                        "node": "varEmal1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Catch Errors1": {
            "main": [
                [
                    {
                        "node": "Loop Over Items1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Loop Over Items1": {
            "main": [
                null,
                [
                    {
                        "node": "Markdown1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "varID & Category1": {
            "main": [
                [
                    {
                        "node": "AI Agent1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Ollama Chat Model1": {
            "ai_languageModel": [
                [
                    {
                        "node": "AI Agent1",
                        "type": "ai_languageModel",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook10": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook12": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook10",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook13": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook15",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook15": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 1
                    }
                ]
            ]
        },
        "Microsoft Outlook16": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook17",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook17": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 3
                    }
                ]
            ]
        },
        "Microsoft Outlook18": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook19",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook19": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 2
                    }
                ]
            ]
        },
        "Microsoft Outlook20": {
            "main": [
                [
                    {
                        "node": "If1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook21": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 6
                    }
                ]
            ]
        },
        "Microsoft Outlook22": {
            "main": [
                [
                    {
                        "node": "If1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook23": {
            "main": [
                [
                    {
                        "node": "Filter1",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Microsoft Outlook Move Message1": {
            "main": [
                [
                    {
                        "node": "Merge1",
                        "type": "main",
                        "index": 4
                    }
                ]
            ]
        },
        "When clicking \u2018Test workflow\u2019": {
            "main": [
                [
                    {
                        "node": "Microsoft Outlook23",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}

How to Use an n8n Template

1

Create a New Workflow

Click "New Workflow" in your n8n dashboard to get started.

2

Copy & Paste Template

First, copy this template: Click here to copy the JSON .
Then, in n8n, click the three dots (···) → "Import from file" and paste the JSON code.

3

Customize the Nodes

Go through each node in the workflow to update inputs like spreadsheet IDs, email addresses, or message content. Adjust field mappings to match your data.

4

Grant Access

For nodes that connect to external apps (like Google Sheets or Slack), you'll need to grant access. Connect your accounts using OAuth or an API key and save the credentials in the node.

5

Test It

Run the workflow by clicking "Execute Node" for each step or "Run Once" for the whole thing. Check the right sidebar to inspect data and debug any errors (they'll show up in red).

6

Activate Workflow

Once everything works as expected, click the "Activate" toggle to turn your workflow on. You're all set!