🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

HubSpot + Bedrijfsdata.nl: clean company records

Lisa Granqvist Partner Workflow Automation Expert

Your HubSpot company records rot faster than anyone wants to admit. One wrong domain, a missing KvK number, or an outdated phone field, and suddenly your segmentation, routing, and reporting are all a little bit fake.

This hits marketing ops first (lists and workflows break quietly). But sales teams and small agency owners feel it too, because they’re the ones chasing bad data. With HubSpot enrichment automation, you can keep company profiles current without turning “CRM hygiene” into someone’s weekly job.

This workflow watches for company changes in HubSpot, enriches the record via Bedrijfsdata.nl, then updates the right fields back into HubSpot. You’ll see what it fixes, how matching works, and what you need to run it reliably.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: HubSpot + Bedrijfsdata.nl: clean company records

The Problem: HubSpot company data drifts and breaks targeting

HubSpot companies usually start “clean” for about five minutes. Then people import lists, reps create new records from email signatures, forms capture half a domain, and someone edits the company name to match a trade name. Now your workflows fire on the wrong accounts, your personalization tokens look sloppy, and you can’t trust basic filters like industry, size, or location. The worst part is the mental load. You waste time second-guessing reports and manually verifying what should have been reliable CRM data.

It adds up fast. Here’s where it breaks down in real life.

  • A single missing domain can block enrichment, routing, and duplicate detection for the entire account.
  • Reps end up Googling for a phone number or LinkedIn page, then pasting it into the wrong record.
  • Segmentation becomes guesswork because employee count and industry are inconsistent across records.
  • You clean data once, and two weeks later imports and edits undo the work.

The Solution: Real-time Bedrijfsdata.nl enrichment inside HubSpot

This n8n workflow listens for a HubSpot company event (commonly a property change on the domain, but you can also use create events). When it receives a webhook, it validates the payload so random calls do not create bad updates. Then it pulls the company record from HubSpot and decides how to match it to Bedrijfsdata.nl. If a Bedrijfsdata prospect/company ID already exists on the record, it uses that first. If not, it enriches in real time using the available details (like domain) and runs a simple “can we match?” check before it writes anything back.

Once a profile is found, the workflow normalizes the returned attributes (so your fields get consistent formatting), then updates HubSpot with verified Dutch business data like KvK, LinkedIn URL, phone, and company size. If something fails, the workflow routes to dedicated error paths, which means you can troubleshoot without guessing.

What You Get: Automation vs. Results

Example: What This Looks Like

Say your team creates or updates about 30 company records in a week, and each one needs four quick checks (KvK, LinkedIn, phone, and company size). Manually, that’s maybe 6 minutes per check once you include tab switching and copy-paste, so roughly 12 hours of busywork a week. With this workflow, updating a company triggers the webhook instantly, the Bedrijfsdata lookup runs in the background, and HubSpot gets updated automatically. You’ll still spot-check the occasional edge case, but the default becomes “already filled in.”

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • HubSpot to receive webhooks and update companies
  • Bedrijfsdata.nl for verified Dutch company enrichment
  • Bedrijfsdata.nl API credentials (get them from your Bedrijfsdata developer account)

Skill level: Intermediate. You will connect credentials, map a few HubSpot properties, and test a webhook event end-to-end.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A HubSpot webhook fires. A company event (often a property change on domain) hits the n8n webhook node, so enrichment only runs when something actually changes.

The workflow validates and fetches the company. It checks the incoming payload (portalId, objectId, event type) and then pulls the latest company record from HubSpot, which avoids updating based on stale data.

Bedrijfsdata matching runs with a smart fallback. If the record already has a Bedrijfsdata prospect ID, the workflow retrieves that exact profile. If not, it calls the enrichment step and confirms a match is possible before proceeding. When multiple candidates exist, a small code step selects the top match.

HubSpot updates happen after normalization. The workflow formats the returned attributes for your internal field structure, then updates the HubSpot company. If the API fails or no match exists, the run ends in an explicit error branch, not a half-updated record.

