This workflow corresponds to n8n.io template #4242 — we link there as the canonical source.
This workflow follows the Agent → HubSpot recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "reF98YdsmqqRYRfs",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "HDW CRM Enrichment",
"tags": [],
"nodes": [
{
"id": "3c5a9019-48f6-4ec8-a375-65b312a5ca8b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
20,
300
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "67d2d4a7-cf92-40b0-8f9d-5a9001f5a9d4",
"name": "Get Company from CRM",
"type": "n8n-nodes-base.pipedriveTool",
"onError": "continueRegularOutput",
"position": [
200,
300
],
"parameters": {
"resource": "organization",
"operation": "get",
"organizationId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Organization_ID', `org_id`, 'number') }}",
"descriptionType": "manual",
"toolDescription": "Get information about company from CRM (name)"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "517cb827-8581-417e-ad66-62ce48958d3c",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
40,
960
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "ccb4f7f2-15f7-41ae-a0c5-6f836956e32a",
"name": "Get Company from CRM1",
"type": "n8n-nodes-base.pipedriveTool",
"onError": "continueRegularOutput",
"position": [
220,
960
],
"parameters": {
"resource": "organization",
"operation": "get",
"organizationId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Organization_ID', `org_id`, 'number') }}",
"descriptionType": "manual",
"toolDescription": "Get information about company from CRM (name)"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "97df8c33-3cbd-4739-add2-07550ddd3d59",
"name": "OpenAI Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
340,
1720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "gpt-4o"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "9ba0bf56-cefb-48a0-8133-111dd4199ddb",
"name": "HubSpot Trigger",
"type": "n8n-nodes-base.hubspotTrigger",
"position": [
-400,
1380
],
"parameters": {
"eventsUi": {
"eventValues": [
{},
{
"name": "contact.propertyChange",
"property": "need_enrichment"
}
]
},
"additionalFields": {}
},
"credentials": {
"hubspotDeveloperApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "1601abfa-2d1f-4cf0-8e8b-272544adf088",
"name": "If1",
"type": "n8n-nodes-base.if",
"position": [
40,
1380
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "07631805-59b3-4985-9bb1-e9d8bed4ba6c",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('HubSpot Trigger').item.json.subscriptionType }}",
"rightValue": "contact.creation"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "3782caf0-a426-40dd-b822-af718c00a143",
"name": "If2",
"type": "n8n-nodes-base.if",
"position": [
200,
1520
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8a2e7666-3353-426a-a52f-b25fcce4b6b1",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('HubSpot Trigger').item.json.subscriptionType }}",
"rightValue": "contact.propertyChange"
},
{
"id": "98e06926-e30b-4ee5-b723-6acada900e43",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.properties.need_enrichment.value }}",
"rightValue": "true"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "65865367-746a-4e58-ad21-4b728bf1f22c",
"name": "Pipedrive Trigger New Contact",
"type": "n8n-nodes-base.pipedriveTrigger",
"position": [
-220,
40
],
"parameters": {
"action": "create",
"entity": "person"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "94a1a81e-8023-42ec-a607-9ad639dab6b1",
"name": "Data Enrichment AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
180,
40
],
"parameters": {
"text": "=User data:\nemail - {{ $json.data.emails[0].value }}\nname - {{ $json.data.name }}\norganization id - {{ $json.data.org_id }}",
"options": {
"systemMessage": "# LinkedIn Data Enrichment Agent\n\nYou are an advanced data enrichment agent specialized in augmenting CRM records with LinkedIn profile data. Your purpose is to analyze incoming Pipedrive CRM person data, find matching LinkedIn profiles, extract valuable information, and update the CRM with enhanced professional insights.\n\n## Input Data Structure\nYou will receive a JSON array containing Pipedrive person data with the following structure:\n- Person's name, email, and other contact information\n- Custom fields and metadata\n- Timestamp and system information\n\n## Available Tools\n1. `get_linkedin_email_user` - Search for LinkedIn profiles by email address\n2. `get_organisation_info` - Get information about company from CRM\n3. `get_linkedin_user_posts` - Retrieve recent posts from a LinkedIn profile\n4. `get_linkedin_profile` - Get detailed information about a LinkedIn profile\n5. `update_pipedrive_data` - Update CRM data with LinkedIn insights\n6. `search_linkedin_users` - Search for profiles using parameters like name, title, location, company\n\n## Processing Algorithm\n1. SEARCH BY EMAIL: First, attempt to find the LinkedIn profile using the person's email address.\n2. ALTERNATIVE SEARCH: If no profile is found via email, Get company details from CRM to get a company name and use available parameters (name, company, location) to search for potential matches. \n3. PROFILE DETAILS: Once a profile is found, retrieve comprehensive profile details.\n4. PROFILE SUMMARY: Create a concise, informative summary of the profile highlighting key professional information.\n5. POST RETRIEVAL: Obtain the person's recent LinkedIn posts.\n6. POST SUMMARY: Analyze posts to identify patterns, interests, and professional focus areas.\n7. CRM UPDATE: Update the Pipedrive record with:\n - LinkedIn profile URL\n - Profile summary\n - Post activity summary\n\n## Output Requirements\nFor each profile processed, you must:\n1. Use structured, consistent data format for CRM updates\n2. Include relevant professional insights that could aid in business relationship development\n3. Format all summaries in clear, concise language\n4. Handle errors gracefully, documenting any profiles that could not be enriched\n\nAlways respect privacy and data protection standards throughout this process. Process each record thoroughly before moving to the next one."
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "1416e6a9-07b3-4ae0-89d9-a02d2210b263",
"name": "HDW Get LinkedIn profile by Email",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
360,
300
],
"parameters": {
"count": 1,
"email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', `user email`, 'string') }}",
"resource": "email"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "0497e923-2172-460e-be39-a892f86bdc44",
"name": "Update data in Pipedrive",
"type": "n8n-nodes-base.pipedriveTool",
"position": [
520,
300
],
"parameters": {
"personId": "={{ $('Pipedrive Trigger New Contact').item.json.data.id }}",
"resource": "person",
"operation": "update",
"updateFields": {
"customProperties": {
"property": [
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property0_Property_Value', `User post summary`, 'string') }}"
},
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property1_Property_Value', `linkedin profile url`, 'string') }}"
},
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property2_Property_Value', `profile summary`, 'string') }}"
}
]
}
},
"descriptionType": "manual",
"toolDescription": "Update data in Pipedrive\nUse this tool for update customer data from linkedin profile:\nPost summary\nProfile URL\nProfile summary"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a0a8ad5d-ee64-48d0-88f5-12393138e07a",
"name": "HDW Search LinkedIn Profile",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
660,
300
],
"parameters": {
"keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Keywords', ``, 'string') }}",
"additionalFields": {
"location": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Location', `location`, 'string') }}",
"last_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Last_Name', `last name`, 'string') }}",
"first_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('First_Name', `first name`, 'string') }}",
"company_keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Company_Keywords', `company`, 'string') }}"
}
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "679e5c8c-4597-4286-a356-2e7746644d65",
"name": "HDW Get LinkedIn Profile Details",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
820,
300
],
"parameters": {
"user": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User', `user alias`, 'string') }}",
"operation": "getProfile"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "76231a56-fa8e-44f2-9e02-3407cc776098",
"name": "HDW Get LinkedIn Profile Posts",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
980,
300
],
"parameters": {
"urn": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User_URN', `user URN with prefix: fsd_profile:ACoAA..`, 'string') }}",
"operation": "getPosts"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "ef79759b-283d-4a03-8c3a-2cc2f67c1183",
"name": "Pipedrive Trigger Update Data for Existing Client",
"type": "n8n-nodes-base.pipedriveTrigger",
"position": [
-180,
700
],
"parameters": {
"action": "change",
"entity": "person"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "86b8c79b-5d0f-40f5-b6fb-6a675a6d5165",
"name": "Enrich Flag is True",
"type": "n8n-nodes-base.if",
"position": [
20,
700
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c4337b59-91a5-4f3b-b384-0790e1494595",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.data.custom_fields['84e4db043440773b8550825d3112e4a0292ef0f2'].id }}",
"rightValue": 29
}
]
}
},
"typeVersion": 2.2
},
{
"id": "e8878f73-5d53-4e5c-a974-f3fe99481585",
"name": "HDW Get LinkedIn profile by Email1",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
400,
960
],
"parameters": {
"count": 1,
"email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', `user email`, 'string') }}",
"resource": "email"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f8fa0c6a-b598-40dd-8ddb-e6606aa78ace",
"name": "HDW Get LinkedIn profile by Email2",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
640,
1720
],
"parameters": {
"count": 1,
"email": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Email', `user email`, 'string') }}",
"resource": "email"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "e3457e56-7a83-46e7-8926-5a3152d2d863",
"name": "Data Enrichment AI Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
540,
1400
],
"parameters": {
"text": "=User data:\nemail - {{ $json['identity-profiles'][0].identities[0].value }}\nname - {{ $json.properties.hs_full_name_or_email.value }}\nCompany name - {{ $json.properties.company.value }}",
"options": {
"systemMessage": "# LinkedIn Data Enrichment Agent\n\nYou are an advanced data enrichment agent specialized in augmenting CRM records with LinkedIn profile data. Your purpose is to analyze incoming Pipedrive CRM person data, find matching LinkedIn profiles, extract valuable information, and update the CRM with enhanced professional insights.\n\n## Input Data Structure\nYou will receive a JSON array containing Pipedrive person data with the following structure:\n- Person's name, email, and other contact information\n- Custom fields and metadata\n- Timestamp and system information\n\n## Available Tools\n1. `get_linkedin_email_user` - Search for LinkedIn profiles by email address\n2. `get_linkedin_user_posts` - Retrieve recent posts from a LinkedIn profile\n3. `get_linkedin_profile` - Get detailed information about a LinkedIn profile\n4. `update_hubspot_data` - Update CRM data with LinkedIn insights\n5. `search_linkedin_users` - Search for profiles using parameters like name, title, location, company\n\n## Processing Algorithm\n1. SEARCH BY EMAIL: First, attempt to find the LinkedIn profile using the person's email address.\n2. ALTERNATIVE SEARCH: If no profile is found via email, available parameters (name, company, location) to search for potential matches. \n3. PROFILE DETAILS: Once a profile is found, retrieve comprehensive profile details.\n4. PROFILE SUMMARY: Create a concise, informative summary of the profile highlighting key professional information.\n5. POST RETRIEVAL: Obtain the person's recent LinkedIn posts.\n6. POST SUMMARY: Analyze posts to identify patterns, interests, and professional focus areas. If profile has no posts - update \"no post\"\n7. CRM UPDATE: Update the Pipedrive record with:\n - LinkedIn profile URL\n - Profile summary\n - Post activity summary\n\n## Output Requirements\nFor each profile processed, you must:\n1. Use structured, consistent data format for CRM updates\n2. Include relevant professional insights that could aid in business relationship development\n3. Format all summaries in clear, concise language\n4. Handle errors gracefully, documenting any profiles that could not be enriched\n\nAlways respect privacy and data protection standards throughout this process. Process each record thoroughly before moving to the next one."
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "be290e43-8d1c-47b9-8768-5b28c1fec310",
"name": "Data Enrichment AI Agent2",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
240,
640
],
"parameters": {
"text": "=User data:\nemail - {{ $json.data.emails[0].value }}\nname - {{ $json.data.name }}\norganization id - {{ $json.data.org_id }}",
"options": {
"systemMessage": "# LinkedIn Data Enrichment Agent\n\nYou are an advanced data enrichment agent specialized in augmenting CRM records with LinkedIn profile data. Your purpose is to analyze incoming Pipedrive CRM person data, find matching LinkedIn profiles, extract valuable information, and update the CRM with enhanced professional insights.\n\n## Input Data Structure\nYou will receive a JSON array containing Pipedrive person data with the following structure:\n- Person's name, email, and other contact information\n- Custom fields and metadata\n- Timestamp and system information\n\n## Available Tools\n1. `get_linkedin_email_user` - Search for LinkedIn profiles by email address\n2. `get_organisation_info` - Get information about company from CRM\n3. `get_linkedin_user_posts` - Retrieve recent posts from a LinkedIn profile\n4. `get_linkedin_profile` - Get detailed information about a LinkedIn profile\n5. `update_pipedrive_data` - Update CRM data with LinkedIn insights\n6. `search_linkedin_users` - Search for profiles using parameters like name, title, location, company\n\n## Processing Algorithm\n1. SEARCH BY EMAIL: First, attempt to find the LinkedIn profile using the person's email address.\n2. ALTERNATIVE SEARCH: If no profile is found via email, Get company details from CRM to get a company name and use available parameters (name, company, location) to search for potential matches. \n3. PROFILE DETAILS: Once a profile is found, retrieve comprehensive profile details.\n4. PROFILE SUMMARY: Create a concise, informative summary of the profile highlighting key professional information.\n5. POST RETRIEVAL: Obtain the person's recent LinkedIn posts.\n6. POST SUMMARY: Analyze posts to identify patterns, interests, and professional focus areas.\n7. CRM UPDATE: Update the Pipedrive record with:\n - LinkedIn profile URL\n - Profile summary\n - Post activity summary\n\n## Output Requirements\nFor each profile processed, you must:\n1. Use structured, consistent data format for CRM updates\n2. Include relevant professional insights that could aid in business relationship development\n3. Format all summaries in clear, concise language\n4. Handle errors gracefully, documenting any profiles that could not be enriched\n\nAlways respect privacy and data protection standards throughout this process. Process each record thoroughly before moving to the next one."
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "db2ff73b-eab1-4334-91e7-e79d49c3dc75",
"name": "Update data in Pipedrive1",
"type": "n8n-nodes-base.pipedriveTool",
"position": [
580,
960
],
"parameters": {
"personId": "={{ $('Pipedrive Trigger Update Data for Existing Client').item.json.data.id }}",
"resource": "person",
"operation": "update",
"updateFields": {
"customProperties": {
"property": [
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property0_Property_Value', `User post summary`, 'string') }}"
},
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property1_Property_Value', `linkedin profile url`, 'string') }}"
},
{
"name": "YOUR_AWS_SECRET_KEY_HERE",
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('property2_Property_Value', `profile summary`, 'string') }}"
},
{
"name": "YOUR_AWS_SECRET_KEY_HERE"
}
]
}
},
"descriptionType": "manual",
"toolDescription": "Update data in Pipedrive\nUse this tool for update customer data from linkedin profile:\nPost summary\nProfile URL\nProfile summary"
},
"credentials": {
"pipedriveApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "603575e8-6177-4a15-ba26-c4c050ebbc8d",
"name": "Update data in HubSpot",
"type": "n8n-nodes-base.hubspotTool",
"position": [
500,
1720
],
"parameters": {
"email": "={{ $json.properties.email.value }}",
"options": {},
"authentication": "appToken",
"descriptionType": "manual",
"toolDescription": "Update HubSpot CRM Data",
"additionalFields": {
"customPropertiesUi": {
"customPropertiesValues": [
{
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customPropertiesValues0_Value', `LinkedIn Post Summary`, 'string') }}",
"property": "linkedin_posts_summary"
},
{
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customPropertiesValues1_Value', `LinkedIn Profile Summary`, 'string') }}",
"property": "profile_summary"
},
{
"value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('customPropertiesValues3_Value', `Linkedin URL`, 'string') }}",
"property": "linkedin_url"
}
]
}
}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "02935731-b9b1-490c-9416-f297106bb148",
"name": "HDW Search LinkedIn Profile1",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
720,
960
],
"parameters": {
"keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Keywords', ``, 'string') }}",
"additionalFields": {
"location": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Location', `location`, 'string') }}",
"last_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Last_Name', `last name`, 'string') }}",
"first_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('First_Name', `first name`, 'string') }}",
"company_keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Company_Keywords', `company`, 'string') }}"
}
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9354223f-88de-4a79-9ac8-19fa711ca341",
"name": "HDW Search LinkedIn Profile2",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
800,
1720
],
"parameters": {
"keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Keywords', ``, 'string') }}",
"additionalFields": {
"location": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Location', `location`, 'string') }}",
"last_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Last_Name', `last name`, 'string') }}",
"first_name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('First_Name', `first name`, 'string') }}",
"company_keywords": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Company_Keywords', `company`, 'string') }}"
}
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "373b2006-b5f2-4903-add3-0ed48a17ab97",
"name": "HDW Get LinkedIn Profile Details1",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
880,
960
],
"parameters": {
"user": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User', `user alias`, 'string') }}",
"operation": "getProfile"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "53f71433-2806-4c66-8a46-44ed9f5d688d",
"name": "HDW Get LinkedIn Profile Details2",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
960,
1720
],
"parameters": {
"user": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User', `user alias`, 'string') }}",
"operation": "getProfile"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "00c64271-b0c7-4eee-b412-74eec1c390c5",
"name": "HDW Get LinkedIn Profile Posts1",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
1040,
960
],
"parameters": {
"urn": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User_URN', `user URN with prefix: fsd_profile:ACoAA..`, 'string') }}",
"operation": "getPosts"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "21727229-4e20-48ad-939d-4f620829cb62",
"name": "HDW Get LinkedIn Profile Posts2",
"type": "n8n-nodes-hdw.hdwLinkedinTool",
"position": [
1120,
1720
],
"parameters": {
"urn": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('User_URN', `user URN with prefix: fsd_profile:ACoAA..`, 'string') }}",
"operation": "getPosts"
},
"credentials": {
"hdwLinkedinApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "6fd5f3e8-4a2c-4ef3-a9c3-b10e5420f20e",
"name": "HubSpot Get Contact Data",
"type": "n8n-nodes-base.hubspot",
"position": [
-180,
1380
],
"parameters": {
"contactId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.contactId }}"
},
"operation": "get",
"authentication": "appToken",
"additionalFields": {
"propertiesCollection": {
"propertiesValues": {
"properties": [
"firstname",
"lastname",
"email",
"company"
],
"propertyMode": "valueOnly"
}
}
}
},
"credentials": {
"hubspotAppToken": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "cbda84b3-6b42-400e-9926-428d5759714a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-20
],
"parameters": {
"width": 2100,
"height": 1180,
"content": "## PipeDrive Agent"
},
"typeVersion": 1
},
{
"id": "5824df79-605d-4fd4-aa86-a50f0425d0cc",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
1240
],
"parameters": {
"width": 2100,
"height": 660,
"content": "## HubSpot Agent"
},
"typeVersion": 1
},
{
"id": "50321ab6-d818-4160-ada5-4b5bd5ab432f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-440,
1280
],
"parameters": {
"color": 3,
"width": 400,
"height": 280,
"content": "1. Create custom fields in your CRM\n2. Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "c9adb7de-0a6f-4800-807c-d67b2ffb4814",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
1280
],
"parameters": {
"color": 3,
"width": 400,
"height": 280,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "022986b3-26e9-4ecc-b700-7cb61fca3ca2",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
1660
],
"parameters": {
"color": 3,
"width": 150,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "7cb9b84a-ef8e-40db-9c9a-03513a2c778a",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-340,
600
],
"parameters": {
"color": 3,
"width": 320,
"height": 260,
"content": "1. Create custom fields in your CRM\n2. Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "4f0f1330-5a20-485a-be61-3e19fe8ae7cb",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
-20
],
"parameters": {
"color": 3,
"width": 320,
"height": 220,
"content": "1. Create custom fields in your CRM\n2. Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "9cb66045-3364-473d-94a9-a07e014997c6",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
580
],
"parameters": {
"color": 3,
"width": 400,
"height": 280,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "eeccfac0-afa0-4990-b74f-c6fd06364d9b",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
-20
],
"parameters": {
"color": 3,
"width": 400,
"height": 280,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "e734b8c3-4df3-4c53-87f7-80a093b4177d",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
900
],
"parameters": {
"color": 3,
"width": 150,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "a9a31bf4-f1e4-4980-9ff8-f84310e8a6ee",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
240
],
"parameters": {
"color": 3,
"width": 150,
"content": "Check the fields mapping in the node"
},
"typeVersion": 1
},
{
"id": "492448e0-cc3c-4a5c-94fd-5eb5cf7c135f",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1780,
-440
],
"parameters": {
"width": 960,
"height": 2700,
"content": "# CRM Data Enrichment Workflow\nhorizondatawave.ai\n\n## Overview\nThis n8n workflow automates the enrichment of CRM contact data with professional insights from LinkedIn profiles. The workflow integrates with both Pipedrive and HubSpot CRMs, finding LinkedIn profiles that match your contacts and updating your CRM with valuable information about their professional background and recent activities.\n\n## Key Features\n- **Multi-CRM Support**: Works with both Pipedrive and HubSpot\n- **AI-Powered Data Enrichment**: Uses an advanced AI agent to analyze and summarize professional information\n- **Automated Triggers**: Activates when new contacts are added or when enrichment is requested\n- **Comprehensive Profile Analysis**: Captures LinkedIn profile summaries and post activity\n\n## How It Works\n\n### Triggers\nThe workflow activates in three scenarios:\n1. When a new contact is created in CRM\n2. When a contact is updated in CRM with an enrichment flag\n\n### LinkedIn Data Collection Process\n1. **Email Lookup**: First tries to find the LinkedIn profile using the contact's email\n2. **Advanced Search**: If email lookup fails, uses name and company details to find potential matches\n3. **Profile Analysis**: Collects comprehensive profile information\n4. **Post Analysis**: Gathers and analyzes the contact's recent LinkedIn activity\n\n### CRM Updates\nThe workflow updates your CRM with:\n- LinkedIn profile URL\n- Professional summary (skills, experience, background)\n- Analysis of recent LinkedIn posts and activity\n\n## Setup Instructions\n\n### Requirements\n1. Self-hosted n8n instance with the HDW LinkedIn community node installed\n2. API access to OpenAI (for GPT-4o)\n3. Pipedrive and/or HubSpot account\n4. HDW API key [https://app.horizondatawave.ai](https://app.horizondatawave.ai)\n\n\n### Installation Steps\n1. **Install the HDW LinkedIn Node**:\n ```\n npm install n8n-nodes-hdw\n ```\n - Follow the detailed instructions at: [https://www.npmjs.com/package/n8n-nodes-hdw](https://www.npmjs.com/package/n8n-nodes-hdw)\n\n2. **Configure Credentials**:\n - **OpenAI**: Add your OpenAI API key\n - **Pipedrive**: Connect your Pipedrive account (if using)\n - **HubSpot**: Connect your HubSpot account (if using)\n - **HDW LinkedIn**: Add your API key from [https://app.horizondatawave.ai](https://app.horizondatawave.ai)\n\n3. **CRM Custom Fields Setup**:\n \n **For Pipedrive:**\n - Go to Settings \u2192 Data Fields \u2192 Contact Fields \u2192 + Add Field\n - Create the following custom fields:\n - **LinkedIn Profile**: Field type - Large text\n - **Profile Summary**: Field type - Large text \n - **LinkedIn Posts Summary**: Field type - Large text\n - **Need Enrichment**: Field type - Single option (Yes/No)\n \n Detailed instructions for creating custom fields in Pipedrive: \n [https://support.pipedrive.com/en/article/custom-fields](https://support.pipedrive.com/en/article/custom-fields)\n \n **For HubSpot:**\n - Go to Settings \u2192 Properties \u2192 Create property\n - Create the following properties for Contact object:\n - **linkedin_url**: Field type - Single-line text\n - **profile_summary**: Field type - Multi-line text\n - **linkedin_posts_summary**: Field type - Multi-line text\n - **need_enrichment**: Field type - Checkbox (Boolean)\n \n Detailed instructions for creating properties in HubSpot:\n [https://knowledge.hubspot.com/properties/create-and-edit-properties](https://knowledge.hubspot.com/properties/create-and-edit-properties)\n\n4. **Import the Workflow**:\n - Import the \"HDW_CRM_Enrichment.json\" file into your n8n instance\n\n5. **Activate Webhooks**:\n - Enable the webhook triggers for your CRM to ensure the workflow activates correctly\n\n## Customization Options\n\n### AI Agent Prompts\nYou can modify the system prompts in the \"Data Enrichment AI Agent\" nodes to:\n- Change the focus of profile analysis\n- Adjust the tone and detail level of summaries\n- Customize what information is extracted from posts\n\n### CRM Field Mapping\nThe workflow is pre-configured to update specific custom fields in Pipedrive and HubSpot. Update the field/property mappings in:\n- \"Update data in Pipedrive\" nodes\n- \"Update data in HubSpot\" node\n\n## Troubleshooting\n\n### Common Issues\n- **LinkedIn Profile Not Found**: Check if the contact's email is their work email; consider adjusting the search parameters\n- **Webhook Not Triggering**: Verify webhook configuration in your CRM\n- **Missing Custom Fields**: Ensure all required custom fields are created in your CRM with correct names\n\n### Rate Limits\n- Be aware of LinkedIn API rate limits (managed by HDW LinkedIn node)\n- Consider implementing delays if processing large batches of contacts\n\n## Best Practices\n- Use enrichment flags to selectively update contacts rather than enriching all contacts\n- Review and clean contact data in your CRM before enrichment\n- Periodically review the AI-generated summaries to ensure quality and relevance\n"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "590fdecb-0bdb-4019-8602-ead5ada0e6c1",
"connections": {
"If1": {
"main": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "main",
"index": 0
}
],
[
{
"node": "If2",
"type": "main",
"index": 0
}
]
]
},
"If2": {
"main": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "main",
"index": 0
}
]
]
},
"HubSpot Trigger": {
"main": [
[
{
"node": "HubSpot Get Contact Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model2": {
"ai_languageModel": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Enrich Flag is True": {
"main": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "main",
"index": 0
}
]
]
},
"Get Company from CRM": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Get Company from CRM1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update data in HubSpot": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Data Enrichment AI Agent": {
"main": [
[]
]
},
"HubSpot Get Contact Data": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"Update data in Pipedrive": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Update data in Pipedrive1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Search LinkedIn Profile": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Search LinkedIn Profile1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Search LinkedIn Profile2": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Pipedrive Trigger New Contact": {
"main": [
[
{
"node": "Data Enrichment AI Agent",
"type": "main",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Posts": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Posts1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Posts2": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Details": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Details1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn Profile Details2": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn profile by Email": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn profile by Email1": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent2",
"type": "ai_tool",
"index": 0
}
]
]
},
"HDW Get LinkedIn profile by Email2": {
"ai_tool": [
[
{
"node": "Data Enrichment AI Agent1",
"type": "ai_tool",
"index": 0
}
]
]
},
"Pipedrive Trigger Update Data for Existing Client": {
"main": [
[
{
"node": "Enrich Flag is True",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
hdwLinkedinApihubspotAppTokenhubspotDeveloperApiopenAiApipipedriveApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
⚠️ DISCLAIMER: This workflow uses the AnySite LinkedIn community node, which is only available on self-hosted n8n instances. It will not work on n8n.cloud.
Source: https://n8n.io/workflows/4242/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead co
How it works:
How it works:
This n8n workflow template is designed for customer support, CX, and ops teams that manage customer messages through HubSpot and use Jira for internal task management. It is especially useful for SaaS
This template is for Customer Success and Sales teams who use HubSpot. It automates the critical handoff from sales to success, ensuring every new customer gets a fast, personalized welcome. It's perf