Workflow: develop a modular n8n workflow that supports Functionitem Zendesk Create Webhook
Integrations: cron, functionItem, httpRequest, if, merge, pipedrive, set, zendesk

{"meta": {"instanceId": "237600ca44303ce91fa31ee72babcdc8493f55ee2c0e8aa2b78b3b4ce6f70bd9"}, "nodes": [{"id": "9d40c0b9-498f-421c-b731-3a387402b69a", "name": "Get last execution timestamp", "type": "n8n-nodes-base.functionItem", "position": [380, 360], "parameters": {"functionCode": "// Code here will run once per input item.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.functionItem\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().getTime();\n}\n\nitem.executionTimeStamp = new Date().getTime();\nitem.lastExecution = staticData.lastExecution;\n\n\nreturn item;"}, "typeVersion": 1}, {"id": "ddb12f68-1f6b-41fb-bfd4-038697ce4d75", "name": "Set new last execution timestamp", "type": "n8n-nodes-base.functionItem", "position": [3280, 380], "parameters": {"functionCode": "// Code here will run once per input item.\n// More info and help: https://docs.n8n.io/nodes/n8n-nodes-base.functionItem\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}, {"id": "42888df0-1f7e-4990-87b3-3226a474110e", "name": "Get tickets created after last execution", "type": "n8n-nodes-base.zendesk", "position": [620, 360], "parameters": {"options": {"query": "=created>{{ $json[\"lastExecution\"] }}", "sortBy": "updated_at", "sortOrder": "desc"}, "operation": "getAll"}, "credentials": {"zendeskApi": {"id": "5", "name": "Zendesk account"}}, "typeVersion": 1}, {"id": "2f0f71f6-3d4c-4895-9313-7f47e3b2ed86", "name": "Get requester information", "type": "n8n-nodes-base.zendesk", "position": [840, 460], "parameters": {"id": "={{ $json[\"requester_id\"] }}", "resource": "user", "operation": "get"}, "credentials": {"zendeskApi": {"id": "5", "name": "Zendesk account"}}, "typeVersion": 1}, {"id": "284fd54b-bd7b-4fbb-8a14-0c4fa62a3200", "name": "Keep only needed requester information", "type": "n8n-nodes-base.set", "position": [1060, 460], "parameters": {"values": {"number": [{"name": "requester_id", "value": "={{ $json[\"id\"] }}"}], "string": [{"name": "requester_email", "value": "={{ $json[\"email\"] }}"}]}, "options": {}, "keepOnlySet": true}, "typeVersion": 1}, {"id": "17c3b860-60cb-4885-b503-9086b461bde0", "name": "Keep only requester owner email", "type": "n8n-nodes-base.set", "position": [2000, 480], "parameters": {"values": {"string": [{"name": "requester_pipedrive_email", "value": "={{ $node[\"Search requester in pipedrive\"].json[\"primary_email\"] }}"}, {"name": "requester_pipedrive_owner_email", "value": "={{ $json[\"data\"].email }}"}]}, "options": {}, "keepOnlySet": true}, "typeVersion": 1}, {"id": "a4ccf1d7-5d9f-4c4e-a5b9-c54ed77c5c44", "name": "Every 5 minutes", "type": "n8n-nodes-base.cron", "position": [160, 360], "parameters": {"triggerTimes": {"item": [{"mode": "everyX", "unit": "minutes", "value": 5}]}}, "typeVersion": 1}, {"id": "99fb51d8-0d93-4db9-868d-757046d1bdc2", "name": "Add requester information to ticket data", "type": "n8n-nodes-base.merge", "position": [1280, 380], "parameters": {"mode": "mergeByKey", "propertyName1": "requester_id", "propertyName2": "requester_id"}, "typeVersion": 1}, {"id": "a4c7acd0-b2b6-48bb-b7b7-d2826ddb1f9d", "name": "Search requester in pipedrive", "type": "n8n-nodes-base.pipedrive", "position": [1560, 480], "parameters": {"term": "={{ $json[\"requester_email\"] }}", "resource": "person", "operation": "search", "additionalFields": {"fields": "email"}}, "credentials": {"pipedriveApi": {"id": "1", "name": "Pipedrive account"}}, "typeVersion": 1}, {"id": "7a8a3bf3-9f57-40ad-a31f-45522264f101", "name": "Get owner information of Pipedrive contact", "type": "n8n-nodes-base.httpRequest", "position": [1780, 480], "parameters": {"url": "=https://n8n.pipedrive.com/api/v1/users/{{$json[\"owner\"][\"id\"]}}", "options": {}, "authentication": "predefinedCredentialType", "nodeCredentialType": "pipedriveApi"}, "credentials": {"pipedriveApi": {"id": "1", "name": "Pipedrive account"}}, "typeVersion": 2}, {"id": "64a7fc0c-ddb4-4d84-86a6-3e9bd361ce46", "name": "Get agents and admins", "type": "n8n-nodes-base.zendesk", "position": [1780, 700], "parameters": {"filters": {"role": ["agent", "admin"]}, "resource": "user", "operation": "getAll", "returnAll": true}, "credentials": {"zendeskApi": {"id": "5", "name": "Zendesk account"}}, "typeVersion": 1}, {"id": "0117d5f8-e9b2-46c9-9777-7ae82e002cc2", "name": "Keep only email and Id", "type": "n8n-nodes-base.set", "position": [2000, 700], "parameters": {"values": {"string": [{"name": "agent_email", "value": "={{ $json[\"email\"] }}"}, {"name": "agent_id", "value": "={{ $json[\"id\"] }}"}]}, "options": {}, "keepOnlySet": true}, "typeVersion": 1}, {"id": "eaa7b072-0499-4b3a-96af-433d3afc12f9", "name": "Add Pipedrive agent data to pipedrive contact information", "type": "n8n-nodes-base.merge", "position": [2280, 500], "parameters": {"mode": "mergeByKey", "propertyName1": "requester_pipedrive_owner_email", "propertyName2": "agent_email"}, "typeVersion": 1}, {"id": "b9619e3d-c951-47ae-bbb5-db50e7ae5abe", "name": "Add contact owner to ticket data", "type": "n8n-nodes-base.merge", "position": [2540, 400], "parameters": {"mode": "mergeByKey", "propertyName1": "requester_email", "propertyName2": "requester_pipedrive_email"}, "typeVersion": 1}, {"id": "14f88f5f-2bab-42f2-bea7-a7566e6d45b1", "name": "Contact exists in Pipedrive", "type": "n8n-nodes-base.if", "position": [2760, 400], "parameters": {"conditions": {"string": [{"value1": "={{ $json[\"agent_id\"] }}", "operation": "isNotEmpty"}]}}, "typeVersion": 1}, {"id": "38da1ccc-3d23-41cd-84b3-6fc249aedca5", "name": "Change assignee to Pipedrive contact owner", "type": "n8n-nodes-base.zendesk", "position": [3020, 380], "parameters": {"id": "={{ $json[\"id\"] }}", "operation": "update", "updateFields": {"assigneeEmail": "={{$json[\"requester_pipedrive_owner_email\"]}}"}}, "credentials": {"zendeskApi": {"id": "5", "name": "Zendesk account"}}, "typeVersion": 1}, {"id": "4295e0e2-88e8-4f93-8432-47fff452cfc5", "name": "Add a note requester not found", "type": "n8n-nodes-base.zendesk", "position": [3020, 580], "parameters": {"id": "={{ $json[\"id\"] }}", "operation": "update", "updateFields": {"internalNote": "Requester not found in Pipedrive"}}, "credentials": {"zendeskApi": {"id": "5", "name": "Zendesk account"}}, "typeVersion": 1}], "connections": {"Every 5 minutes": {"main": [[{"node": "Get last execution timestamp", "type": "main", "index": 0}]]}, "Get agents and admins": {"main": [[{"node": "Keep only email and Id", "type": "main", "index": 0}]]}, "Keep only email and Id": {"main": [[{"node": "Add Pipedrive agent data to pipedrive contact information", "type": "main", "index": 1}]]}, "Get requester information": {"main": [[{"node": "Keep only needed requester information", "type": "main", "index": 0}]]}, "Contact exists in Pipedrive": {"main": [[{"node": "Change assignee to Pipedrive contact owner", "type": "main", "index": 0}], [{"node": "Add a note requester not found", "type": "main", "index": 0}]]}, "Get last execution timestamp": {"main": [[{"node": "Get tickets created after last execution", "type": "main", "index": 0}]]}, "Search requester in pipedrive": {"main": [[{"node": "Get owner information of Pipedrive contact", "type": "main", "index": 0}]]}, "Add a note requester not found": {"main": [[{"node": "Set new last execution timestamp", "type": "main", "index": 0}]]}, "Keep only requester owner email": {"main": [[{"node": "Add Pipedrive agent data to pipedrive contact information", "type": "main", "index": 0}]]}, "Add contact owner to ticket data": {"main": [[{"node": "Contact exists in Pipedrive", "type": "main", "index": 0}]]}, "Keep only needed requester information": {"main": [[{"node": "Add requester information to ticket data", "type": "main", "index": 1}]]}, "Add requester information to ticket data": {"main": [[{"node": "Search requester in pipedrive", "type": "main", "index": 0}, {"node": "Add contact owner to ticket data", "type": "main", "index": 0}]]}, "Get tickets created after last execution": {"main": [[{"node": "Add requester information to ticket data", "type": "main", "index": 0}, {"node": "Get requester information", "type": "main", "index": 0}]]}, "Change assignee to Pipedrive contact owner": {"main": [[{"node": "Set new last execution timestamp", "type": "main", "index": 0}]]}, "Get owner information of Pipedrive contact": {"main": [[{"node": "Keep only requester owner email", "type": "main", "index": 0}]]}, "Add Pipedrive agent data to pipedrive contact information": {"main": [[{"node": "Add contact owner to ticket data", "type": "main", "index": 1}]]}}}