You can easily modify which HubSpot properties trigger enrichment and which Bedrijfsdata fields are written back based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Webhook Trigger

Set up the webhook entry point so HubSpot can send enrichment events into the workflow.

  1. Add the HubSpot Enrichment Webhook node as your trigger.
  2. Set the HTTP Method to POST.
  3. Set the Path to b5e3e64f-f57a-4d08-8631-9bc61416193d and copy the generated test URL for HubSpot.
Use the test URL while configuring the HubSpot webhook subscription, then switch to the production URL after activation.

Step 2: Connect HubSpot Data Access

These nodes read and update HubSpot company records during the enrichment flow.

  1. Open Fetch Sample Company Record and keep Resource set to company and Operation to get.
  2. Set Company ID to the test company (already set to 7611838964 in sample mode).
  3. Open Fetch HubSpot Company and set Company ID to {{ $json.body[0].objectId }} for live events.
  4. Open Modify HubSpot Company and keep Resource to company and Operation to update.
  5. In Modify HubSpot Company, set Company ID to {{ $('HubSpot Enrichment Webhook').first().json.body[0].objectId !== 123 ? $('HubSpot Enrichment Webhook').first().json.body[0].objectId : $('Fetch Sample Company Record').first().json.companyId }}.
  6. Credential Required: Connect your hubspotOAuth2Api credentials in Fetch Sample Company Record, Fetch HubSpot Company, and Modify HubSpot Company.
⚠️ Common Pitfall: If the HubSpot OAuth scope doesn’t include company read/write, Fetch HubSpot Company and Modify HubSpot Company will fail.

Step 3: Validate Incoming Payload and Sample Mode Routing

Confirm the webhook payload is valid and decide whether to use the sample record or the live HubSpot record.

  1. In Verify Incoming Payload, configure three conditions: {{ !!$json.body[0].objectId }} equals true, {{ $json.body[0].portalId }} equals 139601726, and {{ $json.body[0].subscriptionType }} equals company.propertyChange.
  2. In Check Sample Mode, set the condition to {{ $json.body[0].objectId }} equals 123 to route to Fetch Sample Company Record.
  3. Ensure the false output of Check Sample Mode connects to Fetch HubSpot Company.
Keep the sample mode check in place to safely test with the sample company ID 123 before going live.

Step 4: Enrich and Normalize Company Data

Use Bedrijfsdata to enrich company details and normalize the response for updating HubSpot.

  1. In Check Existing Prospect ID, set the condition to {{ !!$json.properties.prospectpro_id.value && $json.properties.prospectpro_id.value !== '' }} to decide between retrieval and enrichment.
  2. In Retrieve Prospect Company, set ID to {{ $json.properties.prospectpro_id.value }} and enable Details.
  3. In Enrich Company Profile, set URL to {{ $json.properties.domain.value }}, City to {{ $json.properties.city.value}}, and Name to {{ $json.properties.name.value }}, with Details enabled.
  4. In Confirm Profile Found, set the condition to {{ $json.total }} greater than 0 before proceeding to Select Top Match.
  5. In Confirm Match Possible, set the condition to {{ $json.found }} greater than 0 before proceeding to Normalize For Update.
  6. Credential Required: Connect your bedrijfsdataApi credentials in Retrieve Prospect Company and Enrich Company Profile.

Step 5: Map and Update HubSpot Company Fields

Transform the selected company data and write it back to HubSpot.

  1. In Select Top Match, keep the JavaScript that returns the first match from input.companies?.[0].
  2. In Normalize For Update, keep the JavaScript that returns input.company to standardize fields.
  3. In Modify HubSpot Company, map update properties: prospectpro_id to {{ $json.id }}, kvk to {{ $json.coc }}, and linkedin_link to {{ Array.isArray($json.linkedin_link) ?$json.linkedin_link[0] : $json.linkedin_link }}.
  4. Confirm the success output from Modify HubSpot Company connects to End Without Action.

