n8n 客戶資料整合 客戶資料同步 n8n crm 資料去重 中小企業自動化

N8N 客戶資料去重實戰:表單、Email、CRM 同步時怎麼避免重複聯絡人

做 n8n 客戶資料整合時,最常炸掉的不是串接本身,而是重複聯絡人越積越多。這篇聚焦去重設計,拆解 email、電話、公司名比對順序、人工覆核節點與 N8N 工作流寫法,幫你把同步做得穩。

N8NMarket 2026年4月30日

N8N 客戶資料整合最容易失控的地方,不是接不到表單或 CRM,而是沒先寫好去重規則,結果同一位客戶在系統裡長成三筆資料。

有個做 B2B 軟體服務的團隊,官網名單、客服信箱、HubSpot 三邊都在收客戶資料。三個月後他們發現,同一家公司同一窗口,CRM 裡居然有 4 筆聯絡人,業務還各自跟進過一次。這種錯不是因為 N8N 不夠強,而是因為流程少了「先比對,再寫入」。

這篇是前一篇 Pillar〈中小企業客戶資料整合攻略:用 N8N 串起表單、Email、CRM 成單一資料源〉的延伸。我們只談一件事:當表單、Email、CRM 同步時,怎麼用 N8N 把重複聯絡人壓到最低。

為什麼去重比串接更重要

串接接通,只代表資料會流動。去重做不好,代表錯誤會自動放大。

常見後果有 4 個:

  • 同一名客戶收到兩次開發信
  • 業務重複建立 deal
  • 客服看不到完整互動紀錄
  • 報表裡的名單數看起來漂亮,實際轉換率被灌水

所以 客戶資料同步 的第一原則不是快,而是準。

先定義什麼叫「同一位客戶」

很多團隊卡住,是因為大家心中的同一位客戶其實不一樣。

B2C 常見判斷

  • Email 相同
  • 手機相同
  • 會員 ID 相同

B2B 常見判斷

  • 聯絡人 Email 相同
  • 公司網域相同
  • 公司名稱近似
  • 聯絡人姓名加公司名稱相同

你不一定要一次做到模糊比對,但至少要先決定主規則和備援規則。

建議順序如下:

  1. email
  2. phone
  3. crm_contact_id 或內部 customer_id
  4. company_domain
  5. company_name + contact_name

這個順序不是絕對,但很適合中小企業起步。核心原則是:越穩定、越不容易人工輸錯的欄位,優先級越高。

N8N 去重工作流,建議拆成 4 段

第 1 段:標準化輸入

去重前先清洗,不然比對沒意義。

你至少要做這幾件事:

  • Email 轉小寫
  • 電話去空格、括號、破折號
  • 公司名稱去除「股份有限公司」「有限公司」等尾字
  • 姓名去前後空白
  • 空值轉成 null

如果你用 Set node 就能處理大部分欄位,真的複雜才進 Code node。很多人一開始就寫程式,反而把流程弄得不好維護。

第 2 段:建立匹配分數

單純 IF email exists 很容易不夠用。實務上比較穩的是做一層分數制。

例如:

  • email 完全相同:100 分
  • phone 完全相同:70 分
  • company domain 相同:40 分
  • company name 接近:20 分
  • contact name 相同:20 分

分數規則可以設成:

  • 100 分以上:直接視為同一人
  • 70 到 99 分:送人工覆核
  • 70 分以下:建立新聯絡人

這種方式的好處是,你不用一開始就追求非常複雜的 fuzzy match,也能先擋住大部分重複資料。

第 3 段:分流處理

有了分數後,N8N 就很好拆分支。

明確命中

若 email 或內部 ID 命中,直接更新既有聯絡人,但只更新允許覆蓋的欄位,例如電話、職稱、最新互動時間。

模糊命中

如果只命中公司名或電話,不要直接寫回。建議:

  • 建一筆待審核紀錄
  • 通知 Slack 或寄信給營運
  • 附上原始 payload 與候選聯絡人

未命中

沒有相似對象時,再新增聯絡人。這樣你的新增才不會把垃圾資料直接灌進 CRM。

這類「先查、再決定 create or update」的做法,在 n8n Community 也常見,尤其是 CRM 與資料庫同步的案例:https://community.n8n.io/t/gohighlevel-to-nocodb-sync-in-n8n-create-or-update-contacts-and-companies-automatically/281332

第 4 段:保留審計線索

這一步很多人直接省掉,後面就開始難查。

建議每次同步都至少存:

  • source_system
  • received_at
  • match_rule
  • matched_record_id
  • raw_payload
  • sync_result

這些欄位不是拿來看爽的,是之後出現「為什麼這筆被蓋掉」時,你唯一能回頭查的依據。

一條可直接照抄的去重判斷邏輯

下面是一個很實用的判斷框架,適合官網表單加 CRM 的組合。

步驟 1:收表單

表單可用 webhook 或 n8n Form Trigger。官方文件對公開表單與 production URL 的行為有清楚說明:https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.formtrigger/

步驟 2:清洗欄位

