Недавно столкнулся с задачей интеграции партнерки на сайт, используя Google Tag Manager. По сути ничего сложного — нужно загрузить один пиксель на всех страницах сайта и второй пиксель на целевое действие пользователя, в данном случае на отправку формы. Нюанс лишь в том, что нужно учитывать атрибуцию трафика: партнерка работает по модели «Last Paid Click». Это означает что при повторных посещениях с бесплатных источников трафика, пиксель партнерки все равно должен сработать при отправке формы. Решения не нагуглилось, поэтому опишу подробнее.
- Создаем переменную в которую будет записываться значение метки utm_source
- Аналогично созадим переменнную с идентификатором партнерки, в данном случае это click_id
- Создаем тег типа Custom HTML в котором запишем в куку значением из utm_source
<script>
В качестве триггера выбираем pageview с дополнительным условием utm_source не должно быть равно значению undefined
var cookieName = "utm_source";
var cookieValue = {{utm_source}};
var cookiePath = "/";
var expirationTime = 2592000; // 1 месяц в секундах
expirationTime = expirationTime * 1000; // конвертация в миллисекунды
var date = new Date();
var dateTimeNow = date.getTime();
date.setTime(dateTimeNow + expirationTime);
var expirationTime = date.toUTCString();
document.cookie = cookieName+"="+cookieValue+"; expires="+expirationTime+"; path="+cookiePath;
</script> - Создаю аналогичный тег с идентификатором партнерки
<script>
Триггер pageview с дополнительным условием что переменная utm_source равна cityads.
var cookieName = "click_id";
var cookieValue = {{click_id cityads url}};
var cookiePath = "/";
var expirationTime = 2592000; // 1 месяц в секундах
expirationTime = expirationTime * 1000; // конвертация в миллисекунды
var date = new Date();
var dateTimeNow = date.getTime();
date.setTime(dateTimeNow + expirationTime);
var expirationTime = date.toUTCString();
document.cookie = cookieName+"="+cookieValue+"; expires="+expirationTime+"; path="+cookiePath;
</script> - Теперь нам нужно создать еще две переменные click_id и utm_source только значения они должны брать не из url а из созданных нами кук. Переменная типа 1st-Party Cookie ставим имена созданных нами кук
- Остается загрузить пиксель на целевое действие. Тег также Custom HTML. Код пикселя даст ваш менеджер в партнерке. В этот код подставляется значение переменной из предыдущего шага с идентификатором партнерки. Триггером служит pageview с дополнительными условиями Page URL равно посадочной странице куда пользователь попадает после успешной отправки формы, и значение utm_source из переменной из куки равно cityads
Таким образом получается что при первом входе на сайт с метками партнерки, их значение запишется в куки. Если пользователь впоследствии придет с другого источника с иными метками, то значение utm_source в куке обновится и тогда при отправке формы пиксель не загрузится. Тоже самое произойдет если срок действия куки истечет.
Если же пользователь придет на сайт без меток, то кука utm_source не будет перезаписана и тогда при отправке формы пиксель будет загружен.
В следующем посте расскажу как аналогичную задачу для ecom магазина решал через отправку postback запросов
Информация очень интересная
Олег, спасибо за статью.
Если отслеживать событие успешного оформления заказа, я так понимаю, поменяется только триггер?
Пункт 2 ваших действий «Аналогично созадим переменнную с идентификатором партнерки, в данном случае это click_id » — применяется переменная с типом URL, тип компонента — Запрос , но ключ запроса вместо utm_source будет click_id, Верно?
Какие еще могут быть отличия от предложенного Вами алгоритма для отслеживания успешного оформления заказа?
Этот триггер прослушивает submit формы и когда происходит конверсия, передает событие gtm.formSubmit. Когда срабатывает событие gtm.formSubmit можно, например, отправить событие в Google Analytics. Повторяем действие с отправкой формы, но уже без заполненных полей: если триггер не срабатывает, значит программисты молодцы и можем настраивать отправку форм через данный функционал.