Интеграция через трекинг-код

  • Обновлено

Назначение трекинг-кода

Трекинг-код — это код на языке JavaScript, который необходимо разместить на сайте.

Трекинг-код регистрирует целевое действие пользователя на вашем сайте и отправляет в статистику Admitad Affiliate. При срабатывании трекинг-кода серверу Admitad Affiliate будет отправлен запрос с информацией о целевом действии (номер заказа, сумма заказа и другие данные).

Если ваша компания относится к финансовому сегменту (банки, страховые и другие финансовых организации), то перейдите в статью «Интеграция через трекинг-код для финансовых программ».

Интеграция через трекинг-код 1

 

Кроме того, трекинг-код отвечает за дедупликацию заказов и crossdevice-трекинг.

Подключайте трекинг-код в теге <head> до всех остальных скриптов. Иначе пользователь может уйти со страницы раньше, чем сработает скрипт.

Не рекомендуется устанавливать скрипт в контейнере Google Tag Manager (GTM), так как GTM будет блокироваться популярными блокировщиками рекламы. Это может привеcти к потере заказов, расхождениям в статистике и проблемам при сверке.

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

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

Ссылка перехода Admitad Affiliate

Для начала работы с Admitad Affiliate предоставьте ссылку перехода на ваш сайт, включающую все необходимые вам GET параметры и UTM метки.

Пример ссылки для перехода

https://site.ru/?utm_source=admitad&utm_medium=cpa

На основании ссылки перехода будут сгенерированы партнерские ссылки для наших веб-мастеров. В дальнейшем веб-мастера будут размещать партнерские ссылки на своих ресурсах для привлечения трафика на ваш сайт.

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

Установка трекинг-кода

Для установки трекинг-кода подключите скрипт на все страницы сайта.

В процессе интеграции мы отправим вам значение {your_campaign_code}.

<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>

Код, размещенный в атрибуте onerror, предотвращает ошибочное блокирование загрузки скрипта блокировщиками рекламы и антивирусами.

Настройка передачи заказов

Передача информации о заказах

Если ваша компания работает с одной из крупных партнерских сетей, трекинг-код Admitad Affiliate может самостоятельно собирать информацию о заказах, используя уже настроенную интеграцию. Перейдите в раздел «Дедупликация заказов» и ознакомьтесь с примерами для иных партнерских сетей. Этот раздел можно пропустить, если вы нашли свою партнерскую сеть в примерах.

После того как вы подключите скрипт на все страницы, настройте передачу данных о заказах. Для этого на странице «Спасибо за покупку» добавьте код из примера ниже.

 

Пример кода для одного заказа с несколькими товарными позициями

Как правило, на странице «Спасибо за покупку» оформляется один заказ с уникальным номером. Для случая оформления нескольких заказов смотрите пример ниже.

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

{{value}} — место для подстановки реального значения переменной.

  • <script type="text/javascript">
    ADMITAD = window.ADMITAD || {};
    ADMITAD.Invoice = ADMITAD.Invoice || {};
    ADMITAD.Invoice.broker = 'adm';  // параметр дедупликации (по умолчанию для Admitad Affiliate)
    ADMITAD.Invoice.category = '1';  // код целевого действия (определяется при интеграции)
      
    var orderedItem = [];  // временный массив для товарных позиций
    
    // повторить для каждой товарной позиции в корзине
    orderedItem.push({
      Product: {
        productID: '{{product_id}}',  // внутренний код продукта (не более 100 символов, соответствует ID из товарного фида).
        category: '1',  // код тарифа (определяется при интеграции)
        price: '{{price}}',  // цена товара
        priceCurrency: 'RUB',  // код валюты ISO-4217 alfa-3
      },
      orderQuantity: '{{quantity}}',  // количество товара
      additionalType: 'sale'  // всегда sale
    });
    
    ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
    // добавление товарных позиций к заказу
    ADMITAD.Invoice.referencesOrder.push({
      orderNumber: '{{order number}}',  // внутренний номер заказа (не более 100 символов)
      orderedItem: orderedItem
    });
    
    // Важно! Если данные по заказу Admitad Affiliate подгружаются через AJAX раскомментируйте следующую строку.
    // ADMITAD.Tracking.processPositions();
    </script>

