你在一家做商用空調保養的公司管官網和行銷(這家公司是我們舉的例子),公司大約 20 個人。官網上有一張詢價表單,客人送出後,系統會寄一封信到公用信箱。業務每天早上,再一筆一筆抄進客戶管理系統(CRM)。上個月有兩筆詢價被漏抄了,其中一筆客人等了五天,最後找了別家。
你想讓表單一送出,就自動寫進 CRM、同時通知負責的業務。外包工程師聽完只問了一句:「你們那套 CRM 有沒有開 API?」你說會去問,但其實不太確定 API 是什麼,也不知道該怎麼問廠商。
下面就跟著我們官網 ethorx.com 正在用的詢價表單走一次,看 API 在中間做了什麼,再整理你要問 CRM 廠商的問題。
API 是什麼?
API 是一套系統對外開放、規定好格式的窗口。別的程式照它規定的格式送出要求,它就照規定回資料,或者去做一件事。API 是 Application Programming Interface 的縮寫,中文叫應用程式介面。
MDN 的網頁技術文件把 API 定義為軟體提供給其他程式互動用的功能和規則。它也可以看成提供它的程式,和其他軟硬體之間的一份「合約」。MDN:API
業務打開 CRM 點「新增聯絡人」,是人在用畫面。你們官網的表單程式要自己把一筆詢價放進 CRM,就得透過 CRM 的 API。
可以把 API 想成銀行的臨櫃窗口。
- 櫃台只辦牌子上列出的業務:API 也只開放它列出來的功能。每一項功能有自己的網址,叫端點(endpoint)。
- 要填固定格式的單子:匯款單的欄位是固定的,API 也規定好要送哪些欄位、叫什麼名字。
- 要出示印章或證件:很多 API 要你帶一把 API key(API 金鑰)或登入後拿到的授權碼,證明是誰在辦。
- 辦完拿收據,填錯就退件:API 收到要求後,會回一個結果和一個狀態碼,告訴你成功了還是哪裡錯。
- 你看不到後面的金庫:系統裡面怎麼存、怎麼算,你不用知道,也看不到。
比喻對不上的地方有三處。行員看你填錯會幫忙改,API 不會:有些直接退件,有些會略過它不認得的欄位,照樣回成功,那一欄就空著。櫃台一次辦一個人,API 一秒可以處理很多件。另外,印章不見了你會發現,API key 被人複製了,你卻不一定知道。
API 只做它開放的事,而且一定要照它的格式來。工程師問「有沒有開 API」,就是在問那套 CRM 有沒有開這樣一個窗口,讓別的程式照規定把資料放進去、拿出來。
一張詢價表單送出後,API 做了哪些事?
我們官網的詢價表單送出後,會先後經過兩個 API。客人按下送出之後,資料是這樣走的:
- 瀏覽器把表單送到我們自己的 API:你填的姓名、Email、公司和需求,會被打包成固定的格式。這包資料會送到 ethorx.com 上一個專門收詢價的網址,也就是端點。
- API 先檢查格式:它會看必填欄位有沒有填、Email 格式對不對、每一欄有沒有超過長度。不合格就直接退回,附上「格式錯誤」的狀態碼。
- 存進資料庫:檢查通過的詢價先存進資料庫。即使後面寄信失敗,這筆詢價也不會不見。
- 呼叫寄信服務的 API:我們的伺服器(網站背後負責處理資料的電腦)帶著一把 API key,去呼叫一家寄信服務。對方照固定格式收下後,寄一封通知信到公司信箱。
- 回覆瀏覽器:我們的 API 回一個「已建立」的狀態碼,頁面顯示送出成功。
一筆詢價會先後經過兩個 API:我們自己的詢價 API,以及寄信服務的 API。金鑰只放在伺服器上,客人的瀏覽器拿不到。
我們的 API 收到詢價後,自己又去叫了別家的 API。API 常常像這樣一個接一個,你之後要讓表單寫進 CRM,也只是在這條路線上多加一站。
中間任何一站都可能失敗,所以我們故意先存資料庫、再寄信。兩種失敗的結果不一樣:
- 如果只是寄信失敗:客人照樣看到送出成功,詢價也在資料庫裡。只是沒人收到通知信。程式會把這筆標成「通知沒寄出」,並在伺服器留一筆錯誤紀錄,但要有人去看才會發現。
- 如果連資料庫都存不進去,信也沒寄出:API 回錯誤碼,頁面請客人稍後再試。
你們現在漏抄,就是卡在「信寄到了,但沒人接手」這一步。要接 CRM,就是在表單送出時,由表單程式再呼叫一次 CRM 的 API,把同一筆資料寫進去,同時通知負責的業務。寫入失敗時要通知誰,也要在這時一起講好。
如果你們的表單是用現成的表單工具做的,通常不用自己寫程式。可以讓表單工具在有人送出時,把資料送到 n8n、Zapier 這類自動化平台,再由平台去呼叫 CRM 的 API。這種「有事就主動把資料送過來」的做法叫 webhook,後面會再講。
串接前要問廠商哪些 API 問題?
「有 API」只是第一題,還要問清楚能讀寫哪些資料、怎麼驗證、怎麼收費、有沒有 webhook。下面這張表,你可以直接寄給 CRM 廠商。
| 要問的問題 | 為什麼要問 | 聽到這種答案要小心 |
|---|---|---|
| 有沒有 API?說明文件在哪裡? | 沒有文件,工程師只能用猜的 | 「有,但文件要簽約後才給」 |
| 哪些資料能讀、哪些能新增或修改? | 你要的是「新增聯絡人」和「新增一筆詢價」 | 「API 只能匯出資料,不能寫入」 |
| n8n、Zapier 這類自動化平台,有沒有現成的串接步驟? | 有的話,不寫程式也能接 | 「沒有,要自己請工程師寫」 |
| 用什麼方式驗證?能不能限制 key 的權限? | 決定 key 外洩時,最壞會出什麼事 | 「一把 key 就能動全部資料」 |
| 每天或每分鐘最多呼叫幾次?要另外收費嗎? | 有些方案的 API 要升級才有,或按次計費 | 「API 要升級到企業方案」 |
| 有沒有 webhook(有事時主動通知你)?哪些事件會通知? | 決定「改狀態後自動追蹤」做不做得到 | 「沒有,要你每隔幾分鐘來問一次」 |
| 有沒有測試環境? | 測試時不會把假資料寫進正式客戶名單 | 「直接用正式資料測就好」 |
最常被跳過的是第二題。有些系統的 API 只開放把資料拿出來,不開放寫進去。這種情況下,「表單自動寫進 CRM」就做不到。
收費那題也要問到細。按次計費的 API,每呼叫一次就扣一次額度。你要問清楚:表單每送一筆,是算 1 次,還是「新增聯絡人」加「新增詢價」算 2 次?每個月上限多少?超過了是停用還是加價?
API 回的狀態碼是什麼意思?
狀態碼是 API 每次回應時附上的三位數字,屬於網頁和 API 共用的 HTTP 規則。先看第一位數字就知道大方向:從你這邊看,2 開頭是成功,4 開頭是你送錯了,5 開頭是對方系統出問題。MDN:HTTP 回應狀態碼
| 狀態碼 | 意思 | 表單寫進 CRM 時,你會在什麼情況看到 |
|---|---|---|
| 200 | 成功 | 查詢或更新一筆聯絡人成功 |
| 201 | 成功,而且建立了一筆新資料 | CRM 多了一筆聯絡人 |
| 202 | 收到了,但還沒處理完 | 對方排隊處理,例如一次匯入很多筆 |
| 400 | 你送的格式不對 | 電話欄格式不符,或必填欄位沒填 |
| 401/403 | 沒有驗證身分/沒有權限 | API key 被停用,或這把 key 沒開「新增聯絡人」的權限 |
| 429 | 短時間內送太多次 | 一次把上千筆舊資料灌進去,超過對方的次數上限 |
| 500/502/503 | 對方系統出錯 | CRM 那邊當機或維護中 |
我們官網的詢價表單也是這樣回的:送出成功回 201,少填欄位回 400。
串好 CRM 之後,如果業務說「今天怎麼沒收到通知」,工程師第一個會看的就是狀態碼。看到 400,代表表單送過去的格式和 CRM 要的不一樣。看到 401 或 403,代表 key 出了問題。看到 5 開頭,就要去問 CRM 廠商。
API key 是什麼?要怎麼保管?
API key 是證明「是誰在呼叫這個 API」的一串字,作用就像比喻裡的印章。誰拿到這把 key,誰就能用你的名義去辦事,費用也算在你頭上。
未設限的 API 金鑰被濫用時,產生的費用要由你負責,這是 Google Maps Platform 安全說明裡寫明的。它也建議把金鑰存在程式碼以外的地方,並且限制每把金鑰能用的範圍。Google Maps Platform:API 安全性最佳做法
回到我們的詢價表單。寄信服務的那把 key,只存在我們的伺服器上。客人在瀏覽器打開表單頁,看得到的只有「把表單送到 ethorx.com」這一步。他看不到寄信的 key,因為呼叫寄信服務的是伺服器,不是瀏覽器。你們要串的 CRM key 也一樣,只放在伺服器或自動化平台的設定裡。
- 不貼在 LINE、Email 或共用文件裡:要交給工程師時,用對方系統的權限設定,或公司指定的密碼管理工具。
- 一個用途一把 key:表單用一把、報表用一把。出事時,只要停掉那一把。
- 只開需要的權限:表單寫進 CRM,只需要「新增聯絡人」的權限,用不到「刪除客戶」。
- 有人離職或外包結案,就換一把:舊的那把,直接停用。
也有故意公開的 key。例如通知搜尋引擎網址更新的 IndexNow,會要你把一把 key 放在自己網站上,證明你管得到這個網站。它不綁任何付費服務,所以公開也沒關係。IndexNow:Documentation
判斷一把 key 要不要藏,就問:外洩了,別人能不能拿它花你的錢、讀或改你的客戶資料?能的話,就照上面四點保管。
webhook 是什麼?和 API 差在哪?
webhook 是對方系統在某件事發生時,主動把資料送到你指定網址的做法。方向和你去呼叫 API 剛好相反,你不用一直去問。
webhook 讓你在事件發生的當下收到資料。另一種做法是每隔一段時間就呼叫一次 API,確認有沒有新資料,這叫輪詢(polling)。GitHub 的文件提到,webhook 比輪詢省工,也比較不會用光 API 的次數上限。GitHub Docs:關於 Webhook
用銀行來比,輪詢像你每天打電話去問「我的帳戶有沒有入帳」。webhook 則像銀行的入帳簡訊,錢一進來,銀行就主動通知你。技術上,webhook 也是一次 HTTP 請求,只是由對方發給你。
你的 CRM 兩個方向都用得到:
- 表單寫進 CRM,用的是 API:客人送出表單後,你這邊主動去呼叫 CRM 的 API,新增一筆聯絡人。
- 業務改狀態後通知你,用的是 webhook:如果 CRM 支援 webhook,業務把詢價改成「已報價」時,CRM 會主動通知你。你的自動化流程收到後,再去寄追蹤信或更新報表。
n8n 的 Webhook 節點會產生一個專屬網址,其他服務在事件發生時把資料送進來,就會啟動後面的流程。實際怎麼做,可以看 n8n 教學。那篇用 webhook 收詢價表單的資料,一路做到依條件分流。
沒有 API 的系統怎麼辦?
可以改用定時匯出匯入檔案、Email 轉資料、RPA,或升級到有 API 的方案。這些做法都比 API 容易壞,要花更多力氣維護。
- 定時匯出、匯入檔案:CRM 能匯入 CSV(用逗號分隔欄位的表格檔)的話,就每天把表單資料整理成檔案匯入一次。缺點是會慢一天,欄位對不上時也要人處理。
- 用 Email 接:有些系統能把寄到特定信箱的信轉成一筆資料。缺點是信件格式一變,就可能抓錯欄位。
- RPA:讓程式模擬人在畫面上點按鈕、填欄位。它適合沒有 API 的舊系統,但對方畫面一改版,流程就要跟著改。雲端系統要先看使用條款允不允許這種自動操作。RPA 和 API 的分別,在 RPA 是什麼那篇有拿同一個對帳流程各做一次。一段工作該交給自動化流程、RPA 還是 AI agent,判斷方法在 AI agent 和聊天機器人、RPA、自動化流程差在哪。
- 問廠商有沒有付費方案:有些系統的 API 只在較高的方案才開放。算一下升級費和人工抄寫的時間,有時候升級反而划算。
如果你的 CRM 合約快到期,「有沒有 API、能不能寫入」可以直接列進下一次選系統的條件裡。
回到你的 CRM:接下來做什麼,之後看哪個數字?
先把上面那張問題清單寄給 CRM 廠商。如果答案是「有 API、能新增聯絡人、可以限制 key 的權限」,就請工程師動手。做法是表單送出時,多呼叫一次 CRM 的 API,同時通知負責的業務。
上線前,請工程師先用測試環境送幾筆假資料,確認欄位都寫對了。上線後的四週,每週一做兩件事:
- 比對筆數:官網表單這一週送出了幾筆,CRM 這一週自動新增了幾筆,業務又收到了幾則通知。
- 抽 3 筆看內容:打開 CRM,看電話和需求欄有沒有真的寫進去,不是空白。
筆數一樣、內容也對,代表沒有漏。對不上的話,就請工程師查那幾筆的狀態碼,看是格式錯、key 出問題,還是 CRM 那邊出錯。四週下來都對得上,再考慮下一步,例如用 webhook,讓業務改成「已報價」時,系統自動寄一封追蹤信。
之後如果要串的不只 CRM,還有 ERP(管進銷存和會計的系統)和 AI 工具,可以找人一起規劃。這類把公司內部軟體和資料串起來的工作,就是我們企業 AI 營運在做的事。
常見問題
API 串接一定要會寫程式嗎?
不一定。n8n、Zapier 這類自動化平台,已經把很多常見系統的 API 包成現成的步驟。你在畫面上選「表單送出時」「新增 CRM 聯絡人」,就能接起來。系統比較冷門、平台沒有現成步驟時,才需要工程師寫程式。兩個平台怎麼選,在 n8n 和 Zapier 差在哪。
API 和 AI、MCP 有什麼關係?
AI 工具要去公司系統裡做事,多半也是透過那些系統的 API。例如讓 AI 助理直接在 CRM 查客戶、建一筆詢價,底下呼叫的就是 CRM 的 API。
AI 模型本身也能透過 API 呼叫。例如在自己的程式裡用 GPT 或 Claude,就是呼叫 OpenAI 或 Anthropic 的 API,按用量計費。AI 能產生哪些內容、哪些要人確認,整理在生成式 AI 是什麼。
MCP(Model Context Protocol)是一套讓 AI 工具接上外部系統的共通規格。很多服務會用它,把自己的 API 開給 AI 用。它和直接串 API 怎麼選,整理在 MCP 是什麼。不管外面包了幾層,前面那張問題清單在接 AI 時一樣適用。
API 要錢嗎?
看提供的那一方怎麼定。有些 API 免費,但有次數上限。有些按呼叫次數或用量計費,例如 AI 模型的 API,多半按處理的文字量計費。也有些系統要升級方案才開放 API。申請前先看對方的價目表,並設好用量上限。
REST API 是什麼?
REST API 是現在網路服務很常見的一種 API 寫法。每一種資料有自己的網址,再用「讀取」「新增」「修改」「刪除」這幾種固定的動作去呼叫。例如對 CRM 的聯絡人網址送「新增」,就是建一筆聯絡人;對其中一筆的網址送「讀取」,就是查那個人的資料。資料多半用 JSON 傳,也就是一種用欄位名稱和值記錄資料的格式。
API key 不小心外洩了怎麼辦?
先到那個服務的後台把這把 key 停用,再產生一把新的,換到你的系統裡。接著看後台的用量紀錄,確認外洩這段期間有沒有不是你們發出的呼叫。如果是按用量計費的服務,也聯絡廠商說明狀況。
參考來源
- MDN Web Docs,API
- MDN Web Docs,HTTP 回應狀態碼
- IndexNow,Documentation
- Google Maps Platform,API 安全性最佳做法
- GitHub Docs,關於 Webhook
- n8n Docs,Webhook node
