Назначение трекинг-кода
Трекинг-код — это код на языке JavaScript, который необходимо разместить на сайте.
Трекинг-код регистрирует целевое действие пользователя на вашем сайте и отправляет в статистику Admitad Partner Network. Когда трекинг-код сработает, серверу Admitad Partner Network будет отправлен запрос с информацией о целевом действии (номер заказа, сумма заказа и другие данные).
Мы не рекомендуем использовать контейнер Google Tag Manager (GTM) для интеграции трекинг-кода, поскольку он уязвим для блокировки расширениями. Если у вас есть возможность, воспользуйтесь стандартным методом интеграции через трекинг-код.
Admitad Partner Network не осуществляет техническую поддержку данной платформы и не несет ответственность за программы, которые пострадали в результате использования GTM.
Кроме того, трекинг-код отвечает за дедупликацию заказов и crossdevice трекинг.
Обратите внимание:
- При обновлении сайта необходимо убедиться, что код не был удален и продолжает работать.
- Если у вас имеется мобильная версия сайта или мобильное приложение, формы быстрого заказа или заказа в 1 клик, они также должны быть проинтегрированы.
Ссылка перехода Admitad Partner Network
Для начала работы с Admitad Partner Network предоставьте ссылку перехода* на ваш сайт, включающую все необходимые вам GET-параметры и UTM-метки.
Пример ссылки для перехода
https://site.ru/?utm_source=admitad&utm_medium=cpa
На основании ссылки перехода будут сгенерированы партнерские ссылки для наших веб-мастеров. В дальнейшем веб-мастера будут размещать партнерские ссылки на своих ресурсах для привлечения трафика на ваш сайт.
*Ссылок перехода может быть и несколько, но только одна из них будет основной ссылкой перехода в программе (по умолчанию).
Установка трекинг-кода в Google Tag Manager
Здесь и далее будет использоваться сокращение GTM вместо Google Tag Manager.
Данная инструкция последовательно описывает шаги, которые нужно совершить для размещения трекинг-кода Admitad Partner Network в GTM. Инструкция не является законченной реализацией, а лишь служит ее демонстрацией. Все указанные в инструкции переменные, макросы, правила и теги также являются примером.
Дополнительную помощь можно найти на страницах сообщества разработчиков тегов Google.
Чтобы разместить трекинг-код Admitad Partner Network в GTM, выполните следующие шаги:
- зарегистрируйтесь и подключите GTM;
- инициализируйте уровень данных и настройте переменные;
- настройте триггеры;
- настройте теги;
- настройте передачу уникальных промокодов.
Регистрация и подключение GTM
Для доступа к GTM вам необходима учетная запись Google. Если у вас ее нет, создайте новую учетную запись Google на https://accounts.google.com. Авторизуйтесь на сайте GTM https://tagmanager.google.com.
На стартовой странице нажмите «Создать аккаунт». Введите имя аккаунта и нажмите «Далее».
Создайте контейнер GTM для вашего веб-сайта. Имя контейнера может быть произвольным.
После принятия пользовательского соглашения вы увидите код для подключения GTM на ваш сайт.
Разместите его на вашем сайте в соответствии с инструкцией в тегах <head> и <body>.
Теперь можно переходить к настройке тегов, переменных и триггеров.
Инициализация уровня данных и настройка переменных
Для передачи данных о заказе внутрь GTM используется специальный объект dataLayer. Подробнее про использование dataLayer можно прочитать тут.
Инициализируйте dataLayer на странице «Спасибо за покупку» вашего сайта выше места подключения контейнера GTM. В данном примере использован расширенный формат Google Analytics ecommerce.
<script> window.dataLayer = window.dataLayer || []; dataLayer.push({ "transactionId": "sk1006", // внутренний номер заказа (не более 100 символов) "transactionChannel": "adm", // параметр дедупликации (по умолчанию для Admitad Partner Network) "transactionAction": "1", // код целевого действия (определяется при интеграции) "transactionProducts": [{ "sku": "1354471145550", // внутренний код продукта (не более 100 символов) "tariff": "2", // код тарифа (определяется при интеграции) "price": "300.00", // цена товара "priceCurrency": "RUB", // код валюты ISO-4217 alfa-3 "quantity": "2" // количество товара }, { "sku": "1354471047246", "tariff": "2", "price": "500.00", "priceCurrency": "RUB", "quantity": "1" }] }); </script>
Для настройки переменных GTM перейдите в меню «Переменные» в рабочей области и нажмите «Создать».
Выберите тип переменной «Переменная уровня данных».
Задайте имя переменной уровня данных, версию уровня данных и значение по умолчанию. Сохраните переменную.
При создании переменных руководствуйтесь таблицей ниже.
Имя переменной dataLayer | Имя переменной уровня данных | Версия dataLayer | Значение по умолчанию |
transactionId | orderNumber | Version 2 | |
transactionChannel | broker | Version 2 | adm |
transactionAction | category | Version 2 | |
transactionProducts | transactionProducts | Version 2 |
У вас должен получиться следующий список переменных.
Настройка триггеров
Для настройки триггеров перейдите в меню «Триггеры» в рабочей области.
Создайте триггер типа «Окно загружено».
Выберите опцию «Некоторые события "Окно загружено"». В примере ниже страница будет определена как «Спасибо за покупку», если в ее URL содержится подстрока «thank_you». Добавьте аналогичное правило для вашего сайта.
Сохраните триггер с именем «TagTag conversion».
Создайте еще один триггер типа «Просмотр страницы — Окно загружено». Выберите опцию «Все события "Окно загружено"». Сохраните триггер с именем «TagTag common».
Должен получиться следующий список триггеров.
Настройка тегов
Для настройки тегов перейдите в меню «Теги» в рабочей области.
Создайте тег типа «Пользовательский HTML».
Вставьте в окно конфигурации тега следующий код. Код, размещенный в атрибуте onerror, предотвращает ошибочное блокирование загрузки скрипта блокировщиками рекламы и антивирусами.
-
<script src="https://www.artfut.com/static/tagtag.min.js?campaign_code={your_campaign_code}" async onerror='var self = this;window.ADMITAD=window.ADMITAD||{},ADMITAD.Helpers=ADMITAD.Helpers||{}, ADMITAD.Helpers.generateDomains=function(){for(var e=new Date,n=Math.floor(new Date(2020,e.getMonth(), e.getDate()).setUTCHours(0,0,0,0)/1e3),t=parseInt(1e12*(Math.sin(n)+1)).toString(30),i=["de"], o=[],a=0;a<i.length;++a)o.push({domain:t+"."+i[a],name:t});return o}, ADMITAD.Helpers.findTodaysDomain=function(e){function n(){var o=new XMLHttpRequest,a=i[t].domain, D="https://"+a+"/";o.open("HEAD",D,!0),o.onload=function(){setTimeout(e,0,i[t])}, o.onerror=function(){++t<i.length?setTimeout(n,0):setTimeout(e,0,void 0)}, o.send()}var t=0,i=ADMITAD.Helpers.generateDomains();n()},window.ADMITAD=window.ADMITAD||{}, ADMITAD.Helpers.findTodaysDomain(function(e){if(window.ADMITAD.dynamic=e,window.ADMITAD.dynamic) {var n=function(){return function(){return self.src?self:""}}(),t=n(), i=(/campaign_code=([^&]+)/.exec(t.src)||[])[1]||"";t.parentNode.removeChild(t); var o=document.getElementsByTagName("head")[0],a=document.createElement("script"); a.src="https://www."+window.ADMITAD.dynamic.domain+"/static/"+window.ADMITAD.dynamic.name.slice(1) +window.ADMITAD.dynamic.name.slice(0,1)+".min.js?campaign_code="+i,o.appendChild(a)}});'></script>
Не забудьте изменить значение {your_campaign_code} на полученное при начале интеграции.
Теперь обратите внимание на раздел конфигурации триггеров ниже окна конфигурации тегов.
Задайте триггер активации «TagTag common» и триггер исключения «TagTag conversion» для созданного тега.
Сохраните тег с именем «TagTag common».
Создайте еще один тег типа «Пользовательский HTML». Вставьте в окно конфигурации тега следующий код.
-
<script src="https://www.artfut.com/static/tagtag.min.js?campaign_code={your_campaign_code}" onerror='var self = this;window.ADMITAD=window.ADMITAD||{},ADMITAD.Helpers=ADMITAD.Helpers||{}, ADMITAD.Helpers.generateDomains=function(){for(var e=new Date,n=Math.floor(new Date(2020,e.getMonth(), e.getDate()).setUTCHours(0,0,0,0)/1e3),t=parseInt(1e12*(Math.sin(n)+1)).toString(30),i=["de"], o=[],a=0;a<i.length;++a)o.push({domain:t+"."+i[a],name:t});return o}, ADMITAD.Helpers.findTodaysDomain=function(e){function n(){var o=new XMLHttpRequest, a=i[t].domain,D="https://"+a+"/";o.open("HEAD",D,!0),o.onload=function(){setTimeout(e,0,i[t])}, o.onerror=function(){++t<i.length?setTimeout(n,0):setTimeout(e,0,void 0)}, o.send()}var t=0,i=ADMITAD.Helpers.generateDomains();n()},window.ADMITAD=window.ADMITAD||{}, ADMITAD.Helpers.findTodaysDomain(function(e){if(window.ADMITAD.dynamic=e, window.ADMITAD.dynamic){var n=function(){return function(){return self.src?self:""}}(), t=n(),i=(/campaign_code=([^&]+)/.exec(t.src)||[])[1]||"";t.parentNode.removeChild(t); var o=document.getElementsByTagName("head")[0],a=document.createElement("script"); a.src="https://www."+window.ADMITAD.dynamic.domain+"/static/"+window.ADMITAD.dynamic.name.slice(1)+ window.ADMITAD.dynamic.name.slice(0,1)+".min.js?campaign_code="+i,o.appendChild(a)}});'></script> <script type="text/javascript"> ADMITAD = window.ADMITAD || {}; ADMITAD.Invoice = ADMITAD.Invoice || {}; ADMITAD.Invoice.broker = '{{broker}}'; // место подстановки переменной transactionChannel ADMITAD.Invoice.category = '{{category}}'; // место подстановки переменной transactionAction var orderedItem = []; var positions = {{transactionProducts}}; // место подстановки переменной transactionProducts for (i = 0; i < positions.length; ++i) { orderedItem.push({ Product: { productID: positions[i]['sku'], category: positions[i]['tariff'], price: positions[i]['price'], priceCurrency: positions[i]['priceCurrency'] }, orderQuantity: positions[i]['quantity'], additionalType: "sale" }); } ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || []; ADMITAD.Invoice.referencesOrder.push({ orderNumber: '{{orderNumber}}', // место подстановки переменной transactionId orderedItem: orderedItem }); </script>
Не забудьте изменить значение {your_campaign_code} на полученное при начале интеграции.
Убедитесь, что сможете найти в своей CMS заказ по значению orderNumber — по нему в дальнейшем будет проводиться сверка.
Задайте триггер активации «TagTag conversion» для созданного тега.
Сохраните тег с именем «TagTag conversion».
Должен получиться следующий список тегов.
Настройка передачи уникальных промокодов
Уникальные промокоды — промокоды, привязанные к конкретному веб-мастеру. Подробнее о них здесь.
Чтобы использовать уникальные промокоды:
1. Запишите значение промокода в dataLayer GTM (у вас структура dataLayer может отличаться).
-
<script> window.dataLayer = window.dataLayer || []; dataLayer.push({ "transactionId": "sk1006", "transactionChannel": "adm", "transactionAction": "1", "transactionProducts": [{ "sku": "1354471145550", "tariff": "2", "price": "300.00", "priceCurrency": "RUB", "quantity": "2" }], "transactionPromocode": "ADMPROMO" // значение промокода }); </script>
При передаче заказа с уникальным промокодом всегда устанавливайте значение параметра дедупликации «adm», т.к. этот заказ принадлежит Admitad Partner Network.
При передаче заказа с обычным промокодом (неуникальным) используйте стандартную настройку дедупликации.
Пример кода в CMS
2. Добавьте переменную типа Data Layer Variable.
3. Добавьте переменную в тег конверсии.
-
// добавление товарных позиций к заказу ADMITAD.Invoice.referencesOrder.push({ orderNumber: "{{orderNumber}}", // внутренний номер заказа (не более 100 символов) discountCode: "{{promocode}}", // код уникального промокода orderedItem: orderedItem });
Пример кода в теге
4. Не забудьте опубликовать изменения GTM на сайт.
5. Убедитесь, что промокод уходит в запросе от TagTag.
Дедупликация заказов
Если вы работаете только с Admitad Partner Network, оставьте значение параметра дедупликации по умолчанию и пропустите этот раздел.
Если вы сотрудничаете более чем с одним платным источником, настройте дедупликацию заказов на вашей стороне для настройки передачи заказов в соответствии с моделью аттрибуции Last Paid Click:
1. Сообщите техническому специалисту Admitad Partner Network, какой GET-параметр из страницы входа на сайт вы будете использовать для дедупликации. По умолчанию параметр не добавляется.
2. Создайте cookie дедупликации со значением источника. Cookie должны храниться в течение всего срока по договору (по умолчанию 90 дней).
3. Определите значение параметра дедупликации transactionChannel из cookie при передаче данных о заказе в параметре dataLayer. Это сообщит нам, какому источнику принадлежит заказ. Для заказов Admitad Partner Network используйте значение параметра дедупликации adm. Заказы со значениями других платных источников не будут создаваться. Заказы с неопределенным источником будут создаваться, если на другом устройстве или браузере этого пользователя был визит через веб-мастера Admitad Partner Network в течение времени жизни cookie.
Пример кода с использованием cookie для хранения источника перехода
-
// имя cookie для хранения источника // если используется другое имя, укажите его var cookie_name = 'deduplication_cookie'; // число дней жизни cookie var days_to_store = 90; // ожидаемое значение deduplication_cookie для Admitad Partner Network var deduplication_cookie_value = 'admitad'; // имя GET параметра для дедупликации // если у вас используется другой параметр, укажите его имя var channel_name = 'deduplication_channel'; // функция для получения источника из GET параметра getSourceParamFromUri = function() { var pattern = channel_name + '=([^&]+)'; var re = new RegExp(pattern); return (re.exec(document.location.search) || [])[1] || ''; }; // функция для получения источника из cookie с именем cookie_name getSourceCookie = function() { var matches = document.cookie.match(new RegExp( "(?:^|; )" + cookie_name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); return matches ? decodeURIComponent(matches[1]) : undefined; }; // функция для записи источника в cookie с именем cookie_name setSourceCookie = function() { var param = getSourceParamFromUri(); if (!param) { return; } var period = days_to_store * 60 * 60 * 24 * 1000; // в секундах var expiresDate = new Date((period) + +new Date); var cookieString = cookie_name + '=' + param + '; path=/; expires=' + expiresDate.toGMTString(); document.cookie = cookieString; document.cookie = cookieString + '; domain=.' + location.host; }; // запись cookie setSourceCookie(); // определение канала для Admitad Partner Network if (!getSourceCookie(cookie_name)) { dataLayer.push({ "transactionChannel": 'na' }); } else if (getSourceCookie(cookie_name) != deduplication_cookie_value) { dataLayer.push({ "transactionChannel": getSourceCookie(cookie_name) }); } else { dataLayer.push({ "transactionChannel": 'adm' }); }
Crossdevice трекинг
Crossdevice трекинг позволяет веб-мастеру получить вознаграждение за заказ в том случае, когда пользователь использует несколько браузеров или устройств. Это повысит привлекательность программы для веб-мастеров, которые, к примеру, привлекают мобильный трафик.
Функция работает по умолчанию. При посещении сайта рекламодателя мы собираем уникальный анонимный профиль пользователя. При заказе мы сопоставляем данные в рамках профиля и при наличии admitad_uid создаем заказ. Наиболее корректно функция работает при настроенной дедупликации. Чтобы помочь Admitad Partner Network в точном определении пользователя, вы можете явно передавать уникальный идентификатор пользователя в объекте уровня данных dataLayer. В его качестве может выступать электронная почта или логин зарегистрированного на сайте пользователя. Уникальный идентификатор пользователя имеет приоритет над анонимным профилем: если вы объявляете accountID, то трекинг-код не передает данные анонимного профиля в запросе к Admitad Partner Network — используется ваше значение.
При работе через GTM передайте идентификатор пользователя в объект уровня данных dataLayer.
dataLayer.push({
"transactionCustomer": "customer@email.ru"; // e-mail пользователя
});
Admitad Partner Network не хранит значение этого параметра и не пересылает его в открытом виде. Значение переменной необратимо хэшируется Sha256 с солью и впоследствии используется на стороне Admitad Partner Network в качестве уникального идентификатора заказов пользователя.
Добавьте новую переменную accountID и свяжите с переменной уровня данных transactionCustomer.
Откройте окно конфигурации тега «TagTag conversion» и добавьте строку.
ADMITAD.Invoice.accountId = '{{accountId}}'; // место подстановки переменной transactionCustomer
Сохраните тег «TagTag conversion».
Затем добавьте ту же строку в тег «TagTag common» и сохраните его.
Тестирование трекинга
Убедитесь, что вы правильно подключили трекинг-код по инструкции, в том числе и на мобильной версии сайта (если есть).
После этого свяжитесь с отделом трекинга Admitad Partner Network и запросите партнерскую ссылку для тестирования.
Порядок тестирования
Если у вашей программы несколько целевых действий (например, «Регистрация пользователя» и «Оплаченный заказ»), необходимо протестировать каждое из них.
1. Перейдите по тестовой партнерской ссылке на ваш сайт. Убедитесь что в строке адреса есть все необходимые вам GET-параметры и UTM-метки.
2. Выполните целевое действие на сайте (например, совершите покупку товара).
3. Если трекинг настроен корректно, действие появится в статистике Admitad Partner Network (Личный кабинет → Статистика → По действиям).
4. Проверьте соответствие имени целевого действия, номера и суммы тестового заказа и данных в статистике.
После успешного окончания тестирования сообщите об этом техническому специалисту Admitad Partner Network. Программа будет поставлена на подготовку к запуску.
Проблемы при тестировании
Если действие не появилось в статистике, возможно была допущена ошибка при установке и настройке трекинг-кода.
Проблема | Возможное решение |
Скрипт не срабатывает. Нет запросов от скрипта на вкладке Network браузера. | Неверно подключен скрипт. Выполните требования раздела Установка трекинг-кода в Google Tag Manager. |
Скрипт не срабатывает. Есть ошибки в консоли браузера. | Выполните требования раздела Установка трекинг-кода в Google Tag Manager. Проверьте синтаксис JavaScript в тегах «TagTag common» и «TagTag conversion». |
Скрипт срабатывает. Ошибок в консоли браузера нет. Заказ в статистике не появился. | Параметр campaign_code имеет неверное значение или отсутствует. Убедитесь, что значение campaign_code совпадает с тем, которое отправлял технический специалист Admitad Partner Network в письме при начале интеграции. |
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Заказ в статистике не появился. | Чтобы выявить ошибку, перейдите в журнал запросов (Инструменты → Журнал запросов). Текст ошибки указан в поле Результат. Исправьте ошибку и проведите повторный тест. Инструкцию по разделу «Запросы на платеж» можно найти здесь. |
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Ошибок в разделе Журнал запросов нет. Заказ в статистике не появился. | На стороне Admitad Partner Network временные технические ограничения (задержка логов), проверьте, появился ли заказ через час. |
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Ошибок в разделе Журнал запросов нет. Заказ в статистике не появился через час. | Обратитесь к специалисту Admitad Partner Network за помощью. |