Templates / Enrich and deduplicate Slack-uploaded companies in HubSpot with Coresignal

Enrich and deduplicate Slack-uploaded companies in HubSpot with Coresignal

Unknown

by Artur Mulagalijev ✓ · 11 views · created 2026-05-08 · Lead Generation, AI Summarization

Unknown. This template uses community nodes we can't verify statically. Uses community nodes that can't be verified statically (unverified community packages are off by default in 3.0). Static check, last run 2026-10-19.

Worth a look

Community nodes

These come from third-party npm packages. In n8n 3.0 unverified community packages are off by default (N8N_UNVERIFIED_PACKAGES_ENABLED=false).

Nodes used (11)

SlackHubSpot

What it does

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 user approval to decide which companies to enrich. The result is a clean, enriched CRM dataset without duplicates and context rich company profiles. Ideal for B2B sales, marketing, and RevOps teams. How It Works 1. A file is uploaded to a Slack channel. The workflow downloads and extracts company data from the file. 2. Company domains are inserted into a temporary data table. 3. HubSpot is queried to identify existing companies (duplicates). 4. If duplicates are found, the user is asked via Slack whether to enrich them. 5. Approved companies are enriched using Coresignal multi-source data. 6. Existing companies are updated, and new companies are created in HubSpot. 7. A summary of results (created, updated, skipped) is posted to Slack. Tools used |Tool / Node|What it does in the workflow|Free / credentials needed?| |-|-|-| |Slack Trigger|Waits for a file to be uploaded in a Slack channel and sends file metadata|Slack app configuration required| |Slack Get File|Fetches the file download URL|Slack app configuration required| |Slack Message|Notifies user that workflow has started|Slack app configuration required| |HTTP Request|Downloads the file from Slack|Slack credentials required| |Extract from File|Parses CSV/Excel data|No credentials required| |Data Table (insert)|Stores company domains|No credentials required| |HubSpot Search Company|Checks for duplicates in HubSpot|HubSpot credentials required| |IF Node|Determines if company exists|No credentials required| |Slack Send & Wait|Asks user whether to enrich duplicates|Slack app configuration required| |Merge Node|Combines approval results|No credentials required| |Data Table (delete/get)|Manages temporary dataset|No credentials required| |Coresignal Enrich Company|Fetches company enrichment data|Coresignal API key required| |Code Node|Maps domains to HubSpot company IDs|No credentials required| |HubSpot Update Company|Updates existing companies|HubSpot credentials required| |HubSpot Create Company|Creates new companies|HubSpot credentials required| |Summarize Node|Counts number of companies (created, updated, skipped) throughout the workflow|No credentials required| |Merge Node (final)|Combines all summary results into one output|No credentials required| |Slack Message (final)|Sends summary of results to Slack channel|Slack app configuration required| How to Set Up 1. Slack Trigger - listen for the fileshare event on your chosen channel. Select the channel by ID, connect your Slack API credential, and ensure your Slack app has permissions to read files and post messages. 2. Notify Slack on file download - send an informational message to the channel confirming processing has started. Use ephemeral mode if the message should only be visible to the triggering user. 3. Download & setch file contents - use a Slack node (resource: file, operation: get) to download the file using the trigger's fileid. Follow this with an HTTP Request node using your Slack credentials to fetch the private download URL - set responseFormat to file to retrieve a binary buffer. 4. Extract & stage data - parse the file with an Extract from File node (supports CSV, Excel, and other tabular formats). Before inserting, use a Data Table node (deleteRows) to clear any existing rows matching the current domain, then insert the fresh data with insertRows. Use the same Data Table ID for both operations. 5. Search HubSpot by domain - use a HubSpot node (searchByDomain) with the expression ={{ $json.Website }} and returnAll enabled to check whether the company already exists. Connect via OAuth2. 6. Branch: existing vs. new company - use an IF node to check whether a HubSpot company ID was returned. The true branch handles updates and duplica

View the original on n8n.io → Check your own copy

Get the weekly “what broke” email

New templates, newly broken ones, and n8n release changes. One short email a week.

Form not loading? Subscribe here.