You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Adobe Analytics中重新填充r变量以获取原始引荐URL?

解决Adobe Analytics中认证跳转后原始引荐来源丢失的问题

我之前帮不少开发者处理过类似的场景——当用户通过外部渠道进入你的站点,先被跳转到第三方认证域完成登录,再重定向回首页时,Adobe Analytics会把认证域当成引荐来源,完全丢失了最初的外部渠道信息。核心原因是浏览器的document.referrer在跳转后会变成认证域的URL,而Adobe默认用这个值填充r变量。

下面是两种靠谱的解决方案,你可以根据自己的认证流程选一种:

方案一:跳转认证前存储原始引荐到Cookie

在用户首次访问着陆页、还没跳转到认证提供商之前,把原始的引荐信息存在同域Cookie里,等用户从认证域回来后再读取这个值覆盖Adobe的r变量。

步骤1:着陆页添加存储逻辑

在着陆页的JS里(跳转到认证之前)加入这段代码:

// 仅在没有存储过原始引荐时执行
if (!document.cookie.includes('originalReferrer')) {
  // 优先取document.referrer,没有的话标记为direct
  const originalRef = document.referrer || 'direct';
  // 设置Cookie,有效期1天,根目录确保首页能读取
  document.cookie = `originalReferrer=${encodeURIComponent(originalRef)}; path=/; max-age=86400; SameSite=Lax`;
}

// 这里写你跳转到认证提供商的逻辑,比如:
// window.location.href = 'https://your-auth-provider.com/login?redirect_uri=https://your-domain.com/home';

步骤2:首页覆盖Adobe的r变量

在首页的Adobe跟踪代码初始化后、发送页面视图前,读取Cookie并修改r变量:

// 封装一个读取Cookie的小函数
function getOriginalReferrer() {
  const cookieMatch = document.cookie.split('; ').find(row => row.startsWith('originalReferrer='));
  return cookieMatch ? decodeURIComponent(cookieMatch.split('=')[1]) : '';
}

// 初始化Adobe Analytics实例
var s = s_gi('你的报表套件ID');

// 读取原始引荐并覆盖r变量
const originalRef = getOriginalReferrer();
if (originalRef && originalRef !== 'direct') {
  s.r = originalRef;
}

// 发送页面视图跟踪
s.t();

方案二:通过URL参数传递原始引荐

如果你的认证流程允许在跳转URL里附加自定义参数,可以把原始引荐作为参数传到认证域,再在认证成功后带回首页,从URL参数里读取并设置r变量。

步骤1:着陆页跳转时附加参数

在着陆页跳转认证时,把原始引荐拼到跳转URL的参数里:

const originalRef = encodeURIComponent(document.referrer || 'direct');
// 把original_ref参数附加到认证跳转URL的redirect_uri后面
const redirectUri = `https://your-domain.com/home?original_ref=${originalRef}`;
const authUrl = `https://your-auth-provider.com/login?redirect_uri=${encodeURIComponent(redirectUri)}`;
window.location.href = authUrl;

步骤2:首页读取URL参数并覆盖r变量

在首页的跟踪代码里,读取URL参数并修改r变量:

// 封装读取URL参数的函数
function getUrlParam(paramName) {
  return new URLSearchParams(window.location.search).get(paramName);
}

// 初始化Adobe实例
var s = s_gi('你的报表套件ID');

// 读取原始引荐参数
const originalRef = getUrlParam('original_ref');
if (originalRef) {
  s.r = decodeURIComponent(originalRef);
  // 可选:用replaceState清除URL里的参数,避免影响后续页面跟踪
  window.history.replaceState({}, document.title, window.location.pathname);
}

// 发送页面视图
s.t();

注意事项

  • 测试前一定要清除浏览器的Cookie和缓存,确保每次测试都是全新的会话,避免旧数据干扰。
  • 如果你的站点有多个环境(测试/生产),要确保Cookie的作用域和URL参数的传递在对应环境下正常工作。
  • 对于direct访问的用户,不要修改r变量,保持Adobe的默认逻辑即可。

内容的提问来源于stack exchange,提问作者Rohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:23:14