Step 6: Add Error Handling Paths

Route failures to clear end points for easier debugging.

  1. Connect the failure output of Verify Incoming Payload to Error: Invalid HubSpot Call.
  2. Connect failure outputs of Fetch HubSpot Company, Modify HubSpot Company, and Fetch Sample Company Record to Error: HubSpot Failure.
  3. Connect failure outputs of Enrich Company Profile and Retrieve Prospect Company to Error: Bedrijfsdata API.
  4. Connect the false outputs of Confirm Profile Found and Confirm Match Possible to Error: No Company Found.
These noOp nodes are placeholders; you can later replace them with notifications or logging actions.

Step 7: Test and Activate Your Workflow

Run a full test to ensure the webhook, enrichment, and update sequence works end-to-end.

  1. Click Execute Workflow and trigger the HubSpot Enrichment Webhook with a sample payload where objectId is 123 to test sample mode.
  2. Confirm the execution follows Verify Incoming PayloadCheck Sample ModeFetch Sample Company RecordCheck Existing Prospect ID and continues through enrichment to Modify HubSpot Company.
  3. Verify in HubSpot that prospectpro_id, kvk, and linkedin_link are updated on the target company.
  4. When satisfied, toggle the workflow to Active and update HubSpot to use the production webhook URL.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • HubSpot private app permissions matter a lot. If updates suddenly fail, check the private app scopes for Companies and review webhook delivery logs in HubSpot first.
  • If Bedrijfsdata.nl returns no match, it’s often because the domain is missing or malformed (extra spaces, http prefixes, or a personal email domain). Clean the domain before enrichment or route those cases to manual review.
  • The code-based “top match” and normalization steps are powerful, but they can overwrite fields you consider source-of-truth. Decide up front which properties should never be replaced (like owner notes or custom lifecycle fields) and exclude them from the update mapping.

Frequently Asked Questions

How long does it take to set up this HubSpot enrichment automation?

About 45 minutes if your HubSpot and Bedrijfsdata accounts are ready.

Do I need coding skills to automate HubSpot enrichment?

No. You’ll mostly connect credentials and map fields in the HubSpot update step.

Is n8n free to use for this HubSpot enrichment workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need Bedrijfsdata.nl credits (their trial includes about 500 credits).

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this HubSpot enrichment automation for different trigger events?

Yes, and it’s a common tweak. You can change the HubSpot webhook subscription from company.propertyChange on domain to a create event, or trigger on different properties (like VAT, website, or a custom “enrich now” checkbox). Most teams also customize which Bedrijfsdata attributes write back, by editing the field mapping in the “Modify HubSpot Company” update step.

Why is my HubSpot connection failing in this workflow?

Usually it’s expired OAuth credentials or missing company scopes on your HubSpot private app. Reconnect the HubSpot credential in n8n, then re-check the app permissions and webhook delivery logs in HubSpot. If failures happen only on busy days, rate limiting can also show up, so throttling executions or batching updates can help.

How many company records can this HubSpot enrichment automation handle?

It can handle thousands of company updates per month, as long as your n8n plan and Bedrijfsdata credits cover the volume.

Is this HubSpot enrichment automation better than using Zapier or Make?

Often, yes. This workflow uses branching logic (sample mode checks, payload verification, error routes, and match fallback) that’s clumsy and expensive in many no-code tools once you go past a simple two-step Zap. n8n also gives you the option to self-host, which is handy when you have lots of HubSpot property changes and don’t want to pay per tiny execution. Another practical difference is control: you can normalize fields with code so HubSpot stays consistent, not “whatever the last lookup returned.” Zapier or Make can still be fine for very small setups, but this workflow is built for real CRM hygiene. If you want help deciding, Talk to an automation expert.

Clean company data changes everything downstream, from targeting to reporting to how confident your team feels in the CRM. Set this up once, and let Bedrijfsdata.nl keep HubSpot honest.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal