{ "meta": { "instanceId": "workflow-0f228746", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:45.084121", "updatedAt": "2025-09-29T07:07:45.084194", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "nodes": [ { "id": "a4280167-97e0-4d12-bdfc-735dd9c69f03", "name": "NoOp", "type": "n8n-nodes-base.noOp", "position": [ 1160, 540 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "a3ad4e3b-0841-4a6e-993b-5239d9e56eaf", "name": "Get last execution timestamp", "type": "n8n-nodes-base.functionItem", "position": [ 420, 300 ], "parameters": { "functionCode": "// Code here will run once per input item.\n// More info and help: {{ $env.WEBHOOK_URL }}\n// Tip: You can use luxon for dates and $jmespath for querying JSON structures\n\n// Add a new field called 'myNewField' to the JSON of the item\nconst staticData = getWorkflowStaticData('global');\n\nif(!staticData.lastExecution){\n staticData.lastExecution = new Date().toISOString();\n}\n\nitem.executionTimeStamp = new Date().toISOString();\nitem.lastExecution = staticData.lastExecution;\n\n\nreturn item;" }, "typeVersion": 1, "notes": "This functionItem node performs automated tasks as part of the workflow." }, { "id": "f917bc42-8b9f-4b60-860c-360eeb86b88c", "name": "Set new last execution timestamp", "type": "n8n-nodes-base.functionItem", "position": [ 4440, 140 ], "parameters": { "functionCode": "// Code here will run once per input item.\n// More info and help: {{ $env.WEBHOOK_URL }}\n// Tip: You can use luxon for dates and $jmespath for querying JSON structures\n\n// Add a new field called 'myNewField' to the JSON of the item\nconst staticData = getWorkflowStaticData('global');\n\nstaticData.lastExecution = $item(0).$node[\"Get last execution timestamp\"].executionTimeStamp;\n\nreturn item;" }, "executeOnce": true, "typeVersion": 1, "notes": "This functionItem node performs automated tasks as part of the workflow." }, { "id": "ff141018-5307-4754-a48a-2311fcd15f85", "name": "Pipedrive person Id found", "type": "n8n-nodes-base.if", "position": [ 2280, 300 ], "parameters": { "conditions": { "string": [ { "value1": "={{ $json[\"PipeDrivePersonId\"] }}", "operation": "isNotEmpty" } ] } }, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "d06b1dae-77cb-4c0b-98dc-0e7184f95095", "name": "NoOp1", "type": "n8n-nodes-base.noOp", "position": [ 2620, 480 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "e8a01cec-06d1-4fe6-8920-55fdd143f626", "name": "Get Zendesk comments for tickets", "type": "n8n-nodes-base.httpRequest", "position": [ 2620, 280 ], "parameters": { "url": "{{ $env.BASE_URL }}", "options": {}, "authentication": "{{ $credentials.predefinedCredentialType }}", "nodeCredentialType": "YOUR_CREDENTIAL_HERE" }, "credentials": { "zendeskApi": { "id": "{{ $credentials.zendeskApi.id }}", "name": "Zendesk account" } }, "typeVersion": 2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "7f7addcb-4858-4fd0-b1c2-29800365241b", "name": "Add comments to tickets", "type": "n8n-nodes-base.merge", "position": [ 2860, 160 ], "parameters": { "join": "inner", "mode": "mergeByIndex" }, "typeVersion": 1, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "4ab3e897-b3d1-47f8-8c81-640e2ca6b3de", "name": "Add Pipedrive person Id to Zendesk tickets", "type": "n8n-nodes-base.merge", "position": [ 2060, 300 ], "parameters": { "mode": "mergeByKey", "propertyName1": "via.source.from.address", "propertyName2": "primary_email" }, "typeVersion": 1, "notes": "This merge node performs automated tasks as part of the workflow." }, { "id": "1b25adda-15eb-4e23-bfb2-0a034656d8e2", "name": "Get tickets updated after last execution", "type": "n8n-nodes-base.zendesk", "position": [ 640, 300 ], "parameters": { "options": { "query": "=updated>{{ $json[\"lastExecution\"] }}", "sortBy": "updated_at", "sortOrder": "desc" }, "operation": "getAll" }, "credentials": { "zendeskApi": { "id": "{{ $credentials.zendeskApi.id }}", "name": "Zendesk account" } }, "typeVersion": 1, "notes": "This zendesk node performs automated tasks as part of the workflow." }, { "id": "4884b8f5-d3f1-404d-87b3-1a802553cbee", "name": "Channel is email", "type": "n8n-nodes-base.if", "position": [ 860, 300 ], "parameters": { "conditions": { "string": [ { "value1": "={{ $json[\"via\"].channel }}", "value2": "email" } ] } }, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "48541dcf-8ea6-47b8-ad52-1b3045df6832", "name": "Rename fields and keep only needed fields", "type": "n8n-nodes-base.set", "position": [ 1820, 360 ], "parameters": { "values": { "number": [ { "name": "PipeDrivePersonId", "value": "={{ $json[\"id\"] }}" } ], "string": [ { "name": "primary_email", "value": "={{ $json[\"primary_email\"] }}" } ] }, "options": {}, "keepOnlySet": true }, "typeVersion": 1, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "e66d6b04-6a4e-4ab4-98a4-efba4bc5ec12", "name": "Search persons by email", "type": "n8n-nodes-base.pipedrive", "position": [ 1600, 360 ], "parameters": { "term": "={{ $json[\"SearchEmail\"] }}", "resource": "person", "operation": "search", "additionalFields": { "fields": "email" } }, "credentials": { "pipedriveApi": { "id": "{{ $credentials.pipedriveApi.id }}", "name": "Pipedrive account" } }, "typeVersion": 1, "notes": "This pipedrive node performs automated tasks as part of the workflow." }, { "id": "01e008cf-6867-48b3-9a0d-b1b264bb5c08", "name": "Remove duplicates to make search efficient", "type": "n8n-nodes-base.itemLists", "position": [ 1360, 360 ], "parameters": { "compare": "selectedFields", "options": {}, "operation": "removeDuplicates", "fieldsToCompare": { "fields": [ { "fieldName": "SearchEmail" } ] } }, "typeVersion": 1, "notes": "This itemLists node performs automated tasks as part of the workflow." }, { "id": "bc3ac74d-ac87-46b8-bd59-6cafe0e0e59c", "name": "Set search email", "type": "n8n-nodes-base.set", "position": [ 1160, 360 ], "parameters": { "values": { "string": [ { "name": "SearchEmail", "value": "={{ $json[\"via\"].source.from.address }}" } ] }, "options": {}, "keepOnlySet": true }, "typeVersion": 1, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "e0cf4204-7640-41c7-9adc-39d2d86b6144", "name": "Process commenst per ticket", "type": "n8n-nodes-base.splitInBatches", "position": [ 3080, 160 ], "parameters": { "options": {}, "batchSize": 1 }, "typeVersion": 1, "notes": "This splitInBatches node performs automated tasks as part of the workflow." }, { "id": "056646c3-7e1f-4195-92bd-1c3c1c9e8d25", "name": "New comment", "type": "n8n-nodes-base.if", "position": [ 3540, 160 ], "parameters": { "conditions": { "dateTime": [ { "value1": "={{ $json[\"created_at\"] }}", "value2": "={{$item(0).$node[\"Get last execution timestamp\"].json[\"lastExecution\"]}}" } ] } }, "typeVersion": 1, "alwaysOutputData": true, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "77ef979c-313e-4904-bf3e-8716f1e5c86f", "name": "Split comments to seperate items", "type": "n8n-nodes-base.itemLists", "position": [ 3320, 160 ], "parameters": { "options": {}, "fieldToSplitOut": "comments" }, "typeVersion": 1, "notes": "This itemLists node performs automated tasks as part of the workflow." }, { "id": "01fbc85c-0c85-48d1-b2b2-cdf8d6310578", "name": "Add comment as a note in Pipedrive", "type": "n8n-nodes-base.pipedrive", "position": [ 3820, 0 ], "parameters": { "content": "=Message imported from Zendesk\n------------------------------------------------\nFrom {{$json[\"via\"][\"source\"][\"from\"][\"name\"] ?? 'Zendesk user'}}\n------------------------------------------------\n{{$json[\"body\"]}}", "resource": "note", "additionalFields": { "person_id": "={{$item(0).$node[\"Process commenst per ticket\"].json[\"PipeDrivePersonId\"]}}" } }, "credentials": { "pipedriveApi": { "id": "{{ $credentials.pipedriveApi.id }}", "name": "Pipedrive account" } }, "typeVersion": 1, "notes": "This pipedrive node performs automated tasks as part of the workflow." }, { "id": "12296cee-7786-489d-9a33-7d0d1d7d755b", "name": "NoOp2", "type": "n8n-nodes-base.noOp", "position": [ 3820, 180 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "0c21dbce-0820-4300-8da4-6e795288aa0b", "name": "Every day at 09:00", "type": "n8n-nodes-base.cron", "position": [ 220, 300 ], "parameters": { "triggerTimes": { "item": [ { "hour": 9 } ] } }, "typeVersion": 1, "notes": "This cron node performs automated tasks as part of the workflow." }, { "id": "e6990744-45e2-4c08-b611-7f5bbac7ad9a", "name": "Done processing", "type": "n8n-nodes-base.if", "position": [ 4160, 160 ], "parameters": { "conditions": { "boolean": [ { "value1": "={{$node[\"Process commenst per ticket\"].context[\"noItemsLeft\"]}}", "value2": true } ] }, "combineOperation": "any" }, "typeVersion": 1, "notes": "This if node performs automated tasks as part of the workflow." } ], "connections": { "e8a01cec-06d1-4fe6-8920-55fdd143f626": { "main": [ [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-67e6bc32", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-26a67931", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-5b1a92a5", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-fb110dac", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-b3bbbb7e", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-f2b84f18", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-08e047ad", "type": "main", "index": 0 } ], [ { "node": "error-handler-e8a01cec-06d1-4fe6-8920-55fdd143f626-7c3a8318", "type": "main", "index": 0 } ] ] } }, "name": "Noop Workflow", "description": "Automated workflow: Noop Workflow. This workflow processes data and performs automated tasks.", "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "notes": "Excellent quality workflow: Noop Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }