Перейти к содержанию

Лендинги и офферы

Лендинги

Промежуточная страница между кликом и оффером. Раздел Лендинги -> «Создать».

Типы:

  • Локальный - ZIP с файлами сайта, загружается в трекер и отдаётся с вашего домена по пути /l/<папка>/. Ассеты (картинки, css, js) грузятся относительными путями. Внутри работает PHP.
  • Редирект - внешний URL: посетитель уходит на чужую страницу 302-редиректом. К адресу дописывается служебный параметр _ci, по которому клик потом вернётся в трекер.
  • Предзагрузка - тот же внешний URL, но трекер сам забирает страницу и отдаёт её посетителю. Адресная строка не меняется, визитор остаётся на вашем домене.

У каждого лендинга есть группа - она же определяет, кто из баеров его видит.

Ссылка на оффер в лендинге

Это ключевой шаг, без которого переход с лендинга на оффер не отслеживается. Готовый код показан прямо в форме лендинга, переключателем HTML / JS / PHP:

  • локальный лендинг - замените href кнопки на макрос {offer}: <a href="{offer}">Заказать</a>. Трекер подставит в него ссылку перехода. Работают и {offer1}, {offer2} и т.д., и макросы {subid}, а также любые параметры из ссылки клика по их именам ({utm_source}, {sub_id_1} и другие);
  • внешний лендинг - вставьте JS- или PHP-сниппет: он строит ссылку на /click вашего домена, подставляя туда идентификатор клика.

По переходу на /click трекер находит заранее выбранный оффер (по параметру _ci или по куке) и делает редирект. Оффер выбирается ещё до показа лендинга, поэтому лендинг всегда знает, куда вести.

Скрипт отслеживания (лендинг из нескольких страниц, формы)

Подстановка {offer} работает, пока идентификатор клика есть в адресе или в куке. Ровно там, где это перестаёт быть правдой, нужен скрипт:

  • вторая страница многошагового лендинга - параметр _ci в адресе уже потерян;
  • выключенные куки (cookies_enabled=0) - опереться не на что вообще;
  • отправка формы - идентификатор клика не уходит вместе с данными;
  • чужой лендинг, открытый по прямой ссылке - клика не существует, трафик не считается.

Подключается одной строкой в <head>:

<script src="//ВАШ-ДОМЕН/tm.js"></script>

Что он делает сам, без единой правки в разметке:

  • находит идентификатор клика в адресе или куке, а если его нет - регистрирует клик у трекера и получает идентификатор в ответ;
  • подставляет ссылку перехода в {offer} и идентификатор в {subid};
  • дописывает _ci ко всем внутренним ссылкам страницы (внешние, mailto:, tel: и якоря не трогает) - так клик доживает до следующей страницы;
  • добавляет формам скрытое поле _ci и заполняет поля с именами subid / sub_id.

Отправить конверсию прямо со страницы:

TMTracking.reportConversion(9.99, 'lead');
TMTracking.reportConversion(0, 'lead', {transaction_id: 'ORDER-42'});

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

<script>var TMTracking = {PATH: 'https://ВАШ-ДОМЕН/ТОКЕН-КАМПАНИИ'};</script>
<script src="//ВАШ-ДОМЕН/tm.js"></script>

Оба сниппета есть в панели: Инструменты трекинга -> Скрипт отслеживания.

Отладка: TMTracking.DEBUG = true до подключения скрипта - в консоли появятся запросы и ответы. Скрипт написан без современного синтаксиса намеренно: он попадает на чужие лендинги, где может стоять что угодно, и обязан работать в старом вебвью так же.

Файлы лендинга

Загруженный лендинг можно скачать архивом и залить заменённую версию, не пересоздавая запись. Ссылки на файлы лендинга подписываются: выкачать чужой лендинг, зная только путь, нельзя.

Офферы

Цель клика. Форма из четырёх вкладок.

Основные

  • Название, группа.
  • Партнёрская сеть - её параметр click_id автоматически допишется к ссылке оффера.
  • Тип: Offer URL (внешняя партнёрская ссылка) или Local (ZIP, отдаётся так же, как локальный лендинг).
  • URL оффера с макросами и Авто-параметры URL - строка параметров, которая добавляется к ссылке всегда.

Дополнительно

  • Гео - метки, показываются рядом с названием оффера.
  • Выплата, Тип выплаты (CPA - за конверсию, CPC - за клик), Валюта.
  • Авто-выплата (из постбека) - брать сумму из параметра постбека; если сеть её не прислала, подставится фиксированная выплата оффера. Выключено - доход всегда статичный, из поля «Выплата», что бы сеть ни прислала.
  • Разрешить апселлы - платить и за повторные конверсии по тому же клику.
  • Лимит по конверсиям - дневной кап; вместе с ним задаются Дневной лимит, Таймзона капа и Альтернативный оффер (см. ниже).

Значения - до десяти произвольных пар «имя = значение», справочное поле карточки.

Заметки - произвольный текст.

Рядом с названием в списке показывается ID оффера.

Мультиофферы и мультилендинги

