Verify new HubSpot companies against official business registers

Every new company record gets checked against the official register in its own country, with the registration details written straight onto the record.

Agentic Task
OpenCorporatesHubSpotSlackSalesOperationsLead EnrichmentData Sync
PromptCreate

When a new company record is created in HubSpot, I want this workflow to verify it against official company registers and enrich the record automatically. Trigger it on a HubSpot webhook for company creation.

Start by reading the new record with HubSpot Get Company, so you have the company name, country, domain and any address already on file. If the company already has a registration number filled in, stop there and do nothing, because it has been verified before.

Resolve the country field into a jurisdiction code using OpenCorporates Match Jurisdiction. If the country is empty or does not resolve to a jurisdiction, carry on without a jurisdiction filter, but treat every candidate as lower confidence because you cannot narrow by country.

Then run OpenCorporates Search Companies on the company name, scoped to the resolved jurisdiction when you have one. Do not take the first hit. Score the candidates by weighing three things: how well the legal name matches the HubSpot name once you normalise suffix noise (Ltd, Limited, LLC, Inc, GmbH, SARL, Pty and so on), how well the registered address lines up with the address on the HubSpot record, and the current registry status, preferring active entities. Legal names and trading names often differ, and the same name can exist in several jurisdictions at once, so treat a name-only match as weak evidence on its own.

Treat a match as confident only when the normalised legal name matches and at least one other signal agrees, either the jurisdiction matching the resolved country or the registered address matching what is on the record. If two or more candidates score closely against each other, call it ambiguous rather than picking a winner.

On a confident match, pull the full record with OpenCorporates Get Company using the jurisdiction code and company number, then use OpenCorporates Search Officers to capture the current directors, ignoring officers who have already resigned. Write the results back onto the record with HubSpot Update Company: the company number, jurisdiction, incorporation date, registry status, and the top officers as a short list of names with their positions.

If no confident match is found, or the best match is dissolved, inactive or otherwise not in good standing, do not write anything to HubSpot. Instead post a Slack message to the revenue operations channel with the HubSpot company name and a link to the record, plus the top candidate matches, each showing its legal name, jurisdiction, company number, incorporation date, registry status and OpenCorporates link, so a person can resolve it. State plainly why the automatic match was rejected, whether that was ambiguity, a weak name match or a dissolved entity. Never silently write a low confidence match into the CRM.

OpenCorporates is read-only, so it is purely the enrichment source here and never a write target. Its free tier is roughly 200 requests a month and 50 a day, so keep this to genuinely new records and stay within a handful of lookups per company.

What does this prompt do?

  • Works out which country's register to search from the country on the record, then finds the matching entity by weighing legal name, registered address and status rather than grabbing the first result
  • Writes the registration number, home jurisdiction, incorporation date and current registry status back onto the HubSpot company record
  • Adds the current directors, so your team knows who actually has authority to sign
  • When there is no confident match, or the company turns out to be dissolved, it posts the shortlist to your revenue operations Slack channel instead of writing anything into the CRM

What do I need to use this?

  • A HubSpot account where you can create and edit company records
  • An OpenCorporates account with API access (the free tier is enough for modest volumes)
  • A Slack workspace and a channel for revenue operations to review unclear matches
  • A few custom fields on your HubSpot company records to hold the registration number, jurisdiction, incorporation date, registry status and directors

How can I customize it?

  • Change which Slack channel gets the review requests, or route them to the record owner instead of a shared channel
  • Loosen or tighten how sure the check has to be before it writes anything to the CRM
  • Change which details get written back, for example adding the registered address or the company type

FAQs

Will this overwrite details our team entered by hand?
It only writes to the record when it is confident in the match. Anything unclear goes to Slack for a person to decide. You can also tell it to skip any company that already has a registration number filled in, so hand-entered data stays untouched.
Which countries does this cover?
OpenCorporates draws on official company registers in more than 145 jurisdictions, including all 50 US states, so this works for international customer bases rather than just one country. How much detail is available does vary by register.
What happens if two companies have the same name?
That is exactly the case this is built for. It compares the registered address, the country on your record and the current status to separate them, and if it still cannot tell them apart it posts both candidates to Slack rather than guessing.
Do we need a paid OpenCorporates plan?
The free tier is roughly 200 lookups a month and 50 a day. Each new company uses a small handful, so a few hundred new records a month is fine. Higher volumes need a paid plan.
Will this work on HubSpot Free?
Yes, as long as you can add a few custom company fields to hold the registry details. HubSpot's free plan allows a limited number of custom properties, which is usually enough for what this writes back.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
Slack Bot
Agentic Task

Stop retyping company registration details.

Let every new CRM record arrive already checked against the official register, with a human review step for the ones that are not clear cut.