以编程方式确定用户是否通过AdWords链接到达

时间:2017-06-15 18:39:47

标签: javascript cookies

如果他们是通过AdWords链接到达的,我想将显示给我们网站的电子邮件地址更改为最终用户。我作为广告客户的基本理解是Google会检查一个cookie以注册“转化”操作,所以我想知道我是否可以使用客户端JavaScript以编程方式检查它?

我知道,一般来说,您可以通过AdWords本身将一些数据附加到着陆网址,但我担心在他们转移到另一个内部网页时会消失。因此,如果我显示的电子邮件地址从info@example.com转到adwords@example.com,那么只要用户导航到网站上的其他网页,它就会更改回来吗?

我正在追踪mailto:个链接上的点击事件,但我注意到有很多线索进来,人们必须手动复制/粘贴或键入显示的电子邮件地址,因为没有相应的转换这些电子邮件主管的AdWords。

我希望能够在页面加载时运行一些脚本并说出类似的内容:

if (adwordsVistor) {
  $('.email-link').html('adwords@example.com');
}

我知道AdWords本身会使用Google转发号码(使用部分JavaScript更改您网站上的任何电话链接),所以我想知道我是否可以为电子邮件地址创建类似的功能。

1 个答案:

答案 0 :(得分:2)

诚然,我对AdWords一无所知。从JavaScript编程的角度来看,这应该不难。

  

我知道,一般来说,您可以通过AdWords本身将一些数据附加到着陆网址

做了一些研究我发现了这篇文章Intro to UTM Parameters and Best Practices。这引出了我的Google文章Custom campaigns

我们可以包含五个UTM参数,其中三个是必需的。 我们设置好后,我们可以通过两种基本方式跟踪访问者在离开目标网页后通过AdWords自带的事实。

  1. 捕获服务器上的传入UTM参数,并设置一个SESSION值,让所有其他网页在请求时知道用户通过AdWords访问该网站时启动此“访问”(SESSION值取决于您正在使用的服务器技术,但有详细记录。)

    此时(再次取决于服务器技术)我们可以在将页面源发送到浏览器之前修改我们所有的联系电子邮件地址(或其他任何内容)。这意味着在该会话的页面的实际源中永远不会出现任何其他版本的电子邮件地址(无法“查看页面源”并查看以前的电子邮件地址)。

  2. 在浏览器中捕获传入的UTM参数,并使用javascript“记住”通过AdWords启动访问并相应地修改电子邮件地址。由于这是您的要求,本答复的其余部分将重点关注此方法。

  3. Javscipt答案

    第1步:

    从网址获取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回来了。

    第3步:

    检索cookie。

    有很多帖子讨论使用带有javascript的cookie。对于此示例,我们将使用此post中的简单getCookie函数。

    第4步:TLDR;

    全部放在一起。

    现在我们已经把所有的东西放在一起了。将以下代码放入每个页面中包含的javascript文件或脚本块中。 同时确保包含上面提到的URLSearchParams多面体(这样我们就可以在Bill叔叔的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');
            }
        }
    });
    

    编辑:

    使用不同的电子邮件添加了不同的广告系列