企業データの名寄せとは、CRM・SFA上で重複・表記揺れが生じている企業レコードを「正規化→突合→統合」の3ステップで一本化し、営業・マーケティング・与信管理の精度を高めるデータ整備プロセスです。法人番号APIやAIを組み合わせることで、手作業に頼らない継続的な品質維持が可能になります。
企業データの名寄せとは、CRM・SFA上で重複・表記揺れが生じている企業レコードを「正規化→突合→統合」の3ステップで一本化し、営業・マーケティング・与信管理の精度を高めるデータ整備プロセスです。法人番号APIやAIを組み合わせることで、手作業に頼らない継続的な品質維持が可能になります。
ブログ目次
HubSpot導入、AI活用、CRM整備、業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。
企業データの名寄せとは、CRM・SFA上で重複・表記揺れが生じている企業レコードを「正規化→突合→統合」の3ステップで一本化し、営業・マーケティング・与信管理の精度を高めるデータ整備プロセスです。法人番号APIやAIを組み合わせることで、手作業に頼らない継続的な品質維持が可能になります。
「HubSpotに同じ会社のレコードが2つある」「株式会社とKKで別管理になっている」「住所の丁目・番地がバラバラで名寄せできない」——CRMを使っているほぼすべての企業が、ある段階でこの問題に直面します。
データが汚いままではCRMは機能しません。どれだけ優れたAI機能を載せても、重複した企業データの上に構築されたレポートは信頼できないし、営業が「この会社、担当者が2人いる?」と首をひねる状況が続きます。本記事では、企業データの名寄せを実務レベルで進めるための手順を、法人番号APIの活用・住所正規化・AI活用・HubSpot実装まで一気通貫で解説します。
CRMの企業データ品質に課題を感じている営業企画・データ担当・CRM管理者に向けた記事です。
企業データが重複・表記揺れを起こす原因は主に3つです。
CRM上の企業レコードが重複すると、営業は「どちらのレコードに商談を登録すればいいか」迷い始めます。マーケティングは同じ会社に2通のメールを送ります。与信担当は過去取引の全額を把握できません。問題は1箇所にとどまらず、プロセス全体に波及します。
多くの企業は「データ整備はいつかやる」と先送りにします。しかし、レコードが増えるほど重複の解消コストは増大します。1,000件のうち10%が重複しているなら、3,000件になったときには整理すべきレコードが300件ではなく、新規追加分にも重複が積み上がり複利的に増えます。
名寄せは3つのフェーズで構成されます。この順序を守ることが重要です。
| フェーズ | 目的 | 主なアクション |
|---|---|---|
| 正規化 | 表記をルールに従い統一する | 法人格の統一、全角→半角変換、スペース除去、略称展開 |
| 突合 | キーを使って「同一企業か」を判定する | 法人番号・ドメイン・電話番号・住所の照合 |
| 統合 | マスターレコードを選定し、サブを統合する | 代表レコードの選定基準・統合後のデータ引き継ぎ |
もっとも頻発するのが法人格の表記ゆれです。以下のパターンをルールとして持ち、変換します。
| 表記パターン | 正規化後 |
|---|---|
| (株) / ㈱ / KK | 株式会社 |
| (有) / ㈲ | 有限会社 |
| (株) / (有) ※全角括弧 | 株式会社 / 有限会社 |
| 法人格の前置き(「株式会社ABC」→末尾「ABC株式会社」) | 統一ルールを決め揃える |
正規化の実装は、Pythonなら以下のような辞書マッピングで対応できます。
replacements = {
r'\(株\)': '株式会社',
r'(株)': '株式会社',
r'㈱': '株式会社',
r'\(有\)': '有限会社',
r'(有)': '有限会社',
r'㈲': '有限会社',
}
import re
def normalize_corp_type(name: str) -> str:
for pattern, replacement in replacements.items():
name = re.sub(pattern, replacement, name)
return name.strip()
法人格以外にも、英字・数字・記号の全角/半角ゆれが発生します。Pythonのunicodedata.normalize('NFKC', text)で全角英数字を半角に変換し、スペース(全角・半角・複数連続)を除去するだけで、マッチ率は大幅に向上します。
import unicodedata
def normalize_text(text: str) -> str:
# 全角→半角変換
text = unicodedata.normalize('NFKC', text)
# スペース除去・トリム
text = re.sub(r'\s+', '', text).strip()
return text
正規化済みの企業名だけで突合すると、同名異社の誤マッチングが生じます。複数のキーを組み合わせて確度を上げることが重要です。
| キー | 精度 | 注意点 |
|---|---|---|
| 法人番号 | ★★★★★ | 変更なし。最も信頼性が高い |
| ドメイン | ★★★★ | 複数ドメイン保有企業に注意 |
| 電話番号 | ★★★ | 代表番号が変わる場合あり |
| 住所(正規化後) | ★★★ | 支社・本社の違いに注意 |
| 正規化後の法人名 | ★★ | 同名異社が存在するため単独使用は危険 |
法人番号が一致すれば、それだけで同一企業と確定できます。まず法人番号でマッチングし、未付与・不明なレコードに対してはドメインや電話番号で補完するというアプローチが実務的です。
国税庁が提供する「法人番号システム Web-API」は無料で利用でき、法人名・住所の正規化にも使えます。
エンドポイント(差分更新型検索):
https://api.houjin-bangou.nta.go.jp/4/name?name={社名}&type=12&mode=1&target=1&appId={アプリID}
取得できる主なフィールド:
corporateNumber: 13桁の法人番号name: 正規法人名(国税庁基準)prefectureName / cityName / streetNumber: 住所の正規化された各要素closeDate: 解散・廃業日(生存確認に使える)CRM上の社名で法人番号APIを叩き、法人番号・正規名・正規住所を取得してCRMにマッピングするだけで、突合キーの品質が格段に上がります。
また、gBizINFO(経済産業省)も活用できます。従業員数・業種コード・資本金などを無料で取得でき、CRMの不足項目補完にも使えます。
住所は「東京都中央区銀座一丁目」と「東京都中央区銀座1-」のように表記が多様です。直接文字列比較すると全くマッチしません。
住所正規化の手順:
Pythonライブラリ「jusho」「normalize-japanese-addresses」を使うと、これらの処理を効率化できます。
突合で「これは同一企業」と判定されたレコード群から、1つを「マスター」として残し、他を統合します。マスター選定の基準は以下を推奨します。
| 優先度 | 基準 | 理由 |
|---|---|---|
| 1位 | 最も古い作成日のレコード | 最初に登録されたレコードは関連データが多い可能性 |
| 2位 | 取引(Deal)が紐づいているレコード | 商談データの損失を防ぐ |
| 3位 | 入力項目が最も充実しているレコード | データ品質が高い |
| 4位 | 法人番号が登録されているレコード | 正確性が高い |
マスターレコードに統合する際は、サブレコードの関連データ(コンタクト・商談・活動ログ・チケット)をすべきマスターへ再紐づけします。HubSpotでは「会社レコードのマージ」機能がこの処理を行います。
マージ前に必ず確認すべきこと:
法人番号・ドメインなどの確定キーがなく、正規化後の法人名だけで判定しなければならないケースがあります。「株式会社エービーシー」と「ABC株式会社」のような表記差異は、文字列の編集距離(Levenshtein距離)では正しく判定できません。
こうした曖昧マッチングに、LLMが有効です。
import anthropic
client = anthropic.Anthropic()
def check_same_company(name_a: str, name_b: str) -> dict:
prompt = f"""
以下の2つの法人名が同一企業を指しているか判定してください。
法人名A: {name_a}
法人名B: {name_b}
以下のJSON形式で回答してください:
"""
message = client.messages.create(
model="claude-opus-4-5",
max_tokens=256,
messages=[{"role": "user", "content": prompt}]
)
import json
return json.loads(message.content[0].text)
ただし、LLMによるマッチングは処理コストがかかります。法人番号・ドメインで確定できなかった残件に絞って使うのが実践的です。大量処理が必要な場合はBatch APIを使うとコストを50%削減できます。
CRMに「業種」「従業員数」「売上規模」が未入力のレコードが多い場合、gBizINFOや法人番号APIで取得できる情報と、LLMを組み合わせた補完が有効です。
企業名・ドメイン・住所などの既存情報を入力として、LLMに「業種カテゴリ」「推定規模」を推定させ、CRMの対応プロパティに書き込む運用が実装できます。これにより、リードスコアリング・セグメント配信の精度が向上します。
HubSpotには「類似企業の検出」機能が標準搭載されており、会社名・ドメインが類似するレコードを自動的にサジェストします。
HubSpotの重複検出は手動確認ベースです。月次でレビューする運用フローを設計するのが現実的です。
名寄せを継続的に運用するため、以下のカスタムプロパティを会社オブジェクトに追加することを推奨します。
| プロパティ名 | 型 | 用途 |
|---|---|---|
corporate_number |
テキスト(13桁) | 法人番号。突合キーの最上位 |
normalized_name |
テキスト | 正規化済み法人名(検索・マッチング用) |
data_source |
選択肢 | 登録経路(展示会/問い合わせ/手動/API取込) |
dedup_status |
選択肢 | 名寄せ状態(未確認/確認済み/マスター/統合済み) |
master_company_id |
テキスト | 統合先マスターレコードのID |
last_dedup_date |
日付 | 最終名寄せ確認日 |
初期の名寄せ後も、新規レコードが追加されるたびに重複が生まれます。HubSpotのワークフロー(Automation)で以下のフローを設計すると、継続的な品質維持が可能です。
ワークフローの詳細な設計については「CRMデータクレンジングの設計と運用」も参考にしてください。なお、HubSpotのData Hubを活用したデータ同期・自動化の全体設計については「HubSpot Data Hubの活用設計」もあわせてご覧ください。
データ整備を「いつか全社プロジェクトでやる」と考えていると、永遠に着手できません。以下のフェーズで段階的に進めることを推奨します。
| フェーズ | 期間 | 対象・アクション |
|---|---|---|
| 0. 現状把握 | 1〜2週間 | 重複レコード数・未入力率を把握。CRMの全会社レコード数と重複候補数を確認 |
| 1. ルール整備 | 2〜4週間 | 法人格・全角半角の正規化ルールをドキュメント化。新規入力フォームにバリデーション追加 |
| 2. キーレコード | 1〜2か月 | 取引金額上位・アクティブな顧客から優先的に法人番号を登録。既存重複をマージ |
| 3. 自動化 | 2〜3か月 | 法人番号API連携スクリプトの実装。新規レコード追加時の自動正規化ワークフロー構築 |
| 4. AI拡張 | 継続 | 残件の曖昧マッチングにLLMを活用。不足項目をgBizINFOで補完 |
今日から始めるなら、まずHubSpotの「重複の管理」画面を開いて、件数を確認することです。おそらく予想以上の重複が表示されます。そこから優先度の高いレコードを手動でマージするだけでも、CRMの信頼性は大きく改善します。
企業データの名寄せは、一度やれば終わりではなく、継続的なデータガバナンスの一部です。本記事で解説した内容を振り返ります。
unicodedata.normalizeで大半の揺れを吸収できる関連記事として、CRMデータクレンジングの全体像は「CRMのデータクレンジング実践ガイド」と「CRMデータクレンジングの設計と運用」、AI CRMの導入全体像は「AI CRM導入ロードマップ」をあわせて参照してください。
Q1. 法人番号がないレコード(海外企業・個人事業主など)はどう扱うべきですか?
法人番号は日本の法人に対して付与されるものです。海外企業の場合は「企業ドメイン」を代替キーとして使うのが実用的です。個人事業主は会社オブジェクトではなくコンタクトオブジェクトで管理する設計に切り替えると、名寄せの混乱が減ります。
Q2. 既存の重複レコードが多すぎて、どこから着手すべきかわかりません。
「直近6か月にアクティビティ(商談・メール・ミーティング)があった会社」に絞ると、優先度が明確になります。その範囲から始めて、半年ごとに対象を広げていくスモールスタートが現実的です。全件一括でやろうとすると動けなくなります。
Q3. HubSpotの自動マージ機能はありますか?確認なしに統合されると困ります。
HubSpotの標準機能では、重複の「提案」は自動ですが「マージ実行」は手動確認が必要です。誤マージのリスクを防ぐ設計になっています。API経由で自動マージを実装することは技術的に可能ですが、確認フローを必ず組み込むことを強く推奨します。
Q4. 名寄せの精度はどのくらいを目標にすべきですか?
100%の精度を追うよりも、「誤マージ0件」を優先してください。誤って2社を1社にまとめてしまうと、別途アンマージが必要になり作業コストが増大します。判定確度が80%未満のものは「要確認」フラグを立て、人間がレビューする仕組みにするのが実務的です。
Q5. 名寄せ後、データ品質を継続的に維持するにはどうすればよいですか?
2つの施策が有効です。①入力時の予防策(フォームバリデーション、法人番号の必須化、ドメインの自動入力)と、②月次の定期チェック(HubSpotの重複管理画面レビュー、新規レコードの法人番号未入力率モニタリング)です。予防と検出の両輪で運用することで、重複の累積を防げます。
Q6. Claude CodeやPythonで名寄せを自動化する場合、コストはどのくらいかかりますか?
法人番号APIとgBizINFOはどちらも無料です。LLMを使った曖昧マッチングのコストは、Anthropic Claude APIのBatch APIを使えば通常の50%に抑えられます。1,000件の曖昧マッチング処理であれば数百円程度が目安です。大量処理はBatch APIを使い、通常APIは少量の即時処理に限定するのがコスト管理のポイントです。
StartLinkは、HubSpot認定パートナーとして、CRMデータの名寄せ設計から自動化実装まで支援しています。「どこから手をつければよいかわからない」「既存の重複がひどくて自社では対応できない」という場合は、まず現状のデータ品質診断からご相談ください。スモールスタートで着実に成果を出す設計を、データの実態に合わせてご提案します。
詳しくはStartLinkのHubSpot CRM導入・活用支援サービスをご覧ください。
株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。
株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。