Пример инструкции Postback Ecom

Что происходит во время интеграции?

Наш код позволяет отслеживать историю действий пользователя на сайте, в том числе для выявления нарушений правил оффера вебмастерами (например, cookie-stuffing).

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

Мы собираем и используем следующие данные:

  1. Параметры URL перехода:

    • Cookie - обезличенный идентификатор пользователя;

    • Cookie - обезличенный идентификатор сессии;

    • Cookies - параметров последнего перехода (полный URL и UTM-метки раздельно).

  2. Параметры браузера:

    • User-Agent;

    • Размер экрана;

    • Размер окна браузера;

    • Открытие страницы в iframe;

    • URL текущей страницы и ее реферер;

Нам также необходимо сформировать DATA-объект, содержащий информацию о покупке.

Мы не собираем личную информацию, а используем только те файлы cookie, которые настраиваем сами.

Подсказка

В СРА-канале используется модель атрибуции «Last Paid Click» – согласно этой модели, заказ присваивается платному источнику, который был последним в истории переходов перед совершением заказа.

Примечание

Это пример инструкции по интеграции Adv.Cake. Инструкцию с актуальными данными для интеграции именно вашего оффера вам передаст ваш менеджер.

Содержание:

  1. Предоставление доступа к рекламному кабинету;

  2. Установка JS-кода на страницы сайта;

  3. Настройка дополнительных параметров;

  4. Настройка postback;

  5. Установка кода, формирующего DATA-объект на страницы.

Шаг 1. Предоставление доступа к рекламному кабинету

Первым делом вам необходимо предоставить доступ к рекламному кабинету Google Analytics или Яндекс.Метрика:

Если вы используете Google Analytics, предоставьте доступ для аккаунтов analytics@advcake.com и exportcake@core-planet-304613.iam.gserviceaccount.com (аккаунт для запроса данных из Google Analytics по API);

Если вы используете Яндекс.Метрику, предоставьте доступ для аккаунта metrika@advcake.com.

Подсказка

Если вы не можете предоставить доступ к этим сервисам, переходите к следующему шагу.

Шаг 2. Установка JS-кода на страницы сайта

Установить JS-код можно двумя способами:

  1. Напрямую на сайт (рекомендуется):

    • Код из примера ниже можно поставить как в <head>, так и в <body>, однако мы рекомендуем ставить его выше, чтобы другие скрипты, в случае их поломки, не повлияли на работу нашего кода.


  1. Через GTM (не рекомендуется, т.к. код, установленный через GTM, блокируется блокировщиками рекламы, что приводит к потере конверсий от 30% до 50%):

    • Если вы все же решили устанавливать наш код через GTM, необходимо выбрать триггер активации «Page View» или «DOM Ready». Триггер «Window Load» не подходит, так как другие скрипты, которые будут загружаться у пользователя могут заблокировать загрузку нашего скрипта.

<script type="text/javascript" id="advcakeAsync">
    (function(a) {
        var b = a.createElement("script");
        b.async = 1;
        b.src = "//***.ru/" // точный домен для интеграции будет вам передан вместе с кастомной инструкцией
        a = a.getElementsByTagName("script")[0];
        a.parentNode.insertBefore(b, a)
    })(document);
</script>

Примечание

Добавьте в заголовок CSP (если он используется) переданный вам домен.

Шаг 3. Настройка дополнительных параметров

По умолчанию трекинг-ссылка Adv.Cake выглядит так:

?utm_source=advcake&utm_medium=cpa&utm_campaign={partner}&utm_content={webmaster}&advcake_params={click_id}

Предупреждение

Если вы не можете использовать такой формат ссылок, сообщите нам.

При переходе на сайт пользователю выставляются две куки кодом Adv.Cake:

  1. advcake_track_id – случайная последовательность из 32-х букв и цифр.

  2. advcake_track_url – полная ссылка переход на сайт с utm_source=advcake.

Шаг 4. Настройка postback

