跳到正文
LinkProfit

UTM 参数完全指南:标准参数、命名规范与渠道模板

LinkProfit Team阅读约 11 分钟
  • utm
  • analytics
  • marketing
本页内容

每一份把付费营销活动摊在「直接访问 /(无)」那一栏里的数据分析报表,都是一次标记失败,而这次失败几乎总是发生在几周之前——发生在某个人手工拼出来的一条链接里。UTM 参数是告诉数据分析系统「这位访客从哪里来」的最古老、也最通用的办法,同时也是营销工作里最容易做得前后不一的事情之一。这份指南讲清楚五个标准参数各自的含义、那些不常用的参数在什么时候才配得上一个位置、怎样给取值命名才能让六个人产出一份干净的数据而不是六份脏数据、哪些错误会不声不响地毁掉归因,以及短链接如何解决一个非常实际的问题:一条标记完整的 URL 实在太长,根本没法直接拿去分发。

UTM 参数到底是什么

一个 UTM 参数不过是追加在目标 URL 查询字符串上的一组键值对。这个缩写来自 Urchin Tracking Module,而这个名字又来自 Urchin Software——那家在 2005 年被 Google 收购、随后被改造成 Google Analytics 的数据分析公司。这套约定活得比它的出身更久:几乎每一个数据分析平台都读同样的参数名,从 Google 自家那一套,到 Adobe、Matomo、Plausible、Amplitude 和 Mixpanel。这种通用性本身就是它的全部价值——一条带标记的链接,在你自己的站点上和在客户的站点上表现完全一样。

它的机制是刻意保持简单的。有人点开一条带标记的链接,浏览器带着完好的查询字符串请求目标地址,数据分析脚本在页面加载时读出这些参数。取值挂到这次会话上,并按归因模型的规则,挂到随后发生的任何一次转化上。没有任何东西会被核实——UTM 参数是一个自己填报的标签,这恰恰就是命名纪律如此重要的原因。

五个标准参数

| 参数 | 状态 | 它回答的问题 | 取值示例 | | --- | --- | --- | --- | | utm_source | 必填 | 是哪一个具体的站点、刊物或供应商送来了这位访客? | newsletterlinkedinpartner_acmepackaging_box | | utm_medium | 必填 | 它属于哪一类渠道? | emailsmssocialcpcqraffiliate | | utm_campaign | 必填 | 这条链接属于哪一场活动或哪一次推广? | spring_sale_2026q3_webinar_series | | utm_term | 可选 | 是哪个付费关键词或哪个受众触发了这次投放? | link_shortener_apiretargeting_30d | | utm_content | 可选 | 是这场营销活动内部的哪个素材、哪个版位或哪个版本? | hero_buttonvariant_bback_panel |

人们最常搞混的,是来源和媒介的区别。来源是送来这批流量的那个有名有姓的东西,媒介是它属于哪一类。LinkedIn 是来源,社交是媒介;你周二发的那份邮件通讯是来源,邮件是它的媒介。如果把两个取值对调之后句子读起来照样说得通,那其中必有一个填错了。

term 和 content 的分工没那么要紧,但值得一次性定下来。term 是为付费搜索关键词准备的,通常由广告平台自动填入;content 覆盖的是在同一场营销活动内部区分不同版位的一切信息。拿不准的时候就用 utm_content——多数报表界面默认就会把它展示出来。

这些取值最终落到哪里

理解它们的生命周期,就能避开下面绝大多数错误。这些参数描述的是一次抵达。数据分析工具看到它们,判定这次访问来自外部,于是把来源、媒介和营销活动写到这次会话上。到此为止,它们的活就干完了——它们不会在页面之间一直跟着走;如果这位访客明天换一条路径再来,新的取值会按该工具采用的归因规则替换掉旧的。

它们还是公开的。它们就摆在地址栏里,别人分享 URL 时会被一起复制走,会落进服务器日志和浏览器历史,也可能被搜索引擎收录。所以千万别把任何敏感信息放进去:不放邮箱地址,不放客户标识符,也别把内部营收数字编进营销活动的名字里。

utm_id 与那些非标准参数

在这五个之外,还有少数几个参数值得了解一下。

utm_id 携带的是营销活动的标识符,而不是一个可读的名字。它存在的目的是做关联:当你从广告平台导入成本数据时,正是它把花费的数据行和流量的数据行对上。不导入成本数据就跳过它;一旦要用,它必须和导出文件里的标识符完全一致。

Google Analytics 4 还认识 utm_source_platformutm_creative_formatutm_marketing_tactic,它们描述的是采买机制而不是版位——是哪个平台买下了这次展示、素材是什么形式、这一手属于拉新还是再营销。对大规模的付费投放有用,对其他所有人只是噪音。

