同一個來源,有人寫 facebook、有人寫 Facebook、有人寫 fb,到了 GA4 報表裡就變成三筆互不相干的流量。行銷活動跑得越多、經手的人越多,這種「同一件事被拆成好幾個名字」的狀況就越嚴重,最後報表變成一堆對不起來的碎片,得花整個下午手動合併。問題的根源不在工具,而在沒有一套講好的 UTM 參數命名規範。
UTM 本身只是掛在網址後面的標記,誰都會加;真正決定資料乾不乾淨的,是「大家有沒有照同一套規則去填」。這篇會把命名規範拆成三層來談:每個參數該填什麼樣的值、用什麼分隔符與大小寫、以及怎麼把規則變成一份團隊跟得動的管理表。文末附一份可以直接照抄的命名規格,讓你把行銷連結的來源追蹤一次統一管好。
UTM 參數命名規範到底在規範什麼
UTM 參數命名規範規範的不是「要不要加 UTM」,而是「加的時候每個欄位填什麼字、長什麼樣」。它是一套團隊共用的填寫約定,目的只有一個:讓同一件事在報表裡永遠對應到同一個值。
UTM(Urchin Tracking Module)是附加在網址後面的查詢字串參數,當使用者點擊帶參數的連結進站時,Google Analytics 這類工具會讀取這些參數,把流量歸類到對應的來源、媒介與活動。一段帶 UTM 的網址長這樣:
https://example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=summer_sale
問題在於,UTM 沒有任何內建驗證。你填 facebook 還是 Facebook、email 還是 edm,網址都會正常運作、頁面都會正常打開,GA4 也照單全收。工具不會幫你判斷哪兩個值「其實是同一個意思」——這件事完全靠人為的命名規範來守。
所以命名規範要解決的,是三個層次的混亂:
- 格式不一致:大小寫、分隔符各寫各的,同義詞被拆成多筆。
- 語意不一致:
source跟medium寫反、活動名稱每次重取。 - 管理不一致:沒有一份共用清單,新人不知道該填什麼,只能憑印象猜。
把這三層管好,UTM 才會從「可以追蹤」進化成「報表看得懂」。
五個 UTM 參數各自該填什麼值
命名規範的第一步,是先講清楚每個欄位的角色,避免把值填到錯的格子裡。UTM 共有五個標準參數,其中三個建議必填、兩個選填:
| 參數 | 角色 | 填什麼 | 台灣常見值 |
|---|---|---|---|
utm_source |
流量來自哪個平台或來源 | 平台名、網站名、夥伴名 | facebook、instagram、line、newsletter、google |
utm_medium |
透過哪種通路型態進來 | 媒介類型,不是平台名 | cpc、social、email、referral、display |
utm_campaign |
屬於哪一檔行銷活動 | 活動代號或主題 | summer_sale、member_day、product_launch |
utm_term |
付費搜尋的關鍵字 | 觸發廣告的字詞 | crm_tool、running_shoes |
utm_content |
同一活動內的素材或版位 | 用來區分 A/B 或位置 | hero_button、sidebar、version_a |
最常被寫反的是 utm_source 跟 utm_medium。簡單的記法是:source 回答「哪個地方」,medium 回答「哪種通路型態」。Facebook 貼文導流時,source=facebook、medium=social;電子報導流時,source=newsletter、medium=email。如果你把 source=social、medium=facebook 寫反,報表的歸類邏輯就整個倒過來,後面再多的命名規則都救不回來。
utm_term 與 utm_content 是選填,但別小看 utm_content。同一個活動頁同時放在電子報頂部按鈕、文末按鈕、Instagram Bio 連結時,活動名稱可以一樣,靠 utm_content 標出 hero_button、footer_cta、bio_link,就能比出哪個版位真的有人點。這是分清「哪個活動有效」之後,再往下追「哪個素材有效」的關鍵。
大小寫、分隔符與字元,三條格式硬規則
格式層的混亂最常見,但也最好治,因為它只靠三條死規則就能擋掉九成問題。
第一、全部使用小寫英文。 UTM 參數值區分大小寫,Facebook、facebook、FACEBOOK 在 GA4 裡是三個不同的來源。沒有任何理由用到大寫,統一規定一律小寫,是成本最低、效果最大的一條。
第二、分隔符只能選一種,全團隊統一。 網址裡不能有空格,summer sale 會被編碼成難讀的 summer%20sale,所以多字詞之間一定要用符號連起來。常見的選擇有兩種:
- 連字號
-:例如summer-sale。可讀性好,許多分析平台與廣告系統把它當成標準。 - 底線
_:例如summer_sale。視覺上把字詞黏得更緊,也很多團隊採用。
兩種都行,重點是選定一種就不要再換。真正會出事的是混用——同一份報表裡 summer-sale 跟 summer_sale 並存,又得手動合併。
如果團隊規模大、活動結構複雜,有一種進階寫法值得考慮:欄位內用底線、欄位之間用連字號。例如把區域、通路、月份壓進一個值裡寫成 apac_paid-social_june,靠兩種分隔符的層次區分「同一欄裡的詞」與「不同欄的概念」,方便事後用程式拆解。一般中小團隊不用做到這麼細,但如果你之後打算用試算表公式或腳本批次解析 UTM,這個習慣會省下很多力氣。
第三、不放中文、空格與特殊符號。 中文會被轉成一長串百分號編碼,網址既難讀又容易在複製貼上時斷掉;#、&、%、@、? 這些符號本身就是網址的結構字元,塞進參數值會直接破壞 UTM 的解析。活動名稱再怎麼有創意,到了 UTM 欄位都先翻成簡短的英文代號。
為每個參數建立一份「可用值清單」
光有格式規則還不夠。facebook、fb、facebook-organic 三個全是小寫、也都用連字號,完全符合格式硬規則,卻照樣把同一個來源拆成三筆。要堵住這個破口,得做的是受控詞彙表——也就是事先把每個參數「允許填哪些值」列成一份清單,填表的人只能從清單裡挑,不能自由發揮。
最該管的是 utm_source 跟 utm_medium 這兩個必填欄位,因為它們是報表歸類的骨幹。建議的做法是:
utm_source清單:把你會用到的平台一次列齊,例如facebook、instagram、line、youtube、newsletter、google、partner-a。規定 Facebook 永遠寫facebook,不准出現fb、FB、facebook.com。utm_medium清單:媒介類型本來就有限,更該鎖死。常用的就是cpc、social、email、referral、display、affiliate、organic-social這幾種,列完就不要再生新的。
utm_campaign 沒辦法做成封閉清單(每檔活動都是新的),但可以規定命名樣式。例如統一成「主題 + 檔期」的結構,像 member-day-q3、product-launch-v2,並且講好同一檔活動跨平台投放時,utm_campaign 必須維持同一個名字——這樣你才能把 Facebook、電子報、LINE 的同一檔活動加總起來比較。
utm_term 與 utm_content 是選填,可以不做封閉清單,但至少在規範文件裡放幾個範例,讓填表的人有樣可循,例如 utm_content 用 位置-素材 的格式寫成 header-banner、footer-text。
做受控詞彙表的好處,是把判斷力從「每個填表的人」收回到「一份文件」。新人不需要懂分析邏輯,照著清單挑就不會錯。
哪些連結不該加 UTM
命名規範除了規定「怎麼填」,也要明確規定「哪裡不要填」,否則填得再乾淨,資料一樣會被污染。
站內連結絕對不要加 UTM。 這是最容易踩、後果也最嚴重的一條。當一位使用者從 Google 搜尋進站,接著點了你站內某個帶 UTM 的 banner,他這一次工作階段的來源會被改寫成那個 banner 的值,原本「來自 Google 自然搜尋」的資訊就被蓋掉了。結果報表把大量真實來自外部的流量,誤判成從你自己網站來的。站內的點擊與版位要追蹤,請用 GA4 的事件追蹤,而不是 UTM。
已開自動標記的 Google Ads 流量不用再手動加 UTM。 Google Ads 啟用自動標記後,會在網址自動加上 gclid 參數,GA4 能直接讀取並對應到 Ads 的活動資料。這時候你再手動補一套 UTM,兩套參數可能互相干擾、產生衝突的歸因。實務上的建議是:Google Ads 流量優先用自動標記,需要手動 UTM 時先確認 GA4 與 Ads 的設定邏輯,別讓兩套標記打架。
不要把個資放進 UTM。 姓名、電話、Email、會員編號、訂單編號、登入 token 這類能識別個人的資訊,一律不准出現在 UTM 裡。網址會出現在瀏覽器紀錄、伺服器日誌、被分享的連結、截圖,甚至透過 referrer 傳到第三方網站;資安界普遍的共識是,敏感資料不該放在網址的查詢字串中。UTM 是用來標記行銷來源的,不是傳遞資料的管道。
把規範變成一份團隊跟得動的管理表
規範寫得再漂亮,沒有一份大家共用、隨時查得到的工具,三個月後一樣會走樣。命名規範的最後一哩,是把規則落地成一份 UTM 管理總表。
最務實的做法是開一份共用試算表(Google Sheets 即可),至少包含這幾欄:
- 完整網址
utm_source、utm_medium、utm_campaign、utm_content- 發佈位置(哪個平台、哪則貼文)
- 負責人
- 上線日期
- 狀態(進行中/已結束)
把 utm_source 與 utm_medium 兩欄設成下拉選單,選項就是前面定好的受控詞彙表——這一步能直接消滅手打錯字與同義詞分裂。每建一條新連結就登錄一筆,既避免重複命名,也留下完整的歷史紀錄,跨年回頭查舊活動時不會一片空白。
規範文件本身則要寫清楚四件事:每個參數的填寫標準、選定的分隔符與大小寫規則、各參數的可用值清單、以及哪些連結不該加 UTM。文件放在團隊都找得到的地方,新人上手時先讀這份,再開始建連結。
連結正式發佈前,養成跑一輪檢查的習慣,把以下幾點過一遍:
- 網址點開能不能正常打開頁面
- 三個必填參數有沒有都填
- 大小寫是不是統一小寫、分隔符有沒有混用
source跟medium有沒有寫反- 值有沒有落在受控詞彙表裡
- 有沒有不小心放進個資
- 短網址或轉址後,UTM 參數有沒有被吃掉
- 是否已經登錄到管理表
這份檢查看起來瑣碎,但它換來的是日後不用花大把時間清報表。
已經一團亂的舊資料,怎麼收拾
如果你接手的 GA4 裡已經堆了一堆 Facebook、facebook、FB 混雜的歷史資料,命名規範也救不回過去——但能止血,並讓未來的資料乾淨。
先做的是「定義現在」:把上面那套規範訂出來、建好管理表與受控詞彙表,讓從今天起的新連結全部照規則走。歷史資料無法回頭改寫已經寫入的參數值,但 GA4 的探索報告或資料處理層通常可以建立對應規則,把 Facebook、FB 這類舊值在分析時歸併到 facebook 底下,做出較乾淨的合併視圖。
同時把舊的、沒照規範的連結盤點一遍:還在外面流通、之後還會帶流量的連結(例如印在 DM 上的 QR Code、已發佈的部落格外連),如果還能改,就換成符合新規範的網址;改不動的就記錄下來,知道這批流量的命名是舊規則,分析時心裡有數。
收拾舊資料的重點不是追求完美回溯,而是劃一條清楚的分界線:分界線之後的資料照規範跑,分界線之前的資料知道它怎麼亂、怎麼在分析時對應。把這條線劃好,報表才會一季比一季乾淨。
從填對欄位到報表看得懂,規範才是真正的價值
UTM 加得對不對,差別不在當下那條網址,而在三個月後打開報表的那一刻。一套講清楚的 UTM 參數命名規範,本質上是在替未來的自己省下清資料的時間:每個參數填什麼值、用小寫與單一分隔符、必填欄位走受控詞彙表、站內連結與個資絕不碰、所有連結登錄進管理表——這幾條守住了,同一件事就永遠對應同一個值,報表自然加得起來、比得出來。
如果你的團隊還沒有這份規範,今天就可以從最小可行版本開始:訂下「一律小寫、分隔符選一種、source 跟 medium 各列一份可用值清單」這三條,開一份管理試算表,把下拉選單設好。先把規則立起來、讓新連結照著走,再慢慢去處理舊資料。命名規範不是越複雜越好,是越穩定、越多人照著做越好。