邮件里的链接包成了 track.example.com/click?u=xxx,点开跳到落地页后地址栏只剩 /act,utm_source 和活动 ID 都没了,渠道报表连续三天是零。日志里能对上时间点,这种反而好排。

跟踪域名做 301 跳转时只带了目标地址,没把原始 query 拼回去,拼接时又用固定的问号,原地址已经带参数时后半段被当成新的查询串。这一点先确认清楚,后面就不用反复试。

location = target + (target.includes('?') ? '&' : '?') + params.toString();

「跟踪链接丢参数」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。

改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。

处理上按这个顺序:跳转前把原始参数解析出来,重新拼到目标地址上,保留 utm 开头的键;已经带参数的地址用 & 拼接,别硬编码问号;从邮件里点一次,看落地页的 query 是否完整。

结果对不对很好判断,从邮件点进落地页,地址栏保留 utm_source 和活动 ID,渠道报表当天就有数据。

作者 9823189