诚然,我对 AdWords 一无所知。然而,从 javascript 编程的角度来看,这应该不难。
我知道,一般来说,您可以通过 AdWords 本身将一些数据附加到目标网址
做了一些研究,我发现了这篇文章Intro to UTM Parameters and Best Practices。这将我引向 Google 的文章 Custom campaigns。
我们可以包含五个 UTM 参数,其中三个是必需的。 设置完成后,我们可以通过两种基本方式使用它们来跟踪访问者在离开着陆页后是通过 AdWords 本身访问的事实。
-
在服务器上捕获传入的 UTM 参数并设置一个 SESSION 值,让所有其他页面在请求时知道此“访问”是由通过 AdWords 访问网站的用户开始的(SESSION 值取决于您使用的服务器技术正在使用,但有据可查)。
此时(同样取决于服务器技术)我们可以在将页面源发送到浏览器之前修改我们所有的联系电子邮件地址(或其他任何内容)。这意味着该会话的页面的实际源中永远不会出现任何其他版本的电子邮件地址(无法“查看页面源”并查看电子邮件地址曾经是什么)。
-
在浏览器中捕获传入的 UTM 参数并使用 javascript 来“记住”访问是通过 AdWords 开始的,并相应地修改电子邮件地址。由于这是您要求的,因此此答案的其余部分将重点介绍此方法。
Javscipt 答案
第 1 步:
从 URL 中获取 UTM 参数。
为此,我们将使用URLSearchParams API。 Safari、Edge 和 IE 的稳定版本有一个polyfill。由于 utm_campaign 是必需参数,因此我们可以依靠它的存在(或不存在)来了解访问者是否通过 AdWords 到达这里,如下所示:
var params = new URLSearchParams(location.search),
adwordsVistor = !!params.get('utm_campaign'); // adwordsVistor is now a boolean
现在您的 if 声明有效:
if (adwordsVistor) {
$('.email-link').html('adwords@example.com');
}
但是所有其他页面呢?
第 2 步:
“记住”adwordsVistor 的状态。
为此,我们将使用Document.cookie。我们将设置一个 cookie 来记住 adwordsVistor 的状态,如下所示:
document.cookie = 'adwordsVistor=' + adwordsVistor;
由于我们没有在 cookie 上设置过期时间,它是一个会话 cookie,将在浏览器关闭时被删除。这很重要,因为我们可能想知道用户是否不是通过 AdWords 回来的。
第三步:
正在检索 cookie。
有很多帖子讨论在 javascript 中使用 cookie。对于此示例,我们将使用此 post 中的简单 getCookie 函数。
第 4 步:TLDR;
把它们放在一起。
现在我们已经有了所有的部分,让我们把它们放在一起。将以下代码放入每个页面中包含的 javascript 文件或脚本块中。 还要确保包含上面提到的URLSearchParams polyfil(以便我们在比尔叔叔的 IE 中工作)。
function getCookie(name) {
var start = document.cookie.indexOf(name + "="),
len = start + name.length + 1;
if ((!start) && (name != document.cookie.substring(0, name.length))) {
return null;
}
if (start == -1) return null;
var end = document.cookie.indexOf(';', len);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(len, end));
}
$(function() {
var params = new URLSearchParams(location.search),
avCookie = getCookie('adwordsVistor'),
adwordsVistor = !!params.get('utm_campaign') || !!avCookie; // adwordsVistor is now a boolean
document.cookie = 'adwordsVistor=' + adwordsVistor;
if (adwordsVistor) {
switch(avCookie) {
case 'campaign_1':
$('.email-link').html('campaign_1@example.com');
break;
case 'campaign_2':
$('.email-link').html('campaign_2@example.com');
break;
default:
$('.email-link').html('adwords@example.com');
}
}
});
编辑:
为不同的活动
添加了不同的电子邮件