自定义参数同样正当:一个由你自己后端读取的 partner_idplacement 取值完全没问题。有两条规矩。别给它们加 utm_ 前缀,否则迟早会和厂商日后新增的东西撞名。另外要有心理准备:除非你专门配置工具去捕获它们,否则它们在标准报表里是看不见的。

能在团队里活下来的命名规范

标记纪律不是在单条链接上崩掉的,而是在规模上崩掉的。一个人做到前后一致,纯属碰巧。六个人则会造出 facebookFacebookFBfb-adsfacebook_adsmeta——本该是一行的东西变成六行,这场营销活动的效果也被劈成了六份。

大小写

选定小写,并且强制执行。理由不是好不好看:各家数据分析平台在是否统一大小写这件事上做法不同,而且同一家在不同字段上的做法也不同。你没法在一个随工具而变的行为上建立规范,所以干脆把这个变量去掉——永远小写,而且由生成工具来保证,而不是靠人记着。

受控词表

utm_medium 应该是一份封闭清单,定一次,写下来。一套好用的默认值是 emailsmssocialpaid_socialcpcdisplayaffiliateqrreferralpushprint。正是这份封闭清单,才让渠道分组变得有意义。

utm_source 没法做到完全封闭,因为新的刊物和新的合作伙伴会不断冒出来,但它应该是一份登记册,而不是一个自由填写的输入框:把清单放在团队看得见的地方,每一次新增都要有意为之。

utm_campaign 需要的是一套格式,而不是一份词表。像 subject_detail_yyyymm 这样的格式会产出 pricing_launch_202608,排序起来也合理。无论你选哪一种,半年之后读报表的人都应该不用开口问,就能看出这场营销活动到底是什么。

分隔符与字符

取值内部用下划线或连字符,绝不要用空格。空格会按编码方式变成 %20+,于是 spring+salespring%20sale 成了两行不同的数据。选定一种分隔符并处处照用;在 UTM 取值里,下划线是更常见的约定。

除了分隔符之外,避开一切标点。取值里出现的 &?#%,要么会提前把参数截断,要么需要编码,而各家工具对编码的处理并不一致。只用小写字母、数字,以及你选定的那一个分隔符。

会毁掉归因的那些错误

给站内链接加 UTM 参数

这是破坏力最大、也最不显眼的错误,因为表面上什么都没坏。有人给首页到定价页之间的那条导航链接加了标记,想统计一下点击量。数据分析工具看到营销活动参数,判定有一次新的访问从外部到达,于是结束当前会话,另起一个来源是你自家站点的会话。真正把这位访客带来的那场付费营销活动丢掉了这次转化,而你的首页被记上了一笔它根本没有创造的收入。

站内导航要用事件或点击跟踪来衡量,而不是营销活动参数——事件跟踪存在的意义正是这个。

在两个参数里重复同一个渠道

把来源和媒介都设成 facebook,或者都设成 sms,等于白白浪费一个字段:报表再也没法把一个个来源汇总成渠道,而这正是媒介存在的全部意义。来源写的是那个具体的站点,媒介写的是它属于哪一类,两者绝不应该是同一串字符。

参数在跳转途中丢失

查询字符串不会自动在跳转中幸存下来——必须由跳转本身有意把它们转发过去。一个把 HTTP 跳到 HTTPS、给路径加上或去掉末尾斜杠、或者把旧路径迁到新路径的目标地址,都可能悄无声息地丢掉问号后面的一切。流量照样到达,营销活动照样消失在直接访问里。

两个习惯能防住它。上线之前把整条链路测一遍,看的是最终地址栏,而不是第一次响应。另外,把链接指向规范的目标地址,而不是一个你明知会跳转的 URL。如果目标地址不属于你,那就先确认它的跳转会保留查询字符串,再往这条路径上花钱买流量。

标记错了层

当一条短链接挡在目标地址前面时,参数属于目标地址。给短链接本身加标记,等于在你为了保持干净才缩短的那个东西上,添了一堆看得见的杂乱,还制造出两个地方可以让营销活动的名字各走各的、对不上号。

给事务性邮件加标记

订单确认、密码重置和收据都不是营销活动。给它们加标记,只会让营销活动报表被一群做着日常操作的老客户填满,此后每一次渠道对比都会因此走样。营销群发要标记;事务性邮件放着别动。

按渠道分的模板

下面这些是可以直接上手的起点。把营销活动的命名格式换成你自己的,媒介取值则继续从你那份受控清单里取。

