AutomationFlowsSlack & Telegram › Enrich and Deduplicate Slack-uploaded Companies in Hubspot with Coresignal

Enrich and Deduplicate Slack-uploaded Companies in Hubspot with Coresignal

ByArtur Mulagalijev @amulagalijev on n8n.io

This workflow automates the full company enrichment pipeline: Simply import CSV company lists to Slack and save time on enrichment and CRM maintenance. It processes uploaded files, extracts company domains, checks for existing records in HubSpot, and uses conditional logic with…

Event trigger★★★★★ complexity33 nodesSlack TriggerSlackHTTP RequestData TableHubSpotN8N Nodes Coresignal Api
Slack & Telegram Trigger: Event Nodes: 33 Complexity: ★★★★★ Added:
Enrich and Deduplicate Slack-uploaded Companies in Hubspot with Coresignal — n8n workflow card showing Slack Trigger, Slack, HTTP Request integration

This workflow corresponds to n8n.io template #15540 — we link there as the canonical source.

This workflow follows the Datatable → HTTP Request 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 →

Download .json
{
  "id": "gwm8nNb7UBi9JOnn",
  "name": "Updates workflow N2",
  "tags": [],
  "nodes": [
    {
      "id": "874bf355-70ae-46d0-9b63-53cc9b74fed6",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        608
      ],
      "parameters": {
        "width": 480,
        "height": 896,
        "content": "## Enriching companies with Coresignal data and uploading them to HubSpot from Slack\n\n### How it works\n\n1. The workflow starts with Slack trigger and file handling.\n2. Extracted data is processed into tables, and the HubSpot search node looks for already existing companies to avoid duplication. \n3. Conditional logic determines company update/create workflows.\n4. User is prompted to approve enrichment or already existing companies with the Slack send message and wait for reply node. \n5. Data is enriched with information retrieved from Coresignal.\n6. Company records are matched with existing company IDs and are updated, and new companies are created in HubSpot. \n7. Summary is generated and posted in the Slack channel. \n\n### Setup steps\n\n- [ ] Generate HubSpot developer key.\n- [ ] Validate Slack API permissions.\n- [ ] Make sure Coresignal credentials are set up\n- [ ] Make sure the data table with the Domain column is created. \n- [ ] Customize production steps to match the custom data fields in HubSpot and match them with Coresignal's payload data. \n"
      },
      "typeVersion": 1
    },
    {
      "id": "d7a0b43a-c020-4029-b217-6cf067b0cfbe",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        736
      ],
      "parameters": {
        "color": 7,
        "width": 880,
        "height": 272,
        "content": "## File input and extraction\n\nHandles file input and extraction from Slack."
      },
      "typeVersion": 1
    },
    {
      "id": "49d8a21d-f8d4-4d6c-8d41-7084de69749e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1744,
        736
      ],
      "parameters": {
        "color": 7,
        "width": 848,
        "height": 272,
        "content": "## Data table insertion and deduplication\n\nProcesses and inserts extracted data into a table."
      },
      "typeVersion": 1
    },
    {
      "id": "819ca0d4-ccf0-4008-b1d3-85fed0abe5a4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2640,
        688
      ],
      "parameters": {
        "color": 7,
        "width": 1424,
        "height": 768,
        "content": "## Conditional company checks\n\nHandles conditional logic to retrieve or process company data and prompts user to approve enrichment of already existing companies. "
      },
      "typeVersion": 1
    },
    {
      "id": "56da7135-ed50-413f-8611-c0fc398db01e",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4096,
        656
      ],
      "parameters": {
        "color": 7,
        "width": 608,
        "height": 768,
        "content": "## External company data enrichment\n\nFetches additional company data from external sources like Coresignal. Matches the company IDs with domains and updates/creates companies in HubSpot. "
      },
      "typeVersion": 1
    },
    {
      "id": "c85f3a59-442e-40db-8181-353e6b30de2d",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4784,
        672
      ],
      "parameters": {
        "color": 7,
        "width": 448,
        "height": 592,
        "content": "## Summarization and summary actions\n\nSummary of updated and created companies. "
      },
      "typeVersion": 1
    },
    {
      "id": "c35dcd4f-b1b3-4165-bd0d-2033b00ff0d1",
      "name": "When Slack File Uploaded",
      "type": "n8n-nodes-base.slackTrigger",
      "position": [
        864,
        848
      ],
      "parameters": {
        "options": {},
        "trigger": [
          "file_share"
        ],
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0AQJT5B8PN"
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8ad028cc-396c-445d-a607-f2ff0a6882df",
      "name": "Extract Data from File",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        1552,
        848
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "fa896f70-60d8-406a-a9e8-bb2f706b79a5",
      "name": "Download Slack File",
      "type": "n8n-nodes-base.slack",
      "position": [
        1040,
        848
      ],
      "parameters": {
        "fileId": "={{ $json.file_id }}",
        "resource": "file",
        "operation": "get"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "8f034293-ab99-49c0-b292-3054b7e31992",
      "name": "Fetch File Contents",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1360,
        848
      ],
      "parameters": {
        "url": "={{ $('Download Slack File').item.json.url_private_download }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        },
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "slackApi"
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "82a70d38-2c9b-4d61-ad6b-0b057f801d0a",
      "name": "Insert File Data into Table",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        1840,
        848
      ],
      "parameters": {
        "columns": {
          "value": {
            "Website": "={{ $json.Website }}"
          },
          "schema": [
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Website"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "qpFU5IWqd6ETwQ4O",
          "cachedResultUrl": "/projects/d8siYNB21z0O177I/datatables/qpFU5IWqd6ETwQ4O",
          "cachedResultName": "HubSpot_Duplicates"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "3fbf46a1-ad67-4cf2-8cd6-691d9e61bdd6",
      "name": "Search Company by Domain",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueRegularOutput",
      "position": [
        2096,
        848
      ],
      "parameters": {
        "domain": "={{ $json.Website }}",
        "options": {},
        "resource": "company",
        "operation": "searchByDomain",
        "returnAll": true,
        "authentication": "oAuth2"
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2,
      "alwaysOutputData": true
    },
    {
      "id": "dd6f8b6b-8b5d-4f52-9860-99ce52604b11",
      "name": "Retrieve Current Table Rows",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        3696,
        1264
      ],
      "parameters": {
        "operation": "get",
        "returnAll": true,
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "qpFU5IWqd6ETwQ4O",
          "cachedResultUrl": "/projects/d8siYNB21z0O177I/datatables/qpFU5IWqd6ETwQ4O",
          "cachedResultName": "HubSpot_Duplicates"
        }
      },
      "executeOnce": true,
      "typeVersion": 1.1
    },
    {
      "id": "79676b4b-3675-4576-9db3-ebd506b6a64f",
      "name": "Create New HubSpot Company",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueRegularOutput",
      "position": [
        4528,
        1088
      ],
      "parameters": {
        "name": "={{ $json.company_name }}",
        "resource": "company",
        "authentication": "oAuth2",
        "additionalFields": {
          "city": "={{ $json.hq_city }}",
          "websiteUrl": "={{ $json.website_domain }}",
          "description": "={{ $json.description }}",
          "annualRevenue": "={{ $json.revenue_annual.source_5_annual_revenue.annual_revenue }}",
          "countryRegion": "={{ $json.hq_location }}",
          "numberOfEmployees": 0,
          "linkedInCompanyPage": "={{ $json.linkedin_url }}"
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6d9a9c5a-c194-4b43-b055-2c30d82c561b",
      "name": "Post Results to Slack",
      "type": "n8n-nodes-base.slack",
      "position": [
        5424,
        928
      ],
      "parameters": {
        "text": "={{ $json[\"count_portalId\"] ?? 0 }} Duplicates found and enriched. \n\n{{ $json.count_companyId }} Companies added.\n\n{{ $json.count_object_Object }} Companies were not found and therefore were not added. ",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0AQJT5B8PN"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "a5e7ee49-55ec-40e4-9338-2dab9baf6e39",
      "name": "Summarize Company Creation",
      "type": "n8n-nodes-base.summarize",
      "position": [
        4848,
        1088
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "companyId"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "38d5face-3e0a-4e2e-89c7-b40c12c24819",
      "name": "Combine All Summaries",
      "type": "n8n-nodes-base.merge",
      "onError": "continueRegularOutput",
      "position": [
        5072,
        912
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition",
        "numberInputs": 3
      },
      "typeVersion": 3.2,
      "alwaysOutputData": true
    },
    {
      "id": "d661247b-fa6d-48ea-8e16-100b1050590f",
      "name": "Check if Company Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        4320,
        944
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "eeb2a3cc-6b1c-46f1-b3f8-6a7e1bb6a242",
              "operator": {
                "type": "number",
                "operation": "notExists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "87a250d9-9802-4b32-84e3-690f055fa030",
      "name": "Summarize Enrichment Status",
      "type": "n8n-nodes-base.summarize",
      "position": [
        4848,
        928
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "={{ $json }}",
              "includeEmpty": true
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2b23d73f-8caa-45f6-8fc7-efbcac6ebebb",
      "name": "Notify Slack on File Download",
      "type": "n8n-nodes-base.slack",
      "position": [
        1200,
        848
      ],
      "parameters": {
        "text": "The worfklow has started. It can take a while if the file is large. ",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0AQJT5B8PN"
        },
        "otherOptions": {
          "ephemeral": {
            "ephemeralValues": {
              "user": {
                "__rl": true,
                "mode": "id",
                "value": "={{ $('When Slack File Uploaded').item.json.user_id }}"
              }
            }
          }
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "5d606562-e47b-4576-9978-d98d6e5747f5",
      "name": "Await Slack User Approval",
      "type": "n8n-nodes-base.slack",
      "position": [
        2864,
        784
      ],
      "parameters": {
        "select": "channel",
        "message": "=There are {{ $json.count_properties_domain_value }} duplicates found. Would you like to enrich these companies, or would you prefer to skip? \n",
        "options": {},
        "channelId": {
          "__rl": true,
          "mode": "id",
          "value": "C0AQJT5B8PN"
        },
        "operation": "sendAndWait",
        "approvalOptions": {
          "values": {
            "approvalType": "double"
          }
        }
      },
      "credentials": {
        "slackApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 2.4
    },
    {
      "id": "c3dc4b4a-8c13-402c-bdcc-08abeda9f926",
      "name": "Check HubSpot Company ID",
      "type": "n8n-nodes-base.if",
      "position": [
        2304,
        848
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "136f3134-1cc6-4c66-ae8d-16e217bbac3a",
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.companyId }}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "2ce4668a-248e-4772-a54f-b1596b5f328e",
      "name": "Verify Approval from Slack",
      "type": "n8n-nodes-base.if",
      "position": [
        3040,
        784
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "235682a1-4753-4837-9a0b-c4b1fd90fb6c",
              "operator": {
                "type": "boolean",
                "operation": "equals"
              },
              "leftValue": "={{ $json.data.approved }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "6291f728-1565-4e58-8241-e02d0d72079d",
      "name": "Process Company Fields",
      "type": "n8n-nodes-base.code",
      "position": [
        4320,
        768
      ],
      "parameters": {
        "jsCode": "const cosiItems = $input.all();\nconst hubspotItems = $('Combine Approval Results').all();\n\nfunction normalizeDomain(domain) {\n  return String(domain || '')\n    .trim()\n    .toLowerCase()\n    .replace(/^https?:\\/\\//, '')\n    .replace(/^www\\./, '')\n    .replace(/\\/$/, '');\n}\n\n// Build HubSpot domain -> companyId map\nconst hubspotMap = new Map();\n\nfor (const item of hubspotItems) {\n  const domain = normalizeDomain(item.json?.properties?.domain?.value);\n  const companyId = item.json?.companyId;\n\n  if (domain && companyId) {\n    hubspotMap.set(domain, companyId);\n  }\n}\n\n// Add matched HubSpot companyId to each Cosi item\nreturn cosiItems.map(item => {\n  const cosiDomain = normalizeDomain(item.json?.website_domain);\n  const matchedCompanyId = hubspotMap.get(cosiDomain) ?? null;\n\n  return {\n    json: {\n      ...item.json,\n      hubspot_companyId: matchedCompanyId,\n    },\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "7cfef268-622d-4645-b883-44e0d10b3ef0",
      "name": "Update HubSpot Company Data",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        4544,
        768
      ],
      "parameters": {
        "resource": "company",
        "companyId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.hubspot_companyId }}"
        },
        "operation": "update",
        "updateFields": {
          "city": "={{ $json.hq_city }}",
          "websiteUrl": "={{ $json.website_domain }}",
          "description": "={{ $json.description_enriched }}",
          "yearFounded": "={{ $json.founded_year }}"
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "49aeda8a-4902-46c9-8f77-60d6a4ec88f3",
      "name": "Summarize Update Results",
      "type": "n8n-nodes-base.summarize",
      "position": [
        4848,
        768
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "portalId"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "d3c7b7f6-2533-49e3-bbec-30d69f68802d",
      "name": "Summarize Existing Company",
      "type": "n8n-nodes-base.summarize",
      "position": [
        2720,
        784
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "properties.domain.value"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "22eb49ba-6556-4212-a607-2f4deb66280c",
      "name": "Combine Approval Results",
      "type": "n8n-nodes-base.merge",
      "position": [
        3264,
        896
      ],
      "parameters": {
        "mode": "combine",
        "options": {
          "includeUnpaired": true
        },
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3.2
    },
    {
      "id": "ef478413-ad09-436f-90f5-8d6d0df91b6a",
      "name": "Discard Unapproved Rows",
      "type": "n8n-nodes-base.dataTable",
      "onError": "continueRegularOutput",
      "position": [
        3312,
        1072
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "Website",
              "keyValue": "={{ $json.properties.domain.value }}"
            }
          ]
        },
        "options": {},
        "operation": "deleteRows",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "qpFU5IWqd6ETwQ4O",
          "cachedResultUrl": "/projects/d8siYNB21z0O177I/datatables/qpFU5IWqd6ETwQ4O",
          "cachedResultName": "HubSpot_Duplicates"
        }
      },
      "typeVersion": 1.1,
      "alwaysOutputData": true
    },
    {
      "id": "b1362ba6-feaf-4833-b8f7-1ef3a1ca3161",
      "name": "Clear the table for next use",
      "type": "n8n-nodes-base.dataTable",
      "position": [
        3936,
        1072
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "Website",
              "keyValue": "={{ $json.Website }}"
            }
          ]
        },
        "options": {},
        "operation": "deleteRows",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "qpFU5IWqd6ETwQ4O",
          "cachedResultUrl": "/projects/d8siYNB21z0O177I/datatables/qpFU5IWqd6ETwQ4O",
          "cachedResultName": "HubSpot_Duplicates"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "f241194c-3d04-4881-b225-309ff5d47c47",
      "name": "Clear table for next use",
      "type": "n8n-nodes-base.dataTable",
      "onError": "continueRegularOutput",
      "position": [
        3520,
        768
      ],
      "parameters": {
        "filters": {
          "conditions": [
            {
              "keyName": "Website",
              "keyValue": "={{ $json.properties.domain.value }}"
            }
          ]
        },
        "options": {},
        "operation": "deleteRows",
        "dataTableId": {
          "__rl": true,
          "mode": "list",
          "value": "qpFU5IWqd6ETwQ4O",
          "cachedResultUrl": "/projects/d8siYNB21z0O177I/datatables/qpFU5IWqd6ETwQ4O",
          "cachedResultName": "HubSpot_Duplicates"
        }
      },
      "typeVersion": 1.1,
      "alwaysOutputData": true
    },
    {
      "id": "f719255e-f14b-4e54-8747-4770f7baf63e",
      "name": "Enrich Existing company",
      "type": "n8n-nodes-coresignal-api.coresignal",
      "onError": "continueRegularOutput",
      "position": [
        4128,
        768
      ],
      "parameters": {
        "resource": "company",
        "operation": "enrich",
        "websiteUrl": "={{ $json.Website }}"
      },
      "credentials": {
        "coresignalApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": false,
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "6ddf3f63-8711-4d2c-987c-22fb897c6f57",
      "name": "Enrich new company",
      "type": "n8n-nodes-coresignal-api.coresignal",
      "onError": "continueRegularOutput",
      "position": [
        4128,
        1264
      ],
      "parameters": {
        "resource": "company",
        "operation": "enrich",
        "websiteUrl": "={{ $json.Website }}"
      },
      "credentials": {
        "coresignalApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": false,
      "typeVersion": 1,
      "alwaysOutputData": true
    }
  ],
  "active": true,
  "settings": {
    "binaryMode": "separate",
    "executionOrder": "v1"
  },
  "versionId": "75a2407b-e24e-44d5-b578-023e0b58a5ee",
  "connections": {
    "Enrich new company": {
      "main": [
        [
          {
            "node": "Check if Company Exists",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Slack File": {
      "main": [
        [
          {
            "node": "Notify Slack on File Download",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch File Contents": {
      "main": [
        [
          {
            "node": "Extract Data from File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine All Summaries": {
      "main": [
        [
          {
            "node": "Post Results to Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Data from File": {
      "main": [
        [
          {
            "node": "Insert File Data into Table",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Company Fields": {
      "main": [
        [
          {
            "node": "Update HubSpot Company Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check if Company Exists": {
      "main": [
        [
          {
            "node": "Summarize Enrichment Status",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create New HubSpot Company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Discard Unapproved Rows": {
      "main": [
        [
          {
            "node": "Retrieve Current Table Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enrich Existing company": {
      "main": [
        [
          {
            "node": "Process Company Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check HubSpot Company ID": {
      "main": [
        [
          {
            "node": "Summarize Existing Company",
            "type": "main",
            "index": 0
          },
          {
            "node": "Combine Approval Results",
            "type": "main",
            "index": 1
          }
        ],
        [
          {
            "node": "Retrieve Current Table Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clear table for next use": {
      "main": [
        [
          {
            "node": "Enrich Existing company",
            "type": "main",
            "index": 0
          },
          {
            "node": "Retrieve Current Table Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine Approval Results": {
      "main": [
        [
          {
            "node": "Clear table for next use",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Company by Domain": {
      "main": [
        [
          {
            "node": "Check HubSpot Company ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Update Results": {
      "main": [
        [
          {
            "node": "Combine All Summaries",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Slack File Uploaded": {
      "main": [
        [
          {
            "node": "Download Slack File",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Await Slack User Approval": {
      "main": [
        [
          {
            "node": "Verify Approval from Slack",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create New HubSpot Company": {
      "main": [
        [
          {
            "node": "Summarize Company Creation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Company Creation": {
      "main": [
        [
          {
            "node": "Combine All Summaries",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Summarize Existing Company": {
      "main": [
        [
          {
            "node": "Await Slack User Approval",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Approval from Slack": {
      "main": [
        [
          {
            "node": "Combine Approval Results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Discard Unapproved Rows",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Insert File Data into Table": {
      "main": [
        [
          {
            "node": "Search Company by Domain",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Current Table Rows": {
      "main": [
        [
          {
            "node": "Enrich new company",
            "type": "main",
            "index": 0
          },
          {
            "node": "Clear the table for next use",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Summarize Enrichment Status": {
      "main": [
        [
          {
            "node": "Combine All Summaries",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Update HubSpot Company Data": {
      "main": [
        [
          {
            "node": "Summarize Update Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notify Slack on File Download": {
      "main": [
        [
          {
            "node": "Fetch File Contents",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow automates the full company enrichment pipeline: Simply import CSV company lists to Slack and save time on enrichment and CRM maintenance. It processes uploaded files, extracts company domains, checks for existing records in HubSpot, and uses conditional logic with…

Source: https://n8n.io/workflows/15540/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

Type in Slack. Walk away. Get a professional PDF report and a structured Excel fix sheet delivered to Google Drive and posted back in your Slack thread — fully automated, zero manual work.

Compression, HTTP Request, Google Drive +3
Slack & Telegram

This workflow enables seamless, bidirectional communication between WhatsApp and Slack using n8n. It automates the reception, processing, and forwarding of messages (text, media, and documents) betwee

WhatsApp Trigger, Slack, Slack Trigger +2
Slack & Telegram

Automatically convert structured Slack messages into Jira issues with parsed titles, descriptions, and priorities. This workflow also downloads file attachments from Slack (e.g., screenshots, logs, or

Slack Trigger, Jira, Slack +1
Slack & Telegram

Triggers when a contact property changes in HubSpot (e.g., added to a sequence) Lusha enriches the contact with verified email, direct phone, and seniority A prospect record is built and validated — c

HubSpot Trigger, @Lusha Org/N8N Nodes Lusha, HTTP Request +2
Slack & Telegram

Http Slack. Uses slack, hubspotTrigger, hubspot, httpRequest. Event-driven trigger; 5 nodes.

Slack, HubSpot Trigger, HubSpot +1