Убедитесь, что сможете найти в своей CMS заказ по значению orderNumber — по нему в дальнейшем будет проводиться сверка.

Пример кода для нескольких заказов

В примере ниже для упрощения понимания приведен код последовательного добавления заказов. На реальном сайте логичнее будет поместить его в цикл.

  • <script type="text/javascript">
    ADMITAD = window.ADMITAD || {};
    ADMITAD.Invoice = ADMITAD.Invoice || {};
    ADMITAD.Invoice.broker = 'adm';  // параметр дедупликации (по умолчанию для admitad)
    ADMITAD.Invoice.category = '1';  // код целевого действия (определяется при интеграции)
    
    /* добавление первого заказа */
    
    var orderedItems1 = [];  // временный массив для товарных позиций
    
    // повторить для каждой товарной позиции в корзине
    orderedItems1.push({
      Product: {
        productID: '{{product_id}}',  // внутренний код продукта (должен соответствовать ID из товарного фида)
        category: '1',  // код тарифа (определяется при интеграции)
        price: '{{price}}',  // цена товара
        priceCurrency: 'RUB',  // код валюты ISO-4217 alfa-3
      },
      orderQuantity: '{{quantity}}',  // количество товара
      additionalType: 'sale'  // тип заказа
    });
    
    ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
    // добавление товарных позиций к заказу
    ADMITAD.Invoice.referencesOrder.push({
      orderNumber: '{{order number}}',  // внутренний номер первого заказа
      orderedItem: orderedItems1
    });
    
    /* добавление второго заказа */
    
    var orderedItems2 = [];  // временный массив для товарных позиций
    
    // повторить для каждой товарной позиции в корзине
    orderedItems2.push({
      Product: {
        productID: '{{product_id}}',  // внутренний код продукта (должен соответствовать ID из товарного фида)
        category: '1',  // код тарифа (определяется при интеграции)
        price: '{{price}}',  // цена товара
        priceCurrency: 'RUB',  // код валюты ISO-4217 alfa-3
      },
      orderQuantity: '{{quantity}}',  // количество товара
      additionalType: 'sale'  // тип заказа
    });
    
    ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
    // добавление товарных позиций к заказу
    ADMITAD.Invoice.referencesOrder.push({
      orderNumber: '{{order number}}',  // внутренний номер второго заказа
      orderedItem: orderedItems2
    });
    // Важно! Если данные по заказу admitad подгружаются через AJAX, раскомментируйте этот блок кода.
    // ADMITAD.Tracking.processPositions();
    </script>

 

Настройка передачи заказов при использовании AJAX или формы покупки в 1 клик

Если данные по заказу Admitad Affiliate подгружаются через AJAX или вы используете на сайте формы покупки в 1 клик (быстрого заказа), добавьте непосредственно после кода сбора данных заказа следующий скрипт. Выше вы можете увидеть пример его использования в строке с комментарием «Важно!».

<script type="text/javascript">
  ADMITAD.Tracking.processPositions();
</script>

 

Настройка передачи уникальных промокодов

Уникальные промокоды — промокоды, закрепленные за конкретным веб-мастером. Подробнее о них здесь.

Если вы намерены работать с уникальными промокодами:

1. Убедитесь, что в форме оформления заказа на сайте присутствует поле «Промокод».

2. Запишите уникальный промокод из формы оформления заказа в параметр promocode.

ADMITAD.Invoice.referencesOrder = ADMITAD.Invoice.referencesOrder || [];
// добавление товарных позиций к заказу
ADMITAD.Invoice.referencesOrder.push({
  orderNumber: '{{order number}}',  // внутренний номер заказа (не более 100 символов)
  discountCode: '{{promocode}}',  // код уникального промокода
  orderedItem: orderedItem
});

3. При передаче заказа с уникальным промокодом всегда устанавливайте значение параметра дедупликации «adm», т.к. этот заказ принадлежит Admitad Affiliate.