邮件,来源写的是具体这一次群发或这份名单,content 则区分邮件内部的版位:

https://example.com/pricing?utm_source=weekly_digest&utm_medium=email&utm_campaign=pricing_launch_202608&utm_content=header_cta

短信,来源写的是受众分段,而不是把媒介再重复一遍。请注意,这条带标记的 URL 是跳转的目标地址,它本身绝不会出现在短信正文里,原因写在我们那篇用短链接压低短信成本的指南里:

https://example.com/sale?utm_source=vip_list&utm_medium=sms&utm_campaign=flash_sale_202608&utm_content=segment_a

自然社交,content 标出的是素材,这样你才能对比不同形式的表现:

https://example.com/blog/deep-links?utm_source=linkedin&utm_medium=social&utm_campaign=q3_thought_leadership&utm_content=carousel_v2

付费社交,靠媒介与自然流量区分开,term 则承载受众:

https://example.com/white-label?utm_source=linkedin&utm_medium=paid_social&utm_campaign=wl_prospecting_202608&utm_term=agency_owners&utm_content=video_15s

二维码,来源写的是那个实体载体,content 写的是它在载体上的确切位置,于是你能把包装背面和货架标签分辨开:

https://example.com/register?utm_source=packaging_box&utm_medium=qr&utm_campaign=summer_promo_2026&utm_content=back_panel

| 渠道 | 典型来源 | 媒介 | content 里放什么 | | --- | --- | --- | --- | | 邮件通讯 | 这次群发或这份名单的名字 | email | 在邮件中的位置:页眉、正文、页脚 | | 短信群发 | 受众分段或名单 | sms | 分段或版本的标识 | | 自然社交 | 平台名称 | social | 素材形式或帖子版本 | | 付费社交 | 平台名称 | paid_social | 广告素材标识 | | 付费搜索 | 搜索引擎名称 | cpc | 广告版本,关键词放在 utm_term 里 | | 印刷物料 | 那个实体载体 | qrprint | 在载体上的确切位置 | | 合作伙伴投放 | 合作伙伴名称 | affiliatereferral | 在合作伙伴站点上的位置 |

短链接如何收拾参数的泛滥

看看上面那条付费社交的例子。它有 148 个字符,而这并不算罕见——五个参数配上有描述性的取值,产出 150 到 250 个字符的 URL 是家常便饭。放在邮件按钮里没问题,URL 藏在锚文本后面;换到几乎任何别的地方就都不行了。它放不进一条短信,除非多花几条计费段的钱;没法印在二维码下面,没法念出来,粘进一条社交帖子里则活像垃圾过滤器该拦下来的东西。

把查询字符串藏起来

短链接把人们看到的东西和数据分析工具收到的东西分开了。你先拼好带标记的目标 URL,把它缩短,然后分发出去的是 go.yourbrand.com/summer。点击先抵达跳转服务,它以完整的带标记 URL 作答,浏览器跟着它抵达落地页,每一个参数都完好无损地送到了那里。收件人看到的是一条干净的品牌链接;你的报表看到的是完整的标记。

追加参数,而不覆盖参数

更微妙的那项能力是合并。抵达短链接的点击常常自带查询参数——合作伙伴追加了一个引荐标识符,某个平台加了一个 click ID,某个模板透传了一个分段取值。粗糙的跳转服务要么把这些直接无视掉,要么拿它们把目标地址上的参数一股脑覆盖掉。

正确的行为是一次定义清楚的合并:解析目标地址的查询字符串,解析进来的那一份,按一条明确的优先级规则把两者合到一起,再输出结果。目标地址上有意设定的取值,优先级高于点击时带进来的取值,因此你配置好的东西不会被一个你没料到的入站参数改掉;而没有冲突的部分会被原样带过去,而不是丢弃。

同一套机制也支撑着工作区级别的 UTM 默认值。如果为某位客户建的每一条链接都该带上 utm_source=partner_acme,那就在跳转服务这一层统一加上,而不是在每一个 URL 里手打一遍——这一步消掉的正是前后不一致的头号原因:人把同一串字符重敲一百遍。

在点击落地之前就完成的衡量

还有一项好处很容易被忽略。当链接经过一个你自己掌控的跳转服务时,营销活动参数就从会话侧的数据变成了点击侧的数据。跳转服务为每一次点击记下时间戳、大致位置、设备、操作系统和引荐来源,并把这条链接上的 UTM 取值一并记下。于是即便你并不掌控目标页面、也装不了脚本——客户的站点、应用商店的详情页、合作伙伴的落地页——你依然可以在数据分析看板里对比各场营销活动。点击侧和会话侧的数字在哪些情况下本就应该对不上,我们那篇跟踪链接点击的指南讲得更细。

