先说结论:渠道来源这个字段不能用来做决定了
这一篇讲一个做投放、做内容、看报表的人都会撞上、但很少有人正面处理的问题:渠道来源(referrer)这个字段,在国内企业站上已经大面积失效。
先说结论:我们把官网上 252 位外部真人访客的来路核了一遍,184 位(73.0%)是在微信内置浏览器里打开页面的;而这 184 位里有 181 位(98.4%)的 referrer 是空的——在多数统计工具里,这批人会被统一记成「直接访问」。也就是说,报表里那一列「直接访问」,在我们的站上约等于「从微信里点进来」。同一个统计窗口里,来自百度的访客只有 6 位、谷歌 2 位,合计 占 3.2%。
需要先讲清楚:这不是我们的站特别,而是微信内置浏览器的结构性行为。所以这篇写的是行业共性问题,只是我们恰好有自建埋点、能把它算成具体数字。凡是按「渠道来源」分配预算、评价内容效果、判断该不该加大搜索投入的团队,都该先过一遍这一关——因为这个字段缺的不是 5%,是 90% 以上。
| 指标 | 数值 | 它意味着什么 |
|---|---|---|
| 外部真人访客(按身份去重) | 252 位 | 全文的分母 |
| 其中用微信内置浏览器打开 | 184 位(73.0%) | 真实主入口 |
| 其中 referrer 为空 | 181 位(98.4%) | 会被统计工具记成「直接访问」 |
| 来路明确指向公众号的 | 3 位(1.6%) | 剩下的 1.6% 才是"能被看见"的微信来客 |
| 搜索引擎来路合计 | 8 位(3.2%) | 百度 6 位、谷歌 2 位 |
口径先说清楚,全文数字都能按同一口径复算:统计窗口 2026-09-18 至 2026-10-18;数据来自官网自建埋点库的行为事件表;剔除自家 IP 段与程序化访问(含爬虫、自动化脚本、无头浏览器);访客按身份去重,同一人多次打开算 1 位;「微信内」按浏览器标识含微信内置浏览器特征识别;「来路」取该访客首个事件的 referrer 字段。全文比例的分母是 252 位外部真人访客,超过我们内部定的报比例门槛(到达数 100 以上);涉及不足 100 位的分组,只报绝对数,比例仅作方向参考。
三个数:184 位在微信里,181 位「没有来路」
把 252 位访客按「打开时用的浏览器环境」切成两群,再把各自的 referrer 摊开,问题的形状就出来了:
| 对照项 | 微信内置浏览器 | 微信外(普通浏览器等) |
|---|---|---|
| 访客数 | 184 位 | 68 位 |
| 其中 referrer 为空 | 181 位(98.4%) | 58 位 |
| 其中来路可识别 | 3 位 | 10 位 |
| 读过至少一篇文章 | 48 位 | 12 位 |
| 在站内看过第二个页面 | 43 位 | 16 位 |
| 发生过转化类动作 | 2 位 | 4 位 |
看第一、二行就够了:微信内的 184 位里,181 位没有来路;微信外的 68 位里,58 位也没有来路。这意味着「直接访问」这一列其实是个混合池——里面既有从公众号点进来的读者,也有自己输网址、从书签、从别人私聊转发的链接进来的人。而这两种人的运营含义完全不同:前者是你推送带来的(你停了就没有),后者是主动找你(说明品牌有沉淀)。合在一列里,两种判断都会出错。
按事件级看,缺口更极端:微信浏览器的 358 条行为事件里,referrer 含微信域名的只有 3 条,占 0.8%。也就是说,即便个别请求带了来路,也不足以支撑归因——缺失不是零星的噪声,是系统性的空白。
为什么会没有来路:不是统计工具坏了
这里必须把「我们看到的」和「我们推断的」分开写,避免把一个现象讲成一条定律。
- 现象(一手,可复算):在上述窗口内,微信内置浏览器访客的 referrer 空值率 98.4%;事件级 99.2% 不带微信域名来路。这是我们自己埋点库里查出来的,同一条件任何人都能复算。
- 机制解释(行业普遍现象,建议自行验证):微信内置浏览器在打开外部链接时,对 Referer 的传递并不可靠——多数情况下不携带,或只携带极简信息;同时站点自身若启用了较严格的 referrer 策略(如
strict-origin-when-cross-origin或no-referrer),跨域时也会进一步削减。两者叠加,微信场景下的 referrer 归因天然缺一大块。我们不对第三方产品的具体实现做断言,只陈述我们观测到的结果与常见解释。 - 推论(对决策有意义的那一层):既然缺口是结构性的,那么任何以 referrer 为唯一输入的报告都不可信——不是"精度差一点",而是"主要来源整个不见了"。
怎么在 5 分钟内验证自己是不是同样情况?不用换统计工具,加一段埋点就够:
- 在每个页面加载时,把
navigator.userAgent与document.referrer同时记下来(只记 referrer 是大多数统计工具的默认做法,也正是问题所在)。 - 连跑 3 天,按「UA 是否含 MicroMessenger」分两群。
- 比较两群里「referrer 为空」的占比。如果微信那群超过 90%,你的站和我们是同一个情况,接下来任何按渠道做的结论都要重算。
我们自己的埋点还多记了两件事,这也是后面能换口径的前提:访客身份(同一人跨会话可合并)与落地页路径。没有这两样,即使知道「他在微信里」,你也不知道他从哪一篇、哪个页面进来。
后果一:预算会被导向搜索
把 252 位访客按「统计工具会怎么归类」摆一遍,就能看到报表长什么样:
| 统计工具里的渠道 | 访客数 | 占比 | 真实构成(按 UA 与来源拆开) |
|---|---|---|---|
| 直接访问 | 239 位 | 94.8% | 微信内 181 位 + 普通浏览器无来路 58 位 |
| 百度自然搜索 | 6 位 | 2.4% | www 5 位 + 移动端 1 位 |
| 谷歌自然搜索 | 2 位 | 0.8% | — |
| 公众号(能识别出的) | 3 位 | 1.2% | 其余 181 位已被并入"直接访问" |
| 站内跳转 | 1 位 | 0.4% | — |
| 其它外链 | 1 位 | 0.4% | — |
这张表会推出两个都很危险、但方向相反的结论:
- 误判一:「搜索几乎没量,得加大投入。」看到自然搜索只有 3.2%,很自然的反应是买关键词、做 SEO、投信息流。但如果 73% 的真实来源是微信,你花在搜索上的钱是在抢那 3% 的池子,而真正的池子没被看见。
- 误判二:「94.8% 是直接访问,说明品牌很强。」这更常见。把微信推送带来的读者记成"主动找上门",会让团队误以为品牌已经形成自传播,从而减少推送频次——而下面第 6 节的数据会说明,那恰恰是唯一在持续供给的渠道。
这两个误判的共同点是:它们都建立在一个 98% 空白的字段上,却都以精确的百分比呈现。报表本身不会提醒你「这一列不可用」。
后果二:微信里的读者更愿意读长文,但报表看不见
第二个被口径掩盖的事实,是两群人的行为差异。微信内的读者更愿意点开文章,却更不愿意做动作:
| 行为 | 微信内(184 位) | 微信外(68 位) | 读法 |
|---|---|---|---|
| 读过至少一篇文章 | 48 位(26.1%) | 12 位(17.6%) | 微信内读者更愿意读长文 |
| 看过站内第二个页面 | 43 位(23.4%) | 16 位(23.5%) | 两群几乎一致——都不是"逛网站"的心智 |
| 发生过转化类动作 | 2 位 | 4 位 | 主动搜索来的更愿意动 |
| 开始答成熟度自测题 | 2 位 | 1 位 | 绝对数极小,只作方向参考 |
注意第二行:两群的「站内第二页」比例几乎完全一样(23.4% vs 23.5%)。这个巧合很有价值——它说明「读完就走」不是微信带来的习惯,而是所有人在企业官网上的一致行为:他们来是为了解决一个具体问题,不是来逛的。这和我们前几期的结论是同一条:需要读者做的下一步,必须写在他正在读的那一页里,不能指望他点导航。
而在 referrer 归因下,这 48 位真实读者里有 47 位会被算进「直接访问」——于是"内容有没有人读"这个问题,在报表上永远得不到答案。这是我们见过的、内容团队最普遍的挫败感来源:明明写了、也发了,数据却一片空白。
统计边界说明:微信外这一组只有 68 位,低于我们内部报比例的门槛(100 位),所以上表右列的比例仅用于判断方向,不作为精确指标引用;两组之间的差异是否稳定,还需要更长窗口复算。
后果三:停止推送,微信内 4 天归零
第三个事实来自一个意外:10-16 到 10-18 这三天,我们的公众号没有新的图文发出(草稿建好了,但没人点"发表")。这三天正好成了一个天然实验:
| 日期 | 外部访客 | 其中当天首访且在微信内 |
|---|---|---|
| 10-11 | 6 位 | 2 位 |
| 10-12 | 14 位 | 6 位 |
| 10-13 | 11 位 | 3 位 |
| 10-14 | 2 位 | 1 位 |
| 10-15 | 1 位 | 0 位 |
| 10-16 | 8 位 | 0 位 |
| 10-17 | 6 位 | 0 位 |
| 10-18 | 4 位 | 0 位 |
再补一个更硬的对照:10-16 我们做上一期盘点时,外部访客是 237 位、微信内 184 位;到 10-18 变成 252 位、微信内还是 184 位。两天里新增了 15 位访客,微信内一位都没加——新增全部来自微信外(浏览器直访与零星搜索)。
结论很直白:我们的流量是「推送型」,不是「检索型」。发一篇,来一批;不发,归零。这不是微信的问题,而是所有生态内分发的共同特征——它不给你搜索式的长尾,它只给你当期曝光。认清这一点之后,运营动作会变得非常具体:
- 草稿不等于发布。我们过去的流程停在「双号草稿已建」,但读者看不到草稿。这一步必须由人点"发表",且要写进上线检查项——这是我们在这一轮里实际改掉的一个流程漏洞。
- 把"每周至少一篇真正发出"定成硬指标,而不是"每周至少写一篇"。写了不发,等于没写。
- 停止用"站内自然流量"评估内容效果。在推送型结构里,站内自然流量本来就该接近零;用它评估,只会得出"内容没用"的错误结论。
换口径:UA + 落地路径 + 会话行为
问题定位清楚,改法也就清楚了:不要再把 referrer 当第一判据,用浏览器标识(UA)优先,referrer 只作补充。下面是我们已经在自己周报里执行的口径定义:
| 渠道 | 判据(按优先级从高到低) | 本窗口读数 |
|---|---|---|
| 微信内 | UA 含微信内置浏览器标识(不看 referrer) | 184 位(73.0%) |
| 搜索引擎 | referrer 域名为 baidu / google / bing / sogou 等 | 8 位(3.2%) |
| 站内跳转 | referrer 域名为本站 | 1 位(0.4%) |
| 浏览器直访 / 待定 | 以上都不命中 | 59 位(23.4%) |
最后一列的四类相加正好是 252 位,不重不漏。关键是第一行的判据里没有 referrer——因为 UA 不会丢,而 referrer 会。同时要接受「待定」这一档存在:那 59 位里既有真正自己输网址来的,也有从私聊、朋友圈、邮件转发来的,目前无法再拆,就如实标"待定",不要硬塞进某一个渠道凑满 100%。
更进一步的第二层,是把渠道和落地页做成交叉表——这一层能直接指导页面改造。我们的读数是:数据能力页的 56 位首访访客,100% 来自微信内(微信外一位都没有);成熟度自测页 20 位、开发者页 20 位,同样高度集中在微信内。这意味着这些页面本质上是"公众号文章的落点",而不是"首页的分支",它们的第一屏应该按"我刚读完一篇文章,还想看看你们能做什么"来设计。
我们据此已经落地的三件事:①周报把「直接访问」拆成「微信内 / 浏览器直访与待定」两列,固定用同一支查询脚本复算;②增加「渠道 × 落地页」交叉表,任何页面改版前先看它的渠道构成;③停止把"直接访问占比"当品牌指标,改用「微信内读者数」和「微信内读者的下一步动作数」两个数并排看。
自查:10 分钟判断你的站是不是同样情况
这套检查不需要采购任何工具,只要你的站能加埋点(哪怕只是一段记录 UA 与 referrer 的脚本):
| # | 动作 | 判据 |
|---|---|---|
| 1 | 每页同时记录 navigator.userAgent 与 document.referrer,连跑 3 天 | 大多数统计工具默认只记后者,这正是盲区来源 |
| 2 | 按 UA 是否含微信标识分两群 | 微信群里 referrer 空值 > 90% → 你的渠道报表已经失效 |
| 3 | 把报表的「直接访问」替换成「微信内 / 直访与待定」,重看最近 30 天的页面排名 | 页面排位通常会大幅变化,这才是真实的内容落点分布 |
最后一句判断,也是这一篇唯一想讲的一件事:先修口径,再谈优化。口径没修好,所有 A/B 测试、投放复盘、内容评估都建立在沙子上——而且它们看起来都很科学,因为每个数字都有小数点。
顺带说清一个边界:这篇不是主张"别做搜索"。搜索和 GEO 依然要做,但顺序要改——先把已经在给你流量的那扇门(微信)接住,再去找新的门;而不是在看不见 73% 的情况下,把预算投向看得见的那 3%。
微信内识别二维码分享此文