{ "nodes": [ { "id": "2804a082-c17b-482f-828d-901dab7e7a11", "name": "When clicking ‘Test workflow’", "type": "n8n-nodes-base.manualTrigger", "position": [ -160, 40 ], "parameters": {}, "typeVersion": 1 }, { "id": "58d51340-5246-4089-ae63-f16ff4be184e", "name": "Get list of owners", "type": "n8n-nodes-base.httpRequest", "position": [ 280, 40 ], "parameters": { "url": "https://api.hubapi.com/crm/v3/owners", "options": {}, "authentication": "predefinedCredentialType", "nodeCredentialType": "hubspotOAuth2Api" }, "credentials": { "hubspotOAuth2Api": { "id": "qubiIFrowxvUdpu6", "name": "HubSpot account for node" } }, "typeVersion": 4.2 }, { "id": "335ffd8c-68fa-4d55-85e9-462963a8a291", "name": "Get list of clients for owner", "type": "n8n-nodes-base.httpRequest", "position": [ 280, 575 ], "parameters": { "url": "https://api.hubapi.com/crm/v3/objects/contacts/search", "method": "POST", "options": {}, "jsonBody": "={\n \"filterGroups\": [\n {\n \"filters\": [\n {\n \"propertyName\": \"hubspot_owner_id\",\n \"operator\": \"EQ\",\n \"value\": \"{{ $('When Executed by Another Workflow').item.json.ownerId }}\"\n }\n ]\n }\n ],\n \"properties\": [\"firstname\", \"lastname\", \"email\", \"linkedinURL\", \"company\"],\n\"limit\": 200,\n\"after\": {{ $node['Edit'].json[\"sofar\"] }}\n} ", "sendBody": true, "specifyBody": "json", "authentication": "predefinedCredentialType", "nodeCredentialType": "hubspotOAuth2Api" }, "credentials": { "hubspotOAuth2Api": { "id": "qubiIFrowxvUdpu6", "name": "HubSpot account for node" } }, "typeVersion": 4.2 }, { "id": "5d116139-1764-4d3a-8696-d280fb7e9d8f", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ -210, -260 ], "parameters": { "color": 4, "width": 420, "height": 460, "content": "## Settings\n- Set in \"Set data here\" the email you are registered with in Hubspot as an Owner, and the link of a Google sheet copied [from this one](https://docs.google.com/spreadsheets/d/1y17jIU6JnNPcmazWf2GsmRpdjBBMnkN41tRJnAO5KrQ/edit?usp=sharing)\n" }, "typeVersion": 1 }, { "id": "a8a15bd4-5a46-4f70-87bd-4db7170b4928", "name": "If", "type": "n8n-nodes-base.if", "position": [ 720, 575 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "and", "conditions": [ { "id": "d5df6d6c-ff5f-46ad-a8d4-38e326d7415e", "operator": { "type": "number", "operation": "gte" }, "leftValue": "={{ $node['Edit'].json.sofar }}", "rightValue": "={{ $('Get list of clients for owner').item.json.total }}" } ] }, "looseTypeValidation": true }, "typeVersion": 2.2 }, { "id": "eda30bd9-95bb-43d4-8981-479036103dd1", "name": "Edit", "type": "n8n-nodes-base.set", "position": [ 60, 575 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "8a403dc5-2b05-430d-b1cc-39f70f5ac82d", "name": "sofar", "type": "number", "value": "=0" }, { "id": "dca65b15-f545-42f1-90df-37efb03e267d", "name": "results", "type": "array", "value": "[]" } ] } }, "typeVersion": 3.4 }, { "id": "4c6c8217-6610-413e-8b1c-185a96e44882", "name": "Increment Page", "type": "n8n-nodes-base.set", "position": [ 500, 500 ], "parameters": { "values": { "number": [ { "name": "sofar", "value": "={{$node[\"Edit\"].json[\"sofar\"] = $node[\"Edit\"].json[\"sofar\"] + $('Get list of clients for owner').item.json.results.length}}" } ] }, "options": {} }, "executeOnce": true, "typeVersion": 1 }, { "id": "58f53fe6-36a4-4385-ba93-e15dd589c0a4", "name": "Split Out1", "type": "n8n-nodes-base.splitOut", "position": [ 1160, 575 ], "parameters": { "options": {}, "fieldToSplitOut": "results" }, "typeVersion": 1 }, { "id": "c92983ba-bef3-463a-a6de-8f205822f359", "name": "Merge al the entries", "type": "n8n-nodes-base.code", "position": [ 940, 575 ], "parameters": { "jsCode": "let results = [],\n i = 0;\n\ndo {\n try {\n results = results.concat($(\"Get list of clients for owner\").all(0, i));\n } catch (error) {\n console.log(results)\n return results;\n }\n i++;\n} while (true);" }, "typeVersion": 2 }, { "id": "68c51fbd-3845-4eb2-9204-d78cc30413bf", "name": "If linkedin url is empty", "type": "n8n-nodes-base.if", "position": [ 1820, 40 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "84952199-2e1d-4ea8-bfb8-d4aa975d6df1", "operator": { "type": "string", "operation": "empty", "singleValue": true }, "leftValue": "={{ $json.linkedin_url }}", "rightValue": "" } ] } }, "typeVersion": 2.2 }, { "id": "18e4e4bd-4039-4770-a3d0-13edafe6103c", "name": "if new post", "type": "n8n-nodes-base.if", "position": [ 3580, 40 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "48d6777d-5431-4cb9-9716-5059277bac5e", "operator": { "type": "string", "operation": "notEquals" }, "leftValue": "={{ $('Get rows from document').item.json['last post'] }}", "rightValue": "={{ $('Set last_post').item.json.last_post }}" } ] } }, "typeVersion": 2.2 }, { "id": "a5623af7-6fba-43b0-be50-c9d3c52aba32", "name": "Get list of clients", "type": "n8n-nodes-base.executeWorkflow", "position": [ 940, 40 ], "parameters": { "mode": "each", "options": {}, "workflowId": { "__rl": true, "mode": "id", "value": "={{ $workflow.id }}", "cachedResultName": "={{ $workflow.id }}" }, "workflowInputs": { "value": { "ownerId": "={{ $json.id }}" }, "schema": [ { "id": "ownerId", "type": "string", "display": true, "removed": false, "required": false, "displayName": "ownerId", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [ "ownerId" ], "attemptToConvertTypes": false, "convertFieldsToString": true } }, "typeVersion": 1.2 }, { "id": "9f771153-6b83-4ac0-b642-ee2d4b65a41c", "name": "When Executed by Another Workflow", "type": "n8n-nodes-base.executeWorkflowTrigger", "position": [ -160, 575 ], "parameters": { "workflowInputs": { "values": [ { "name": "ownerId" } ] } }, "typeVersion": 1.1 }, { "id": "437dc3e5-0340-41ce-aea1-36749bd054ad", "name": "Get last post", "type": "n8n-nodes-base.executeWorkflow", "position": [ 3140, 40 ], "parameters": { "mode": "each", "options": {}, "workflowId": { "__rl": true, "mode": "list", "value": "rnVcO8Bw0avTm4GB", "cachedResultName": "get personal posts for agent" }, "workflowInputs": { "value": { "maxItems": 1, "username": "={{ $json.username }}", "responseType": "detail" }, "schema": [ { "id": "username", "type": "string", "display": true, "required": false, "displayName": "username", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "responseType", "type": "string", "display": true, "required": false, "displayName": "responseType", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "maxItems", "type": "number", "display": true, "required": false, "displayName": "maxItems", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "posted_after", "display": true, "required": false, "displayName": "posted_after", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": true } }, "typeVersion": 1.2 }, { "id": "a0dda2f2-cb89-4557-8cfc-5e3a01e34637", "name": "Gmail", "type": "n8n-nodes-base.gmail", "position": [ 4680, 140 ], "webhookId": "eea16996-1d02-4861-b83d-6145cee90ac6", "parameters": { "sendTo": "={{ $('Set data here').first().json.email }}", "message": "={{ $json.text }}", "options": { "appendAttribution": false }, "subject": "Changes in your clients", "emailType": "text" }, "credentials": { "gmailOAuth2": { "id": "DLjspol9TLgpGaXa", "name": "Gmail account 2" } }, "typeVersion": 2.1 }, { "id": "99911831-e603-454c-b533-2e387f2008c4", "name": "Search for user by link", "type": "n8n-nodes-base.httpRequest", "notes": "Search by Name and company", "position": [ 2920, 140 ], "parameters": { "url": "https://linkedin-api8.p.rapidapi.com/get-profile-data-by-url", "options": {}, "sendQuery": true, "sendHeaders": true, "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "queryParameters": { "parameters": [ { "name": "url", "value": "={{ $json.profileURL }}" } ] }, "headerParameters": { "parameters": [ { "name": "x-rapidapi-host", "value": "linkedin-api8.p.rapidapi.com" } ] } }, "credentials": { "httpHeaderAuth": { "id": "nhoVFnkO31mejJrI", "name": "RapidAPI Key" } }, "executeOnce": false, "notesInFlow": true, "typeVersion": 4.2, "alwaysOutputData": false }, { "id": "903f6be4-b468-488c-aa41-50f60ee92bcb", "name": "Do nothing", "type": "n8n-nodes-base.noOp", "position": [ 2480, -160 ], "parameters": {}, "typeVersion": 1 }, { "id": "695202d6-60bd-4788-b029-0c03a9e3c89a", "name": "Merge profileURL", "type": "n8n-nodes-base.code", "position": [ 2700, 140 ], "parameters": { "mode": "runOnceForEachItem", "jsCode": "// Add a new field called 'myNewField' to the JSON of the item\n$input.item.json.profileURL = $json.profileURL;\n\nreturn $input.item;" }, "typeVersion": 2 }, { "id": "ead5d235-7f73-41e4-86d3-48ad7d4cfa8d", "name": "Set last_post", "type": "n8n-nodes-base.set", "position": [ 3360, 40 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "93be271c-22c8-4afe-a928-e9d2593b025d", "name": "last_post", "type": "string", "value": "={{ $json.text[0] }}" } ] } }, "typeVersion": 3.4 }, { "id": "a89746c8-5fb7-4c69-930f-d0f451bcef54", "name": "Set last_position", "type": "n8n-nodes-base.set", "position": [ 3360, 240 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "93be271c-22c8-4afe-a928-e9d2593b025d", "name": "last_position", "type": "string", "value": "={{ $json.position[0].title }}" } ] } }, "typeVersion": 3.4 }, { "id": "467aa5a3-c9f5-407f-8571-e9ba333109e2", "name": "if new position", "type": "n8n-nodes-base.if", "position": [ 3580, 240 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "48d6777d-5431-4cb9-9716-5059277bac5e", "operator": { "type": "string", "operation": "notEquals" }, "leftValue": "={{ $json.last_position }}", "rightValue": "={{ $('Get rows from document').item.json['current position'] }}" } ] } }, "typeVersion": 2.2 }, { "id": "f6456ca1-bb31-4bf3-8175-7f8b5f4a65bb", "name": "Set data here", "type": "n8n-nodes-base.set", "position": [ 60, 40 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "a43825a4-f9cd-4b38-975c-b1de771cebea", "name": "sheetLink", "type": "string", "value": "https://docs.google.com/spreadsheets/d/1y17jIU6JnNPcmazWf2GsmRpdjBBMnkN41tRJnAO5KrQ/edit?gid=0#gid=0" }, { "id": "ea837d0b-e8d6-4594-9861-550d30f05db0", "name": "email", "type": "string", "value": "zeerobug@gmail.com" } ] } }, "typeVersion": 3.4 }, { "id": "f904c3fb-9320-4b5e-92af-c7cc697eb9dc", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ 220, -260 ], "parameters": { "color": 4, "width": 230, "height": 460, "content": "## Hubspot API\nCalls a Hubpot API endpoint to get the list of Owners\nYou have to select \"Predefined credential type\" and choose \"Hubspot Oauth2 API\". Then folow the instructions [here](https://docs.n8n.io/integrations/builtin/credentials/hubspot/?utm_source=n8n_app&utm_medium=credential_settings&utm_campaign=create_new_credentials_modal#required-scopes-for-hubspot-trigger-node)" }, "typeVersion": 1 }, { "id": "5a499d0c-bbe5-4041-a082-6111658bf155", "name": "Change this for testing", "type": "n8n-nodes-base.filter", "position": [ 1160, 40 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "or", "conditions": [ { "id": "45031804-4846-4b03-8c8f-8f1a747986a4", "operator": { "type": "string", "operation": "equals" }, "leftValue": "={{ $json.properties.email }}", "rightValue": "=nuno.domingues@toyotacaetano.pt" } ] } }, "typeVersion": 2.2 }, { "id": "089690f8-ddf5-46e4-933c-152095ea02ac", "name": "Create entry with email", "type": "n8n-nodes-base.googleSheets", "position": [ 1380, 40 ], "parameters": { "columns": { "value": { "email": "={{ $json.properties.email }}" }, "schema": [ { "id": "email", "type": "string", "display": true, "removed": false, "required": false, "displayName": "email", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "linkedin_url", "type": "string", "display": true, "removed": true, "required": false, "displayName": "linkedin_url", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "last post", "type": "string", "display": true, "removed": true, "required": false, "displayName": "last post", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "current position", "type": "string", "display": true, "removed": true, "required": false, "displayName": "current position", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "date", "type": "string", "display": true, "removed": true, "required": false, "displayName": "date", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [ "email" ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "appendOrUpdate", "sheetName": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" }, "documentId": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "gdLmm513ROUyH6oU", "name": "Google Sheets account" } }, "typeVersion": 4.5, "alwaysOutputData": true }, { "id": "60617dc9-021b-41be-b7bf-0816bddba05e", "name": "Get rows from document", "type": "n8n-nodes-base.googleSheets", "position": [ 1600, 40 ], "parameters": { "options": {}, "filtersUI": { "values": [ { "lookupValue": "={{ $json.email }}", "lookupColumn": "email" } ] }, "sheetName": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" }, "documentId": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "gdLmm513ROUyH6oU", "name": "Google Sheets account" } }, "typeVersion": 4.5, "alwaysOutputData": true }, { "id": "21c2bbd5-75f1-4c80-a4ec-4c2870890fcf", "name": "Search for user profile by names", "type": "n8n-nodes-base.httpRequest", "notes": "Search by Name and company", "position": [ 2040, -60 ], "parameters": { "url": "https://linkedin-api8.p.rapidapi.com/search-people", "options": {}, "sendQuery": true, "sendHeaders": true, "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "queryParameters": { "parameters": [ { "name": "firstName", "value": "={{ $('Get list of clients').item.json.properties.firstname }}" }, { "name": "lastName", "value": "={{ $('Get list of clients').item.json.properties.lastname }}" }, { "name": "company", "value": "={{ $('Get list of clients').item.json.properties.company }}" } ] }, "headerParameters": { "parameters": [ { "name": "x-rapidapi-host", "value": "linkedin-api8.p.rapidapi.com" } ] } }, "credentials": { "httpHeaderAuth": { "id": "nhoVFnkO31mejJrI", "name": "RapidAPI Key" } }, "executeOnce": false, "notesInFlow": true, "typeVersion": 4.2, "alwaysOutputData": false }, { "id": "1a6f6571-a89a-4e6e-82a5-c239661d6131", "name": "Profile URL not found?", "type": "n8n-nodes-base.if", "position": [ 2260, -60 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "c561dcaf-e164-46e5-8f44-8ebcd2943c78", "operator": { "type": "string", "operation": "empty", "singleValue": true }, "leftValue": "={{ $json.data.items[0].profileURL }}", "rightValue": "" } ] } }, "typeVersion": 2.2 }, { "id": "2811ca64-1e43-4934-abc2-f1a746b2cf68", "name": "Set the profile URL", "type": "n8n-nodes-base.set", "position": [ 2480, 40 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "d6d3ebce-153c-44b0-a2f8-3c8ac41381cb", "name": "profileURL", "type": "string", "value": "={{ $json.data.items[0].profileURL }}" } ] } }, "typeVersion": 3.4 }, { "id": "d79a3896-e5b3-4b63-ad04-848f34db8100", "name": "Set the profile URL1", "type": "n8n-nodes-base.set", "position": [ 2480, 240 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "d433d14f-b862-4f43-969e-5e911a138f8c", "name": "profileURL", "type": "string", "value": "={{ $('Get rows from document').item.json.linkedin_url }}" } ] } }, "typeVersion": 3.4 }, { "id": "73683bde-7431-47e2-b70f-8e0dd2725c84", "name": "Update last post", "type": "n8n-nodes-base.googleSheets", "position": [ 3800, 40 ], "parameters": { "columns": { "value": { "date": "= {{new Date().format('dd-MM-yyyy')}}", "email": "={{ $('Change this for testing').item.json.properties.email }}", "last post": "={{ $('Set last_post').item.json.last_post }}", "linkedin_url": "={{ $('Merge profileURL').item.json.profileURL }}", "current position": "={{ $json.last_position }}" }, "schema": [ { "id": "email", "type": "string", "display": true, "removed": false, "required": false, "displayName": "email", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "linkedin_url", "type": "string", "display": true, "required": false, "displayName": "linkedin_url", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "last post", "type": "string", "display": true, "required": false, "displayName": "last post", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "current position", "type": "string", "display": true, "removed": false, "required": false, "displayName": "current position", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "date", "type": "string", "display": true, "required": false, "displayName": "date", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [ "email" ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "appendOrUpdate", "sheetName": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" }, "documentId": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "gdLmm513ROUyH6oU", "name": "Google Sheets account" } }, "typeVersion": 4.5 }, { "id": "71f66801-3b12-4633-a95b-c4c8788117bd", "name": "Updates last position", "type": "n8n-nodes-base.googleSheets", "position": [ 3800, 240 ], "parameters": { "columns": { "value": { "date": "= {{new Date().format('dd-MM-yyyy')}}", "email": "={{ $('Change this for testing').item.json.properties.email }}", "linkedin_url": "={{ $('Merge profileURL').item.json.profileURL }}", "current position": "={{ $json.last_position }}" }, "schema": [ { "id": "email", "type": "string", "display": true, "removed": false, "required": false, "displayName": "email", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "linkedin_url", "type": "string", "display": true, "required": false, "displayName": "linkedin_url", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "last post", "type": "string", "display": true, "removed": true, "required": false, "displayName": "last post", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "current position", "type": "string", "display": true, "removed": false, "required": false, "displayName": "current position", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "date", "type": "string", "display": true, "required": false, "displayName": "date", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [ "email" ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "appendOrUpdate", "sheetName": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" }, "documentId": { "__rl": true, "mode": "url", "value": "={{ $('Set data here').first().json.sheetLink }}" } }, "credentials": { "googleSheetsOAuth2Api": { "id": "gdLmm513ROUyH6oU", "name": "Google Sheets account" } }, "typeVersion": 4.5 }, { "id": "d67c1106-5d91-4d00-980b-1b3578a1c86f", "name": "Set post_updated", "type": "n8n-nodes-base.set", "position": [ 4020, 40 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "71118d71-0ea6-4b01-ac4d-a3ae1129b0e7", "name": "post_updated", "type": "boolean", "value": true }, { "id": "f709a120-0db7-4b50-82e6-8f1f02352680", "name": "email", "type": "string", "value": "={{ $('Change this for testing').item.json.properties.email }}" } ] } }, "typeVersion": 3.4 }, { "id": "ad574631-3799-4f02-96ff-8683dc944331", "name": "Set position_updated", "type": "n8n-nodes-base.set", "position": [ 4020, 240 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "71118d71-0ea6-4b01-ac4d-a3ae1129b0e7", "name": "position_updated", "type": "boolean", "value": true }, { "id": "1f0e817d-2ad4-4330-b683-64e31cfa4741", "name": "email", "type": "string", "value": "={{ $('Change this for testing').item.json.properties.email }}" } ] } }, "typeVersion": 3.4 }, { "id": "157a5e8f-7b42-4115-91a2-2f204cd6d9f6", "name": "Generate the email text", "type": "n8n-nodes-base.code", "position": [ 4460, 140 ], "parameters": { "jsCode": "// Loop over input items and add a new field called 'myNewField' to the JSON of each one\nlet client_post = []\nlet client_position = []\nfor (const item of $input.all()) {\n if(item.json.position_updated) {\n client_position.push(item.json.email)\n }\n if(item.json.post_updated) {\n client_post.push(item.json.email)\n }\n}\nlet text = ''\nif (client_post.length > 0) {\n text = text + 'There has been a post update for the following clients:\\n'\n text = text + client_post.join(\"\\n\") + \"\\n\";\n}\nif (client_position.length > 0) {\n text = text + 'There has been a position update for the following clients:\\n'\n text = text + client_position.join(\"\\n\") + \"\\n\";\n}\n\nreturn {text};" }, "typeVersion": 2 }, { "id": "0735e123-47ed-4b3c-9aa8-cc7d2f982e4b", "name": "Merge on email", "type": "n8n-nodes-base.merge", "position": [ 4240, 140 ], "parameters": { "mode": "combine", "options": {}, "joinMode": "keepEverything", "fieldsToMatchString": "email" }, "typeVersion": 3.1 }, { "id": "88717813-9e07-4984-8e8b-7772f7c7a0e7", "name": "Split Out owners", "type": "n8n-nodes-base.splitOut", "position": [ 500, 40 ], "parameters": { "options": {}, "fieldToSplitOut": "results" }, "typeVersion": 1 }, { "id": "5799995c-659e-4732-a35b-893692d95509", "name": "Get current owner", "type": "n8n-nodes-base.filter", "position": [ 720, 40 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "7c6aec6e-66a9-4739-8a59-28f2ab1c4a26", "operator": { "type": "string", "operation": "equals" }, "leftValue": "={{ $json.email }}", "rightValue": "={{ $('Set data here').first().json.email }}" } ] } }, "typeVersion": 2.2 }, { "id": "637b821f-8051-4e91-a58e-85dc7e136467", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 880, -260 ], "parameters": { "color": 4, "width": 230, "height": 460, "content": "## Calling a Sub-workflow\nFor lisibility only\n" }, "typeVersion": 1 }, { "id": "3bda132e-73a3-4af0-bb43-ff52f31f5a90", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 1120, -260 ], "parameters": { "color": 4, "width": 190, "height": 460, "content": "## For testing\nWe recommend to filter a small number of clients here\n" }, "typeVersion": 1 }, { "id": "13fb80f1-d685-4998-a534-41a0f944b6e8", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 1320, -260 ], "parameters": { "color": 4, "width": 430, "height": 460, "content": "## Preparing the Google sheet\n- Create an entry for each client with his email\n- Get rows for later comparison\n\n" }, "typeVersion": 1 }, { "id": "54a51950-a284-435e-8a2b-bdc0ebace3c9", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 3080, -240 ], "parameters": { "color": 4, "width": 1090, "height": 660, "content": "## Adding other tests\nHere you can set other tests like:\n- New comments in LinkedIn\n- Hubspot activities\n- Hubspot updates\netc.\n\n" }, "typeVersion": 1 }, { "id": "4b197665-b31c-4fa2-8934-5b72468ca2e9", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ 1960, -240 ], "parameters": { "color": 4, "width": 1090, "height": 660, "content": "## Searching for the LinkedIn URL\n- Set here you rapid API key\n- If we find the URL, searches for more info about the client\n" }, "typeVersion": 1 }, { "id": "665fb602-dc0a-432f-a087-ce6097f58937", "name": "Sticky Note7", "type": "n8n-nodes-base.stickyNote", "position": [ 4200, -240 ], "parameters": { "color": 4, "width": 670, "height": 660, "content": "## Generating the alert email\n\n" }, "typeVersion": 1 }, { "id": "d6789f6a-aa62-44fd-9314-fc0157b6dcd8", "name": "Sticky Note10", "type": "n8n-nodes-base.stickyNote", "position": [ -220, 400 ], "parameters": { "color": 5, "width": 1570, "height": 460, "content": "## Get all clients for this owner\nAs we are limited to 200 clients by the Hubsot API, we have to loop to get all of them\n\n" }, "typeVersion": 1 }, { "id": "d9a5cc09-7e4f-488a-a3dc-6a27361d9d0b", "name": "Sticky Note8", "type": "n8n-nodes-base.stickyNote", "position": [ -200, -480 ], "parameters": { "width": 640, "height": 200, "content": "## Contact me\n- If you need any modification to this workflow\n- if you need some help with this workflow\n- Or if you need any workflow in n8n, Make, or Langchain / Langgraph\n\nWrite to me: [thomas@pollup.net](mailto:thomas@pollup.net)" }, "typeVersion": 1 } ], "connections": { "If": { "main": [ [ { "node": "Merge al the entries", "type": "main", "index": 0 } ], [ { "node": "Get list of clients for owner", "type": "main", "index": 0 } ] ] }, "Edit": { "main": [ [ { "node": "Get list of clients for owner", "type": "main", "index": 0 } ] ] }, "Split Out1": { "main": [ [] ] }, "if new post": { "main": [ [ { "node": "Update last post", "type": "main", "index": 0 } ], [] ] }, "Get last post": { "main": [ [ { "node": "Set last_post", "type": "main", "index": 0 } ] ] }, "Set data here": { "main": [ [ { "node": "Get list of owners", "type": "main", "index": 0 } ] ] }, "Set last_post": { "main": [ [ { "node": "if new post", "type": "main", "index": 0 } ] ] }, "Increment Page": { "main": [ [ { "node": "If", "type": "main", "index": 0 } ] ] }, "Merge on email": { "main": [ [ { "node": "Generate the email text", "type": "main", "index": 0 } ] ] }, "if new position": { "main": [ [ { "node": "Updates last position", "type": "main", "index": 0 } ] ] }, "Merge profileURL": { "main": [ [ { "node": "Search for user by link", "type": "main", "index": 0 } ] ] }, "Set post_updated": { "main": [ [ { "node": "Merge on email", "type": "main", "index": 0 } ] ] }, "Split Out owners": { "main": [ [ { "node": "Get current owner", "type": "main", "index": 0 } ] ] }, "Update last post": { "main": [ [ { "node": "Set post_updated", "type": "main", "index": 0 } ] ] }, "Get current owner": { "main": [ [ { "node": "Get list of clients", "type": "main", "index": 0 } ] ] }, "Set last_position": { "main": [ [ { "node": "if new position", "type": "main", "index": 0 } ] ] }, "Get list of owners": { "main": [ [ { "node": "Split Out owners", "type": "main", "index": 0 } ] ] }, "Get list of clients": { "main": [ [ { "node": "Change this for testing", "type": "main", "index": 0 } ] ] }, "Set the profile URL": { "main": [ [ { "node": "Merge profileURL", "type": "main", "index": 0 } ] ] }, "Merge al the entries": { "main": [ [ { "node": "Split Out1", "type": "main", "index": 0 } ] ] }, "Set position_updated": { "main": [ [ { "node": "Merge on email", "type": "main", "index": 1 } ] ] }, "Set the profile URL1": { "main": [ [ { "node": "Merge profileURL", "type": "main", "index": 0 } ] ] }, "Updates last position": { "main": [ [ { "node": "Set position_updated", "type": "main", "index": 0 } ] ] }, "Get rows from document": { "main": [ [ { "node": "If linkedin url is empty", "type": "main", "index": 0 } ] ] }, "Profile URL not found?": { "main": [ [ { "node": "Do nothing", "type": "main", "index": 0 } ], [ { "node": "Set the profile URL", "type": "main", "index": 0 } ] ] }, "Change this for testing": { "main": [ [ { "node": "Create entry with email", "type": "main", "index": 0 } ] ] }, "Create entry with email": { "main": [ [ { "node": "Get rows from document", "type": "main", "index": 0 } ] ] }, "Generate the email text": { "main": [ [ { "node": "Gmail", "type": "main", "index": 0 } ] ] }, "Search for user by link": { "main": [ [ { "node": "Get last post", "type": "main", "index": 0 }, { "node": "Set last_position", "type": "main", "index": 0 } ] ] }, "If linkedin url is empty": { "main": [ [ { "node": "Search for user profile by names", "type": "main", "index": 0 } ], [ { "node": "Set the profile URL1", "type": "main", "index": 0 } ] ] }, "Get list of clients for owner": { "main": [ [ { "node": "Increment Page", "type": "main", "index": 0 } ] ] }, "Search for user profile by names": { "main": [ [ { "node": "Profile URL not found?", "type": "main", "index": 0 } ] ] }, "When Executed by Another Workflow": { "main": [ [ { "node": "Edit", "type": "main", "index": 0 } ] ] }, "When clicking ‘Test workflow’": { "main": [ [ { "node": "Set data here", "type": "main", "index": 0 } ] ] } } }