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.
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?
Which countries does this cover?
What happens if two companies have the same name?
Do we need a paid OpenCorporates plan?
Will this work on HubSpot Free?
Related templates
When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.
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.
Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.
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.
Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.
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.
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.