Open source

Meta 點擊碼寫錯一行, 轉換就算到別支廣告。

fbc-guard 檢查落地頁存放 Meta 點擊碼的程式,找出會讓轉換算到錯的廣告、或讓事件管理工具回報 fbclid 被修改的寫法。它只讀原始碼,不執行程式,也不會送任何資料給 Meta。

為什麼要檢查這段程式

有人點了 Meta 廣告,落地頁網址會帶一個 fbclid。頁面把它存進第一方 cookie _fbc,格式是 fb.子網域索引.建立時間.fbclid,之後送事件時一起交給 Meta。

Meta 官方的 fbc/fbp 說明寫明了幾件事:點擊碼大小寫有差,不能改動;建立時間用毫秒;網址上的 fbclid 跟 cookie 裡存的不同時,就要寫入新的。

手寫的程式最常錯在這幾處。錯了頁面照樣能跑,訪客看不出任何異狀,只有成效報表會悄悄算錯。每條規則都註明依據:官方明文、從官方原則推得,或是實務上看過的錯誤。

Meta _fbc cookie 的四段:fb 前綴、子網域索引、毫秒建立時間、fbclid 原值

七條規則

FBC-01 新點擊碼要蓋掉舊的

只在沒有 cookie 時才寫入,回訪的人點了新廣告,送出去的還是舊點擊碼,轉換會算到上一支廣告。依據:官方明文。

FBC-02 不要再解碼一次

從網址取出 fbclid 時已經解碼過,再呼叫一次 decodeURIComponent 就等於改了它。依據:從官方原則推得。

FBC-03 不要改大小寫

點擊碼大小寫有差,轉成小寫或大寫就成了另一個值。依據:官方明文。

FBC-04 不要截斷

用 slice、substring 把點擊碼切短,送出去的就不是原值。依據:從官方原則推得。

FBC-05 _fbc 時間用毫秒

組 _fbc 時用 Date.now()/1000 這類秒數就錯了。先存成變數再串進去、寫在樣板字串裡,一樣抓得到。依據:官方明文。

FBC-06 子網域索引不要寫死

寫死一個數字,換到不同層級的網域就對不上,應該依網域推算。依據:實務上看過的錯誤,Meta 文件沒有這樣規定。

FBP-01 _fbp 時間也用毫秒

跟 FBC-05 一樣,檢查 _fbp 的建立時間。依據:官方明文。

判定結果與退出碼

每一條規則都會給出下面其中一種結果。指令列的退出碼可以直接接在部署流程前面。

結果代表什麼退出碼
pass沒找到已知的錯誤寫法0
fail至少一條規則抓到錯誤寫法1
unknown找不到存網址點擊碼的變數,這條無法判定0
not_applicable掃描範圍內沒有 _fbc,什麼都沒判斷,不等於通過0
工具自我測試沒過量尺本身壞了,不給任何判定2

怎麼用

需要 Node.js 18 以上。直接檢查線上落地頁,它會一起抓同網域的 JS 檔,跨網域的不抓:

npx -y -p mcp-server-fbc-guard fbc-guard https://你的落地頁/

也可以檢查部署前的檔案:

fbc-guard ./dist/index.html ./dist/js/tracking.js

接成 MCP server,AI 寫追蹤碼時就能當場檢查:

{"mcpServers":{"fbc-guard":{"command":"npx","args":["-y","mcp-server-fbc-guard"]}}}

兩個工具:check_fbc_code 檢查一段程式碼,check_fbc_url 抓網址和同網域的 JS 再檢查。

限制與授權

MIT 授權。這是讀原始碼的靜態檢查,通過的意思是「沒找到已知的錯誤寫法」,不代表程式一定正確。壓縮或混淆過的程式、跑起來才組出來的程式,可能藏住錯誤;放在代碼管理工具容器、跨網域腳本或伺服器端的追蹤碼,這次掃描看不到。要確認實際送出的值,還是要在瀏覽器帶著舊 cookie 和真實的 fbclid 實測一次。

GitHubnpm

相關文章與服務

點擊碼只是追蹤設定的其中一段:

Pixel 與 CAPI 同 event_id 去重實作 meta 廣告完整入門 數據追蹤與歸因設定

常見問題

事件管理工具說 fbclid 被修改,是什麼原因?
fbc 參數裡的點擊碼,跟廣告點擊時網址上的原值不一樣。常見原因是程式把 fbclid 再解碼一次、改了大小寫、切短,或回訪者點了新廣告卻沒有蓋掉舊 cookie。fbc-guard 會逐條找出這些寫法。

_fbc 的建立時間要用秒還是毫秒?
毫秒。Meta 官方格式裡的建立時間是毫秒時間戳,也就是 Date.now() 的值,不要再除以 1000。

已經裝了 Meta Pixel,還需要檢查嗎?
_fbc 完全交給 Pixel 自己寫的話,這支工具會回報不適用。要檢查的是自己寫 cookie、或自己從網址抓 fbclid 送轉換 API 的程式。

會把資料送給 Meta 嗎?
不會。它只讀頁面原始碼和同網域的 JS 檔,不執行程式,也不送任何資料出去。

需要有人幫你把這些做完

追蹤與歸因設定是我們日常交付的一部分。如果你的廣告成效數字對不起來,把情境講給我們聽。

用 Telegram 聊需求
TG 聊需求