Лендинги и Офферы: где клик превращается в деньги

Оффер и Лендинг - это две библиотеки, из которых собирается денежный конец клик-флоу: оффер держит URL, куда в итоге уходит клик, лендинг держит промежуточную страницу перед ним. Сами по себе обе библиотеки не роутят ничего. Пока лендинг не поставлен нодой на канвас клик-флоу, флоу не опубликован заново, а кампания не привязана, созданная строка остаётся просто записью в таблице - трафика она не увидит. На этом спотыкаются чаще всего, поэтому порядок действий вынесен ниже отдельной секцией.

Оффер: денежное назначение

  1. Откройте Офферы и нажмите «Новый оффер».
  2. «Название» - метка для пикеров и отчётов.
  3. «URL» - то самое денежное назначение, куда оффер отправляет клик. Принимаются только http(s):// и tg://.
  4. «Выплата» - сумма, которую конверсия унаследует, если событие пришло без собственного payout: платформа находит оффер по offer_id, записанному на клике, и берёт выплату оттуда. Явный payout в событии всегда важнее.
  5. «Целевое гео» - подсказка для пикера, а не правило роутинга: гео-роутингом занимается нода «Условие».

На канвасе нода «Оффер» терминальная - клик на ней заканчивается. URL оффера снимается снимком в момент публикации флоу, поэтому правка оффера в библиотеке не меняет уже опубликованную программу, пока вы не опубликуете флоу заново. По той же причине архивация оффера не ломает живой трафик мгновенно: опубликованные флоу продолжают роутить на него до republish, а из пикера он исчезает сразу.

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

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

{click_id}, {campaign_id}, {offer_id}, {sub1}, {sub2}, {sub3}, {sub4}, {sub5}, {fbclid}, {gclid}, {gbraid}, {wbraid}, {ttclid}

Значения URL-энкодятся при подстановке. Токен, для которого значения нет, превращается в пустую строку, так что &gclid={gclid} не сломает ссылку на Meta-трафике. Токен вне этого списка остаётся в URL как обычный текст - это сделано намеренно, чтобы не съесть макросы следующего трекера в цепочке. Обратите внимание: {sub6}-{sub9} клик действительно фиксирует и по ним можно роутить в «Условии», но макросами они не являются.

После подстановки итоговый URL проверяется ещё раз: разрешены только http, https и tg. Если проверка не прошла (макрос развернулся во что-то, что ломает адрес), клик уходит на прежний redirect кампании, а не в никуда.

Лендинг: «Хостится у нас» и «Внешний»

Откройте Лендинги и нажмите «Новый лендинг». Поле «Тип» разводит два совершенно разных сценария:

  • «Внешний» - вы указываете «URL» страницы, которую хостите сами. Клик 302-ится прямо туда. На этом пути подставляются только {click_id} и {campaign_id}; остальные макросы из списка выше здесь не работают, донести sub-параметры до своей страницы придётся этими двумя или параметрами, которые вы допишете руками.
  • «Хостится у нас» - вы указываете «Слаг» и, по желанию, «Оффер по умолчанию». Клик 302-ится на внутреннюю страницу /l/{id}, в адрес которой уже зашиты id клика и id эффективного оффера.

Нода «Лендинг» на канвасе тоже терминальная, но у неё есть одно исключение: она может нести ровно одну исходящую связь и только в ноду «Оффер». Настройки лендинга (тип, URL, оффер по умолчанию) снимаются снимком при публикации, ровно как у оффера.

Что на самом деле показывает «Хостится у нас»

Это не конструктор лендингов. Никакого редактора, загрузки HTML, картинок или блоков там нет и не появится по мере настройки.

Страница /l/{id} целиком состоит из трёх строк и одной кнопки на градиентном фоне: заголовок «Почти готово», подзаголовок «Нажмите кнопку ниже, чтобы продолжить.» и кнопка «Продолжить», ведущая на URL оффера. Эти три строки берутся из локализации платформы, одинаковы для всех организаций и не редактируются - меняется только язык. Страница закрыта от индексации.

Если вам нужен собственный контент страницы - выбирайте «Внешний» и указывайте URL своей страницы. «Хостится у нас» означает, что мы отдаём свою прослойку, а не что мы захостим вашу вёрстку.

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

Зачем эта прослойка вообще нужна

Три вещи, которых нет у прямого редиректа:

  • Разрыв реферера. Кнопка уходит наружу с rel="noopener noreferrer sponsored", так что принимающая сторона не видит, с какой площадки пришёл посетитель.
  • Осознанный клик. Переход делает человек нажатием кнопки, а не сервер редиректом. Для части офферов и модерации это принципиально разные события.
  • Подстановка макросов на месте. sub1-sub5 и платформенные click id читаются из строки клика, click_id и offer_id приходят прямо в адресе страницы. Итоговая ссылка кнопки валидируется тем же правилом (http, https, tg), поэтому страница не может превратиться в открытый редирект, чем бы ни развернулись макросы.

