Извлеките информацию о файлах cookie кампании Google Analytics и вставьте поле формы запроса.Это возможно? - PullRequest
2 голосов
/ 01 декабря 2011

Я уже давно пользуюсь Google Analytics.Для одного из моих клиентов мы широко используем отслеживание кампаний.А недавно мы начали собирать аналитику Multi Channel Funnel.Основная причина его использования заключается в том, что мы можем отслеживать, из каких кампаний приходят люди, а затем, когда кто-то заполняет форму запроса, у нас установлена ​​цель (страница с благодарностью за запрос), поэтому Google Analytics может связать цель скампания (-и), которая позволила этому человеку перейти на страницу благодарности.

Мой клиент спросил меня сегодня: «Эта информация замечательная и чрезвычайно ценная.Что могло бы сделать это еще лучше, если бы, когда посетитель пришел к форме запроса, был способ извлечь информацию о кампании из cookie-файла аналитики и поместить ее в скрытое поле в форме ... так, когда форма отправляется, продажичеловек, который его получает, видит не только информацию, заполненную посетителем, но и поле, в котором указано, какие кампании позволяют этому человеку в конечном итоге заполнить форму запроса ». Это не дословно, но, надеюсь, вы понимаете, что онипросят.Я знаю, что файлы cookie должны отслеживать все кампании, потому что Google Analytics отображает эту информацию в отчетах.Эта информация автоматически извлекает эту информацию, когда кто-то попадает на страницу формы запроса, и помещает ее в скрытое поле (они не хотят, чтобы покупатель видел эту информацию), чтобы отдел продаж мог увидеть ее, которая действительно завершит систему отчетов.

Если кто-то знает, как это сделать или имеет какие-то идеи, которые были бы удивительными.

Ответы [ 2 ]

8 голосов
/ 01 декабря 2011

Да, это возможно.

    var GATrafficSource = (function(){
            var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
            var vals = {};
            for (var i = 0; i < pairs.length; i++) {
                var temp = pairs[i].split('=');
                vals[temp[0]] = temp[1];
            }
        return  {
            'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
            'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
            'utm_campaign': vals.utmccn,
            'utm_content': vals.utmcct,
            'utm_term': vals.utmctr
        };
    }());

Затем вы можете поместить любые переменные кампании в скрытые поля.

Например, если у вас есть:

<input type="hidden" name="utm_source" class="gacampaign" id="utm_source">

Вы можете заполнить его так:

document.getElementById("utm_source").value = GATrafficSource.utm_source;
0 голосов
/ 28 января 2016

Найден этот поток при отладке устаревшего кода (который, возможно, фактически скопировал / вставил существующий ответ этого потока!) .

Я подумал, что добавлю несколько комментариев о связанной проблеме, которая привела меня сюда, чтобы никто другой с такой же проблемой не оказался здесь.

Код из ответа @ Yahel работал нормально, как написано, но когда я переписывал его в новый контекст, он иногда выдавал ошибку, которая убивала весь код, вызывающий этот контекст в Chrome, когда у человека не было любые файлы cookie Google Analytics на их компьютере.

Я преобразовал его в следующий код:

function getGATS(){
    var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie)||[]).slice(1).pop().split('.').slice(4).join('.').split('|');
    var vals = {};
    for (var i = 0; i < pairs.length; i++) {
        var temp = pairs[i].split('=');
        vals[temp[0]] = temp[1];
    }
    return {
        'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
        'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
        'utm_campaign': vals.utmccn,
        'utm_content': vals.utmcct,
        'utm_term': vals.utmctr
    };
}

Затем другая функция «добытчика» сделала это:

            return $.extend({}, {
                    'is_constituent_checked' : $('#IsConstituent').is(':checked'),
                    'statuses' : getStatusesString()
                }, getGATS());

Этот "getter" был вызван функцией "addHiddenInputs ()", которая перебрала его возвращаемое значение и добавила эти входы / значения в DOM. (Это для последующей обработки формы "onSubmit".)

=======

Оказывается, что когда пользователь, в среде Chrome которого не было файлов cookie GA ("alert (document.cookies);" не отображал значения "utm") пытался отправить мою форму, весь этот вызов addHiddenInputs () не смог выполнить свою работу.

Это потому, что первый вызов ".split ()" для "(/ (?: ^ |;) __ utmz = ([^;] ) /. Exec (document.cookie) | | []). slice (1) .pop () "* не работало, когда этот фрагмент оценивался как« неопределенный »(как в случае, когда нет файлов cookie Google Analytics).

Помещение тела функции внутри блока try {} и добавление «catch (err) {...}» (в моем случае, с «return {};» в качестве «» ... ") решил проблему.

...