ADMITAD.Invoice.broker = 'adm';


Логика атрибуции

Интеграция через трекинг-код 2

 

4. При передаче заказа с обычным промокодом (неуникальным) используйте стандартную настройку дедупликации

Дедупликация заказов

Если вы работаете только с Admitad Affiliate, оставьте значение параметра дедупликации по умолчанию и пропустите этот раздел.

Если вы сотрудничаете более чем с одним платным источником, настройте дедупликацию заказов на вашей стороне для настройки передачи заказов в соответствии с моделью аттрибуции Last Paid Click:

1. Сообщите техническому специалисту Admitad Affiliate, какой GET-параметр из страницы входа на сайт вы будете использовать для дедупликации. По умолчанию параметр не добавляется.

2. Создайте cookie дедупликации со значением источника. Cookie должны храниться в течение всего срока по договору (по умолчанию 90 дней).

3. Определите значение параметра дедупликации из cookie при передаче данных о заказе в параметре ADMITAD.Invoice.broker . Это сообщит нам, какому источнику принадлежит заказ. Для заказов Admitad Affiliate используйте значение параметра дедупликации adm. Заказы со значениями других платных источников не будут создаваться. Заказы с неопределённым источником будут создаваться, если на другом устройстве или браузере этого пользователя был визит через веб-мастера Admitad Affiliate в течение времени жизни cookie.

Пример кода с использованием cookie для хранения источника перехода

  • <script type="text/javascript">
    // имя cookie для хранения источника
    // если используется другое имя, укажите его
    var cookie_name = 'deduplication_cookie';
    // число дней жизни куки
    var days_to_store = 90;
    // ожидаемое значение deduplication_cookie для Admitad
    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;
    };
    
    // запись куки
    setSourceCookie();
    
    // определение канала для Admitad
    if (!getSourceCookie(cookie_name)) {
      ADMITAD.Invoice.broker = 'na';
    } else if (getSourceCookie(cookie_name) != deduplication_cookie_value) {
      ADMITAD.Invoice.broker = getSourceCookie(cookie_name);
    } else {
      ADMITAD.Invoice.broker = 'adm';
    }
    </script>


Примеры параметров дедупликации иных партнерских сетей