盘点你手上已有的东西

先从报表看起,而不是从链接看起。打开渠道报表,找那几种症状:几乎重复的来源取值、媒介那一列里冒出平台名字、三种格式并存的营销活动名字,以及在你正花钱投放的那段时间里大得反常的直接访问。每一种症状都指向上游某一处具体的失误。

然后去修生成这一步,因为一条一条地盘查链接,是一台永远跑不到头的跑步机。一个带预设的生成工具能把跑偏的机会直接拿掉——媒介从下拉框里选,大小写自动统一,营销活动的格式由工具强制而不是靠人记。我们免费的 UTM 生成器就在浏览器里做这件事,还会留下历史记录,于是下一个给 LinkedIn 帖子加标记的人,用的取值和上一个人完全一样。

对于已经流通在外的链接,先查跳转链路,再下「标记做错了」的结论。把链接粘进链接检查工具,逐跳读一遍。如果参数在起点还在、到终点却没了,那问题出在跳转上,重建再多 URL 也修不好它。

把基本功做扎实

UTM 标记奖励的是枯燥的一致性,而不是聪明劲儿。每一条对外链接都带上三个必填参数,媒介只用一份封闭清单,处处小写,营销活动的格式写在团队看得见的地方,取值里不放任何敏感信息。当你确实有一个关于版位的真问题时,再加上 utm_content;当你要导入成本数据时,再加上 utm_id。站内链接放着别动。

然后把结果藏到一条自有域名上的短链接后面,好让那份保证报表干净的纪律,不至于把一条 200 个字符的 URL 硬塞进短信、或者印到纸上。用 UTM 生成器拼出带标记的 URL,用免费短链接工具把它缩短,再拿第一份报表和你预期的样子对一遍——这一次对照能让你对自己标记方式的了解,超过再读一周的文档。

大家常问的问题

到底哪几个 UTM 参数是必填的?

三个:utm_source、utm_medium 和 utm_campaign。多数数据分析工具只要有其中一个就会接受这条 URL,但由此产生的数据行没法用——没有媒介的来源无法归入某个渠道,没有营销活动的媒介也无法与花费对应起来。请把这三个当作每一条对外链接的必填项,只有当你确实有一个具体问题要靠它们回答时,才加上 utm_content 和 utm_term。

UTM 参数应该全部用小写吗?

应该,而且要靠机制强制执行,而不是靠一句口头约定。有些数据分析平台会把营销活动的取值统一大小写,有些则区分大小写地比较它们,还有些对来源用一套做法、对媒介用另一套。既然没法指望工具替你统一,唯一稳妥的规矩就是处处小写,并且由团队使用的那个生成工具或模板自动加上,谁都不必去记它。

UTM 参数会损害 SEO 或者制造重复内容吗?

只要你的站点处理得当就不会,而这一点值得你亲自确认一遍。查询参数会造出各不相同的 URL,因此一个能用几十种标记变体打开的页面,也可能被抓取几十次。解决办法是在落地页上放一个自指的 canonical 标签,指向不带参数的那条干净 URL。有了它,带标记的 URL 会全部归并到 canonical 上,重复内容的问题也就不存在了。

为什么我的营销活动被算成了直接访问?

通常是四种原因之一:链路上某一次跳转把查询字符串丢掉了;链接被人不带标记地粘进了一个你管不到的渠道;目标地址上有一次 HTTP 跳 HTTPS 或者末尾斜杠的跳转,把参数扔掉了;又或者这次点击落进了某个 App 的内置浏览器,而它开了一个全新的会话。跳转链路是最常见、也最容易验证的一种——把链接从头到尾走一遍,看最终地址栏里是什么。

我可以给站内链接加 UTM 参数吗?

不该这么做。数据分析工具把营销活动参数读作「有一次新会话从外部到达」的信号,因此给一个站内按钮加标记,可能会让会话重新开始,并用你自己的首页覆盖掉真正的获客来源。站内导航请改用事件或点击跟踪来衡量,那才是这些系统被设计出来要做的事。

短链接和 UTM 参数是怎么配合的?

短链接是人们看到的那一面,带标记的 URL 是他们最终落到的那一面。你给目标地址加标记,把它缩短,再分发缩短后的版本,收件人于是永远不会看到上百个字符的查询字符串。做得好的跳转服务还会在点击发生时合并参数:目标地址上已有的取值原样保留,而跳转服务被配置要追加的东西,只在不覆盖已有键名的地方才追加。