Если строка клика ещё не успела записаться (запись идёт асинхронно, чтобы не тормозить редирект), кнопка всё равно отрисуется - просто с пустыми sub-макросами. Атрибуцию это не задевает: offer_id проставляется на клике раньше, на самом редиректе.

Оффер для hosted-лендинга: канвас важнее умолчания

Hosted-лендингу обязательно нужен эффективный оффер - иначе кнопке некуда вести. Источников два, и приоритет между ними жёсткий:

  1. Переопределение на канвасе - нода «Оффер», подключённая к ноде «Лендинг». Читается прямо с графа при публикации и всегда выигрывает.
  2. Умолчание из библиотеки - поле «Оффер по умолчанию» в самом лендинге. Работает, когда связи на канвасе нет.

Если нет ни того, ни другого, флоу просто не публикуется, и вы увидите ошибку на ноде: «Для hosted-лендинга нужен оффер — свяжите оффер или задайте оффер по умолчанию». Попытка перетащить связь из лендинга во что-нибудь кроме оффера отклоняется прямо на канвасе с текстом «Лендинг» можно связать только с «Оффером», а если такая связь всё же оказалась в графе - публикация падает с той же формулировкой. Больше одной исходящей связи у лендинга быть не может: вторая связь с той же точки отклоняется.

Слаг - это только метка оператора

У hosted-лендинга есть слаг, и его легко принять за адрес страницы. Это не так: /l/ резолвит лендинг по неизменяемому id, никогда по слагу. Свойство не косметическое, а защитное - резолв по слагу позволил бы одной организации перехватить прослойку другой, подобрав чужой слаг. Слаг при этом глобально уникален и не освобождается при архивации, чтобы архив можно было развернуть обратно без сюрпризов.

Оффер, id которого приходит в адресе страницы, тоже резолвится в пределах организации самого лендинга: подставить туда чужой id и вытащить чужой URL не выйдет.

Порядок действий

Ровно в этом порядке, потому что каждый следующий шаг опирается на предыдущий:

  1. Создайте оффер на странице Офферы. Без него hosted-лендинг не опубликуется.
  2. Создайте лендинг на странице Лендинги: «Хостится у нас» со слагом и оффером по умолчанию либо «Внешний» со своим URL.
  3. Откройте клик-флоу кампании: в меню строки кампании на странице Кампании пункт «Клик-флоу». Флоу, созданный отсюда, сразу привязывается к кампании - это и есть привязка, отдельного поля «Клик-флоу» в диалоге кампании нет.
  4. Поставьте ноду «Лендинг» на канвас и свяжите её. Нода должна быть достижима от «Источника трафика»: лежащая в стороне нода не получит ни одного клика, и публикация об этом скажет. При необходимости протяните связь из лендинга в ноду «Оффер», чтобы переопределить оффер по умолчанию.
  5. Сохраните и нажмите «Опубликовать». Пока флоу не опубликован, канвас не влияет ни на что: живой трафик роутит скомпилированная программа прошлой публикации, а не то, что вы видите на экране.
  6. Убедитесь, что кампания есть и активна. Трекинг-ссылка живёт на кампании, а не на флоу: флоу без кампании никогда не получит ни одного клика, каким бы «активным» он ни выглядел.

Дальше редактирование идёт по кругу: опубликованный флоу доступен только для чтения («Флоу в бою и доступен только для чтения. Отключите его, чтобы редактировать»), поэтому цикл правки - «Отключить», поправить канвас, «Опубликовать» снова. Пока флоу отключён, кампания роутит на свой прежний redirect URL.

Частые ошибки

  • Лендинг создан, но не стоит на канвасе. Библиотека - это библиотека. Строка на странице Лендинги не участвует в роутинге, пока в графе нет ноды «Лендинг», которая на неё ссылается.
  • «Хостится у нас» принято за хостинг вашей страницы. Это фиксированная прослойка из трёх строк и кнопки. Свой контент - только через «Внешний».
  • Флоу активен, но кампании нет. Кликать некуда: трекинг-ссылку выдаёт кампания. Флоу без привязанной кампании недостижим.
  • Канвас поправили, публиковать забыли. Автосохранение графа и публикация - разные вещи; трафик видит только опубликованную версию.
  • Оффер или лендинг заархивировали и ждут, что трафик остановится. Из пикеров они исчезают сразу, но опубликованные флоу роутят на них до следующей публикации.
  • Ждут макросы на внешнем лендинге. Там подставляются только {click_id} и {campaign_id}. Полный набор макросов работает в URL оффера и в кнопке hosted-прослойки.
  • Правят URL оффера и удивляются, что ничего не изменилось. URL зашивается в программу при публикации - опубликуйте флоу заново.