AWIN.Tracking.Sale.channel = 'adm';  // http://wiki.awin.com/index.php/Advertiser_Tracking_Guide/De-duplication
window.criteo_q.push({ event: 'trackTransaction', deduplication: 'adm', <...>); // https://support.criteo.com/hc/en-us/articles/205573701-Deduplication-Parameter

Если для интеграции с Admitad Affiliate используется трекинг-код другой партнерской сети, после его удаления интеграция с Admitad Affiliate также будет нарушена. Проинформируйте нас перед его удалением.

Crossdevice-трекинг

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

Функция работает по умолчанию. При посещении сайта рекламодателя мы собираем уникальный анонимный профиль пользователя. При заказе мы сопоставляем данные в рамках профиля и при наличии admitad_uid создаём заказ. Наиболее корректно функция работает при настроенной дедупликации.

Чтобы помочь Admitad Affiliate в точном определении пользователя, вы можете явно передавать уникальный идентификатор пользователя. В его качестве может выступать электронная почта или логин зарегистрированного на сайте пользователя. Уникальный идентификатор пользователя имеет приоритет над анонимным профилем: если вы объявляете accountId, то трекинг-код не передаёт данные анонимного профиля в запросе к Admitad Affiliate — используется ваше значение.

Вставьте сниппет ниже на страницы, где известен логин или email пользователя.

<script type="text/javascript">
   ADMITAD = window.ADMITAD || {};
   ADMITAD.Invoice = ADMITAD.Invoice || {};
   ADMITAD.Invoice.accountId = 'customer@email.ru'; // e-mail или логин пользователя в системе 
</script>

Admitad Affiliate не хранит значение этого параметра и не пересылает его в открытом виде.

Значение переменной необратимо хэшируется Sha256(ADMITAD.Invoice.accountId + salt) и впоследствии используется на стороне Admitad Affiliate в качестве уникального идентификатора заказов пользователя.

Такой идентификатор позволит определить, что заказ принадлежит определенному пользователю, даже если он перейдет на сайт по партнерской ссылке Admitad Affiliate на домашнем компьютере, а купит товар на мобильном устройстве по дороге на работу. Заказ не будет потерян и попадет в статистику Admitad Affiliate.

Тестирование трекинга

1. Убедитесь, что вы подключили трекинг-код и настроили передачу данных о заказе (в том числе и на мобильной версии сайта, если есть), всех формах быстрого заказа и заказа в 1 клик и пр.

В этом вам поможет расширение для Chrome TagTag Check — оно проверит, установили ли вы все необходимые для интеграции скрипты, параметры и cookie на страницах сайта, в т.ч. на странице «Спасибо за покупку».

Установить расширение можно по этой ссылке. Далее перейдите на сайт и откройте его. При правильно настроенной интеграции во всех полях будут стоять галочки. Если какой-то из обязательных элементов отсутствует или некорректен, он будет помечен Интеграция через трекинг-код 3 , а справа будет расшифровка ошибки.

Интеграция через трекинг-код 4

 

Чтобы проверить корректность интеграции на странице «Спасибо за покупку», перейдите на нее и сдвиньте переключатель.

Интеграция через трекинг-код 5

 

2. После этого свяжитесь с отделом трекинга Admitad Affiliate и запросите партнерскую ссылку для тестирования.

Если у вашей программы несколько целевых действий (например, «Регистрация пользователя» и «Оплаченный заказ»), необходимо протестировать каждое из них.

3. Перейдите по тестовой партнерской ссылке на ваш сайт. Убедитесь, что в строке адреса есть все необходимые вам GET-параметры и UTM-метки.

4. Выполните целевое действие на сайте (например, совершите покупку товара).

5. Находясь на странице «Спасибо за покупку», откройте расширение TagTag Check и перейдите на вкладку «Запросы трекинга». Убедитесь, что запрос отправлен.

6. Если трекинг настроен корректно, действие появится в статистике Admitad Affiliate (Личный кабинет — «Статистика» — «По действиям»). Проверьте правильность имени целевого действия, номера и суммы тестового заказа.

Интеграция через трекинг-код 6

 

После успешного окончания тестирования сообщите об этом техническому специалисту Admitad Affiliate. Программа будет поставлена на подготовку к запуску.

Проблемы при тестировании

Если действие не появилось в статистике, возможно, была допущена ошибка при установке и настройке трекинг-кода.

Проблема Возможное решение
Скрипт не срабатывает. Нет запросов от скрипта на вкладке Network браузера. Неверно подключен скрипт.
Выполните требования раздела «Установка трекинг-кода».
Скрипт не срабатывает. Есть ошибки в консоли браузера. Выполните требования раздела «Настройка передачи заказов».
Проверьте синтаксис JavaScript на странице «Спасибо за покупку».
Скрипт срабатывает. Ошибок в консоли браузера нет. Заказ в статистике не появился. Параметр campaign_code имеет неверное значение или отсутствует.
Проверьте значение campaign_code совместно с техническим специалистом Admitad Affiliate.
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Заказ в статистике не появился. Чтобы выявить ошибку, перейдите в журнал запросов («Инструменты» — «Журнал запросов»). Текст ошибки указан в поле «Результат». Исправьте ошибку и проведите повторный тест. Инструкцию по разделу «Запросы на платеж» можно найти здесь.
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Ошибок в разделе «Журнал запросов» нет. Заказ в статистике не появился. На стороне Admitad Affiliate временные технические ограничения (задержка логов), проверьте, появился ли заказ через час.
Скрипт срабатывает. Ошибок в консоли браузера нет. Параметр campaign_code имеет верное значение. Ошибок в разделе «Журнал запросов» нет. Заказ в статистике не появился через час. Обратитесь к специалисту Admitad Affiliate за помощью.

Была ли эта статья полезной?