Пример отправки заказа/заявки:

Предупреждение

Необходимо отправлять все заказы с любыми источниками.

https://api.ekacvda.com/postback/siteru?id=1411551&totalPrice=10141.14&%20
basketProducts=%5b+%7b+%22id%22%3a+1107239%2c+%22name%22%3a+%20%22%d0%9a%d1%
83%d1%80%d1%82%d0%ba%d0%b0+%20%d0%b4%d0%b5%d1%82%d1%81%d0%ba%d0%b0%d1%8f
+Rip+Curl+Small%20+Puffer+Jacket+Surf+The+Web%22%2c+%22price%22%3a+%204580%2c+%22
quantity%22%3a+1%2c%22marketing_cat%22%3a%221%22%2c%20%22category%22%3a+%22164%22%2c%22
category_name%22%20%3a%22%d0%be%d0%b4%d0%b5%d0%b6%d0%b4%d0%b0+%20%d0%b4%d0%b5%d1%82%d1%8
1%d0%ba%d0%b0%d1%8f%22%7d%2c%7b+%20%22id%22%3a+1047488%2c+%22name%22%3a+%22%d0%a8%d0%b0%
d0%bf%d0%ba%d0%b0+%20%d0%bd%d0%be%d1%81%d0%be%d0%ba+Armour+Classic+%20Beanie+Blue%22%2c+%
22price%22%3a+490%2c+%20%22quantity%22%3a1%2c+%22marketing_cat%22%3a%222%22%2c%22%20
category%22%3a%22164%22%2c%22category_name%22%20%3a%22%d0%be%d0%b4%d0%b5%d0%b6%d0%b4%d0%b0
+%20%d0%b4%d0%b5%d1%82%d1%81%d0%ba%d0%b0%d1%8f%22%7d%5d%20&coupon=A270&
client_type=new&orderTrackid=14511aca1b09e91f&url=https%3a%2f%2fsite.ru%2f%3f%20
utm_source%3dadvcake%26utm_campaign%3dcpa%26advcake_params%3dafacaafa15aac

Подсказка

Вместо siteru подставьте название вашего сайта, например: https://api.ekacvda.com/postback/exampleru (без точки).

Примечание

В параметр url вставляются данные из куки advcake_track_url, которые необходимо предварительно закодировать через url_encode.


Отправлять заказ/заявку желательно POST-запросом в формате JSON (например, с помощью XHR) т.к. длина GET-запроса ограничена 2048 символами, из-за чего часть данных может не дойти.

Расшифровка полей постбека

id

Номер заявки/лида/заказа

totalPrice

Стоимость заказа. Если понятие стоимости заказа отсутствует, данное поле можно исключить

orderStatus

Статус заказа. Данное поле можно передавать двумя способами:

Согласно нашим внутренним идентификаторам:

1 – Заказ в обработке;

2 – Заказ подтвержден;

3 – Заказ отменен.

Согласно вашим внутренним идентификаторам – в таком случае нам потребуется описание каждого статуса, например:

Принят в обработку – транслируем как статус 1;

Подтвержден – транслируем как статус 2;

Обработан – транслируем как статус 3.

Если ставка вебмастеру зависит от категории товара, то необходимо передавать также обновленный список товаров (orderBasket);

orderBasket– состав корзины в формате JSON, например:

[
  {
    "id": 1107239,
    "name": "Куртка детская Rip Curl Small Puffer Jacket Surf The Web",
    "price": 4580,
    "quantity": 1,
    "marketing_cat": "1",
    "category": "164",
    "category_name": "одежда детская"
  },
  {
    "id": 1047488,
    "name": "Шапка носок Armour Classic Beanie Blue",
    "price": 490,
    "quantity": 1,
    "marketing_cat": "2",
    "category": "164",
    "category_name": "одежда детская"
  }
]

– в поле price передавать стоимость за единицу товара;

– в поле quantity передавать количество данного товара в корзине;