輸出統一物件:

{
  "email": "[email protected]",
  "phone": "+886912345678",
  "name": "王小明",
  "company": "Acme",
  "source": "lead_form"
}

步驟 3:查 CRM

依序查:

  1. email
  2. phone
  3. company + name

如果 CRM node 沒有現成查詢條件,就改用 HTTP Request。n8n 官方也明確把 HTTP Request 視為補足整合缺口的主要做法之一:https://docs.n8n.io/integrations/

步驟 4:計分

把每個查到的候選記錄丟進同一個 Code node 做分數計算。

步驟 5:分支

  • 高分:更新
  • 中分:送審
  • 低分:新增

步驟 6:寫 log

不管結果是什麼,都記錄一筆同步日志。

什麼欄位可以自動覆蓋,什麼不行

去重不只是「是不是同一人」,還有「這個欄位能不能被蓋掉」。

建議可自動覆蓋的欄位

  • 最近互動時間
  • 表單來源
  • 行銷追蹤參數
  • 備註型欄位

建議保守處理的欄位

  • 客戶等級
  • 負責業務
  • 報價狀態
  • 公司統編
  • 付款資訊

如果這些敏感欄位被錯蓋,損失通常比多一筆重複資料還大。

Email 來源特別容易出錯,怎麼補

Email 的問題不是抓不到,而是半結構文字很多。

例如客戶可能這樣回:

我們公司改名了,電話也換成 02-1234-5678,之後請直接找採購 Abby。

這時你可以用 LLM 先抽出結構化欄位,但一定要遵守兩個原則:

  1. 模型只負責提取,不負責決定覆蓋
  2. 輸出必須有固定 schema

如果你要讓模型輸出更穩,Anthropic 文件建議把指令與輸出格式明確分段,必要時用 XML tags 提高可解析性:https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/use-xml-tags

想把這種 AI 補欄位做進更大流程,可以搭配看這兩篇:n8n-ai-agent-complete-guide-2026n8n-ai-agent-workflow-patterns

初次同步和日常同步,要分開設計

這也是很多團隊會踩的坑。

初次同步

特徵是量大、髒資料多、歷史欄位不一致。這時候不要邊跑邊寫正式 CRM,建議先:

  • 批次拉資料
  • 建 staging table
  • 跑去重規則
  • 人工抽查
  • 確認後再正式寫入

Community 裡也有人直接問過這類初次同步怎麼做,重點就是先處理分頁、陣列拆 item,再決定 upsert,不要把初始化跟日常增量同步混在一起:https://community.n8n.io/t/how-to-implement-an-initial-sync-of-customer-data/159157

日常同步

日常同步通常是事件驅動,量小但要求快。這時就適合 webhook 加即時查重。

什麼時候需要人工覆核節點

不是所有流程都該全自動。遇到下面情況,我會直接加人工節點:

  • 候選紀錄超過 1 筆
  • 公司名相似但 email 不同
  • 高價值客戶
  • 涉及業務歸屬變更
  • 欄位更新衝突

人工覆核不是效率倒退,而是把風險壓在少數高成本案例,不要讓整個 CRM 被錯資料污染。

實作順序建議

如果你現在要開始做這條 n8n 客戶資料整合 去重流程,建議順序很簡單:

  1. 先定義主鍵與欄位 schema
  2. 清洗輸入格式
  3. 做 email 與 phone 的硬匹配
  4. 加上模糊分數與人工覆核
  5. 最後才擴到 Email 文字提取與 AI 補欄位

不要反過來。先把判斷邏輯站穩,再把自動化加深。

結論

n8n crm 整合時,去重其實就是你的資料品質防線。規則寫得清楚,CRM 才能越用越乾淨;規則寫得含糊,自動化只會讓錯誤長得更快。

對中小企業最實用的做法,不是追求百分之百完美匹配,而是先把 80% 高機率重複擋住,再把剩下 20% 高風險案例送人工。這樣你才能在速度和準確度之間拿到真正可用的平衡。

如果你想直接用模板起步,可到 https://n8nstart.cc/templates 找現成工作流;想看更多 N8N 實戰文章,也可以從 https://n8nstart.cc/ 繼續延伸。

FAQ

客戶資料同步時,去重一定要用模糊比對嗎?

不一定。起步時先用 email、phone、內部 ID 這種硬匹配就很夠用。等資料量變大、B2B 場景更複雜,再補公司名或聯絡人名稱的模糊比對。

表單和 CRM 同步時,什麼情況不該自動更新?

當候選記錄不只一筆,或涉及業務歸屬、客戶等級、付款資訊等敏感欄位時,不建議自動覆蓋,應該進人工覆核。

初次匯入舊客戶名單,可以直接接 CRM 嗎?

不建議。先進 staging table 跑去重與抽查,再正式寫入 CRM,風險會低很多。

Email 內容抽欄位後,可以直接回寫主資料嗎?

最好不要直接回寫。建議先做 schema 驗證與欄位權限判斷,再決定哪些資料能覆蓋,哪些只當建議值。