В потоке со схемой «landings» назначается сразу несколько лендингов и несколько офферов, каждый со своим весом. Трекер ротирует их взвешенно и стабильно для одного визитора: при повторном заходе человек увидит ту же связку. Так делается сплит-тест: поставьте двум лендингам вес 50 и 50, а через несколько сотен кликов сравните их в отчёте по измерению «Лендинг».

Дневной кап оффера

Вкладка «Дополнительно» -> Лимит по конверсиям. Переключатель открывает три поля: Дневной лимит (0 = без лимита), Таймзона капа (в ней считаются сутки, пусто = UTC) и Альтернативный оффер.

Кап считает именно конверсии, а не клики, и работает только при включённом переключателе: выключенный переключатель с ненулевым лимитом не ограничивает ничего. Счётчик растёт на каждой новой конверсии - от постбека или от импорта; смена статуса уже записанной конверсии его не двигает, а повторная конверсия по новому tid (ребилл, второй депозит) двигает.

Сутки календарные в выбранной таймзоне: в полночь начинается новая корзина, отдельного «обнуления» нет. Конверсия ложится в корзину своей даты, а не даты записи - поэтому импорт истории за прошлый месяц не выбирает сегодняшний лимит.

Альтернативный оффер

Поле «Альтернативный оффер» («Куда слать клики при исчерпании лимита») - что делать с позицией ротации, когда оффер добрал суточный лимит:

  • запасной задан - клики уходят на него, и вес капнутого оффера переходит к запасному. Доля трафика, отведённая этой позиции, не меняется от того, что лимит выбран;
  • запасной не задан (первый пункт списка, «нет») - оффер просто исключается из ротации, трафик расходится по остальным офферам потока. Если других офферов нет, лендинг покажется без оффера, а поток без лендинга отдаст 404.

Запасной может иметь своего запасного: цепочка проходится до пяти шагов. Если все звенья исчерпаны или цепочка закольцована, позиция ротации оффера не даёт - в логе движка появится предупреждение про зациклённую цепочку запасных. Себя выбрать нельзя, список запасных исключает текущий оффер.

Если ограничить нужно клики, а не конверсии - это делается фильтром «Лимит кликов» на потоке (см. 03-campaigns-streams.md). Учтите разницу: кап оффера считает сутки по своей таймзоне, а «Лимит кликов» - по UTC от начала суток.

Макросы в ссылке оффера

В URL оффера подставляются значения текущего клика:

  • {subid}, {sub_id}, {click_id}, {clickid} - идентификатор клика (он же вернётся в постбеке);
  • {sub_id_1}..{sub_id_30}, {external_id}, {keyword} и любой другой параметр из ссылки клика по его имени;
  • {country}, {device_type}, {os}.

Значения подставляются закодированными для URL - иначе & внутри метки дописал бы в адрес оффера чужие параметры. Если в параметре осознанно лежит кусок адреса и кодировать его не надо, используйте форму со знаком подчёркивания: {_sub_id_1}.

Базовые макросы (в первую очередь идентификатор клика) перекрывают одноимённые параметры из входящей ссылки - подставить чужой subid снаружи нельзя.

Партнёрская сеть возвращает конверсию постбеком вида /postback?subid={click_id}&status=sale&payout={payout}.

Партнёрские сети

Раздел Партнёрские сети: название, параметр click_id (как сеть называет поле, в котором ждёт наш идентификатор клика - subid, aff_sub и т.п.), шаблон входящего постбека для подсказки и заметки.

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

Несколько офферов на лендинге: макрос {offer:ID}

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

Макрос Куда ведёт
{offer} оффер, выбранный трекером при заходе (обычный случай)
{offer:12} оффер с идентификатором 12
{offer12} то же самое - запись без двоеточия равнозначна

Так делается лендинг с выбором: «1 шт» -> {offer:12}, «3 шт» -> {offer:13}. Без этого макроса все кнопки вели бы в одно место.

Разрешены только офферы этого потока. Номер попадает в адресную строку, то есть его может подставить кто угодно; трекер пускает переход только по офферам, которые поток и так мог показать, а на чужой номер отвечает 404. Ошибка в номере тоже даёт 404, а не тихий переход на оффер по умолчанию: молчаливая подмена выглядела бы как рабочая кнопка, и заметить её можно было бы только по расхождению выплат.

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

Макрос работает и на локальном лендинге, и на внешнем через скрипт /tm.js.

Предзагрузка внешнего лендинга

Тип лендинга «Предзагрузка» отдаёт чужую страницу с вашего домена: посетитель остаётся на домене кампании, в адресной строке - токен кампании.

Трекер при этом:

  • вставляет в страницу <base href> с адресом исходного лендинга, чтобы относительные пути к стилям, картинкам и скриптам разрешались у автора страницы, а не на вашем домене. Без этого посетитель видел бы голый HTML без вёрстки, и по логам это никак не заметно: трекер отвечает 200, клик записан;
  • подставляет макросы {subid}, {offer}, {country} и остальные - так же, как в локальном лендинге.

Свой <base> у страницы трекер не трогает. Страницы тяжелее 4 МБ отдаются как есть, без вставки и подстановки - о таком случае пишется строка в лог движка.