– в поле marketing_cat передается маркетинговая категория товара: т.е. каждому товару на сайте присваивается номер маркетинговой категории, на которую мы будем ориентироваться при расчете комиссии (это поле необязательно, если нет разделения комиссии по категориям товаров);

Например:

Одежда: marketing_cat: "1" – комиссия 5% от стоимости товара;

Обувь: marketing_cat: "2" – комиссия 2% от стоимости товара.

Примечание

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

– в поле category, category_name передавать значения из товарного фида.

description

Причина отмены заказа (передавать данное поле желательно, но не обязательно)

coupon

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

clientType

Тип клиента: “новый”, “старый”. Может понадобиться для разделения ставок для новых/старых клиентов, а также для аналитики (передавать данное поле желательно, но не обязательно)

trackid

Значение куки advcake_track_id на момент совершения заказа (см. шаг 3)

url

Значение куки advcake_track_url на момент совершения заказа (см. шаг 3)

email

Почта клиента (можно передавать телефон или захешированный идентификатор)

dateCreate

Дата создания заказа в формате Y-m-d H:i:s (например, 2022-09-08 17:16:25)

dateLastChange

Дата изменения статуса заказа в формате Y-m-d H:i:s (например, 2022-09-08 17:16:25)

Примечание

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

Шаг 5. Установка кода, формирующего DATA-объект на страницы

Установите предоставленные ниже коды на соответствующие страницы вашего сайта:

1. Главная страница

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 1,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            }
    });
</script>

2. Страница одного товара

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 2,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            },
        currentCategory: {
            id: 441,
            name: 'Обувь'
        },
        currentProduct: {
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000
        },
        basketProducts: [{
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
        }]
    });
</script>

3. Страница каталога/категории/подкатегории

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 3,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            },
        currentCategory: {
            id: 441,
            name: 'Обувь'
        },
        products: [{
            id: 001,
            name: 'Черная кеда',
            price: 12000
        }, {
            id: 002,
            name: 'Серый кед',
            price: 13000
        }],
        basketProducts: [{
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
        }]
    });
</script>

4. Страница корзины

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 4,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            },
        basketProducts: [{
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
        }]
    });
</script>

5. Страница оформления заказа (после корзины и до страницы «Спасибо за заказ»)

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 5,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            },
        basketProducts: [{
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
        }]
    });
</script>

6. Страница оформленного заказа («Спасибо за заказ»)

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 6,
            user: {
                email: 'md5(user@email.ru)', // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
                type: 'old' // old, new - опционально, передавать пустое значение в кавычках (''), если тип пользователя неизвестен
            },
        basketProducts: [{
            id: 3247,
            name: 'Кроссовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
    }],
        orderInfo: {
            id: 'ac31004', // уникальный идентификатор заказа, используемый при сверке
            totalPrice: 90000, // сумму заказа передавать без учета доставки
            coupon: 'SKIDKA100' // опционально, передавать пустое значение в кавычках (''), если заказ без купона или данный функционал отсутствует на сайте
        }
    });
</script>

7. Страница списка товаров (страница поиска, страница акционных товаров и т.п.)

<script>
    window.advcake_data = window.advcake_data || [];
    window.advcake_data.push({
        pageType: 7,
            user: {
                email: 'md5(user@email.ru)' // email в виде хеша или уникальный идентификатор, если не передается, данное поле можно оставить пустым
            },
        products: [{
            id: 001,
            name: 'Черная кеда',
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 002,
            name: 'Серый кед',
            categoryId: 411,
            categoryName: 'Обувь'
        }],
        basketProducts: [{
            id: 3247,
            name: 'Кросовок Левый',
            price: 30000,
            quantity: 1,
            categoryId: 411,
            categoryName: 'Обувь'
        }, {
            id: 3247,
            name: 'Кроссовок Правый',
            price: 30000,
            quantity: 2,
            categoryId: 411,
            categoryName: 'Обувь'
        }]
    });
</script>