Оффлайн цели для Яндекс.Директ

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

PS: Обновлено, добавлен более усовершенствованный к

Пример входящей заявки с возможностью прикрепить (передать) цель к конкретному визиту
Пример входящей заявки с возможностью прикрепить (передать) цель к конкретному визиту

Откуда родилсь идея использовать оффлайн цели?

Во первых, это рост спама через формы. Если раньше их было 2-3 на 7-8, то в последние полгода было и 7 на 2 настоящих. Фейк заявки приходят и сейчас:

пример фейк заявки, номер напечатан "от балды"
пример фейк заявки, номер напечатан "от балды"

Во вторых, если вы платите за настоящие заявки, можно платить сильно больше, и, даже, переплачивать, получая более качественный трафик (это не обязательно).

В последствии, данный инструмент был настроен на еще 4 проекта, и показал свою жизнеспособность в 3 из них.

Как осуществляется передача цели к конкретному визиту?

При помощи загрузки оффлайн конверсий в счетчике Яндекс.Метрика. Активация функционала происходит 24 часа, а затем еще до 24 часов ожидания.

  • Переходим в счетчик/метрику сайта
  • Тык в "Настройка" (вертикальное меню)
  • Тык в "Загрузка данных" (горизонтальное меню)
  • Смотрим предоставленные возможности, находим плашку с заголовком "Оффлайн-конверсии", и нажимаем желтую кнопку "Включить учет оффлайн-конверсий"
Это та самая плашка по оффлайн конверсиям
Это та самая плашка по оффлайн конверсиям

В тексте ясно всё сказано, задерживать передачу конверсии (если клиент долго думает) не желательно более 20 дней, не привяжет цель к такому визиту.

Но необходимо собирать обезличенные данные чтобы из них генерировать файл для загрузки внутрь инструмента (если вручную).

Какие данные необходимы для передачи оффлайн-конверсии?

После активации учета оффлайн конверсий, подождав 24-48 часов, вы увидете что требуется для загрузки:

Пример что необходимо загружать в оффлайн-конверсии
Пример что необходимо загружать в оффлайн-конверсии

Из полей идентификации можем использовать Client-ID, User-ID, YClid.

  • Client-ID - идентефикатор пользователя (уникальный и временный для связки пользователь + домен + браузер), при отключенных куках в браузере - взять его нельзя;
  • User-ID - постоянный (до 12 мес, либо настраивается) обезличенный идентификатор, который предоставляют прочие сервисы типа "Google Analytics". Вообще, этот юзер-айди вы создаёте и храните сами в своих CRM-системах.
  • YClid - одноразовый идентификатор от Яндекс.Директа, он появляется автоматически как дополнительнная utm-метка. Её можно считать и сохранить в куки/сессию-php (если куки не работают), чтобы при отправке формы не утерять.

Примеры где можно найти эти идентефикаторы:

Достаём clientID из метрики через JS запрос.
Достаём clientID из метрики через JS запрос.

Еще один способ, взять из метрики - раздел "Посетители и клиенты".

Посетители и клиенты
Посетители и клиенты
Тут я показал где это чудо находится (yclid)
Тут я показал где это чудо находится (yclid)

Проверьте самостоятельно, что на вашем сайте можно получить Client-ID из отладки кода (Chrome = F12) => Раздел "Консоль":

Повставляйте код для извлечения cleintID в "Консоль"
Повставляйте код для извлечения cleintID в "Консоль"

Вот код, надо подставить ваш номер счетчика и посмотреть есть ли выдача идентификатора в консоли.

ym(56XXXXXX, 'getClientID', function(clientID) { console.log(clientID); });

Какой файл загружать внутрь оффлайн-конверсий?

Это CSV-файл, состоящий из 3 значений через запятую.

Данные файла.csv, его содержимое
Данные файла.csv, его содержимое

Хотите создать файл сами? Держите текст для копирования.

ClientId,Target,DateTime a111111111111,ajajajaa,161616161

Название_файла.csv может быть любым. Содержимое файла лучше не показывать публично, иначе найденных конверсий можно будет наслать искусственно по каждому визиту по рекламе.

Данный файл можно составиь самостоятельно, либо автоматически при помощи php-машины вашего хостинга.

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

Что находится внутри файла?

Поля с данными:

  • ClientId - идентефикатор того, кто оставил заявку. По справке можно использовать до 5 вариантов: ClientID/UserID/yclid/email-md5/phone-md5. Мы не будем разбирать сложное, сориентируемся в примере только на ClientID - подойдет почти всем.
  • Target - идентификатор JS цели (например, oplata_js), которую вам надо создать в метрике.
  • DateTime - время в формате UnixTime (человеческое время заявки нужно конвертировать в формат php)

С первыми двумя данными - всё ясно (маркетологам и аналитикам ну, должны же знать 😁);

Пример какая цель подойдет для передачи оффлайн-конверсии, ниже она в практическом примере.
Пример какая цель подойдет для передачи оффлайн-конверсии, ниже она в практическом примере.

А вот где взять UnixTime - совсем не ясно даже тем, кто в директе сидит более 5 лет. Идём в поиск, и вбиваем "UnixTime" или "UnixTime конвертор". Видим и перехдим:

Ищем сервисы перевода даты в UnixTime
Ищем сервисы перевода даты в UnixTime
Мини инструкция что куда тыкать чтобы получить unix-time время
Мини инструкция что куда тыкать чтобы получить unix-time время

ВАЖНО! Обратите внимание на часовой пояс, для формата Unix-Time временная зона по GMT = 0. У меня временная зона Екатеринбурга, это значит что надо отнять 5 часов от вводимой даты. Если в письме время прихода заявки отображается московское, то GMT МСК +3, значит нужно отнять 3 часа от той которую видете в письме.

В моем случае, время отправки заявки я дублирую в текст заявки из php, подсматривая серверное время, которое соответствует Москве.

Кстати, нужно от него еще отнимать 3 часа, чтобы конвертация была верной. Но даже так, с отрывом в +3 часа от заявки, зачет целей работает. Но были сбои некоторых загрузок, я это исправлю.

С UnixTime действительно не всё легко, но я постарался разъяснить все сомнительные моменты.

Цифру UnixTime, которую мы получили в конверторе, мы копируем, а записываем в файл.csv - последним значением.

Сымитируем файл имея данные ниже

Наши данные:

  • ClientId - 1643334445556665425
  • Target - js_send (скопируем имя/идентифактор цель из метрики типа JS)
  • DateTime - 1672086508 (2022г 01ч 28мин 28 сек GMT+0500)
ClientId,Target,DateTime 1643334445556665425,js_send,1672086508

Сохраним это в файл с названием upload.csv

Видим этот файл upload.csv
Видим этот файл upload.csv

Имитация загрузки файла в инструмент "Загрузка офлайн-конверсий"

Где это находится, можно найти путь навигации в начале статьи, а что мы делаем, покажу ниже:

Выбираем файл и отмечаем что загружаем тип привязки ClientID
Выбираем файл и отмечаем что загружаем тип привязки ClientID

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

Нажимаем кнопку загрузить данные, и видим:

Статус загрузки вот что мы видим
Статус загрузки вот что мы видим

Окно с загрузкой оффлайн-конверсий исчезнет, и крутим страницу в самый низ.

С моими сымитированными данными, вскоре (от 20 минут до 24 часов), здесь будет написано что есть ошибки, пример ошибки, когда неверно перевели дату в unix-time:

Неверный перевод даты в Unix-Time текст ошибки
Неверный перевод даты в Unix-Time текст ошибки

Теперь остаётся только пробовать этот инструмент и вам.

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

Можно ли экономить средства при помощи передачи оффлайн-целей в Яндекс.Директ?

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

Однако, за счет того, что можно исключить фактор склика, и позволить платить за цель сильно больше, чем могли позволить со спамом или страхом проснуться без бюджета, можно изменить качество трафика.

Влияние цены цели на качество трафика

Чем выше цена цели - тем трафик качественнее, но нужно это показать не лишь одной выставленной стоимостью цели, а и балансом аккаунта, и адекватным поведением трафика на вашем сайте.

Если с трафиком на авто стратегиях совсем туго, тогда нужно будет внедрять микроконверсии и набрать статистики по ним. Это может быть скрипт "60 секунд на сайте без бросания вкладки", а может и просто вызов по кнопке вашей биографии (во всплывающем окне) / скрытые секреты директора / всё то, что ведёт к активности трафика.

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

https://uralcontext.ru/ - тут можно потыкать на аватарки, цифры, словить звуковые и анимационные рофлы.

Благодарю что читали, это моя первая информативная статья здесь - мог и ошибиться где то, с Вами был Сергей (Багрецов).

Обновил код

<script> $(document).ready(function() { setTimeout(function(){ ym(555222333, 'getClientID', function(clientID) { $ii = 0; $("form").each(function() { $ii++; $(this).append('<input type="hidden" name="clientid" value="'+clientID+'">'); $unixtime = Math.floor(Date.now() / 1000); $(this).append('<input type="hidden" name="unixtime" value="'+$unixtime+'">'); $linkgen = '<a href="t.me/#clientID">link</a>'; }); }); }, 2100); });

Скрипт, который я показал выше, не позволит вам передавать цели в 1 клик. Но он будет передавать данные, чтобы вы самостоятельно могли заполнить файл.csv данными по примеру скрина, и загрузить его в метрику.Всё, ждёте 2 часа, и цель появляется у этого визита.

Передача оффлайн цели - файл csv образец
Передача оффлайн цели - файл csv образец

Данный код можно доустановить на любой сайт, и он будет работать в 90% случаев (на почте будете видеть дополнительные данные unixtime и clientid).

Иная версия кода, учитываются клики по телефону и мессенджерам

<script> let gclid = 0; function loggingofflinepay(actionname) { $.ajax({ type: 'POST', url: 'mail.php', data: {'clientid': (gclid), 'unixtime':(Math.floor(Date.now() / 1000)), 'имя-действия': (actionname)}, success: function(data) { } }); } $(document).ready(function() { $('a').on("click", function() { var addressValue = $(this).attr("href"); if (addressValue.substr(0,3)=='tel') { loggingofflinepay('клик по телефону'); } if (addressValue.substr(0,3)=='vib') { loggingofflinepay('клик по viber'); }; if (addressValue.substr(0,10)=='https://wa') { loggingofflinepay('клик по wa'); }; if (addressValue.substr(0,14)=='https://api.wh') { loggingofflinepay('клик по wa в конце страницы'); }; }); setTimeout(function(){ ym(33322111, 'getClientID', function(clientID) { gclid = clientID; $("form").each(function() { $(this).append('<input type="hidden" name="clientid" value="'+clientID+'">'); $unixtime = Math.floor(Date.now() / 1000); $(this).append('<input type="hidden" name="unixtime" value="'+$unixtime+'">'); $linkgen = '<a href="t.me/#clientID">link</a>'; }); }); }, 2100); }); </script>

Пояснение по коду. Для тильды уже не подходит для установки в 1 клик.

Здесь используется запрос к внешнему серверу (mail.php - укажите путь к своему скрипту на отправку писем).

Если нет своего хостинга, в сети есть сервисы, в том числе бесплатные на приём get/post запросов по url, а он уже вам пересылает на почту все данные что получил в обращении.

Некоторые CRM кабинеты, часто бесплатные или не очень (например, Мини CRM от Колибри, envy-box, Битрикс и т.п.) имеют функционал приёма данных через свои php обработчики.

Здесь этот код отслеживает клики на сайте по телефону, ватсапу и т.п. И метит эти действия идентификатором client-id + время действия. Затем, если в это время у вас начался чат, или звонок (примерно), вы можете передать со своей стороны в метрику такое действие.

Суть здесь простая. Накапливаем в метрике эти конверсии с трафиком который на 100% состоит из живых людей, и через несколько накопленных конверсий (от 5-10 штук), переходим на оптимизацию по ним. И начинаем удивляться, что иногда на сайт может идти реально адекватный трафик, за который можно платить даже больше, чем как обычно.

33
12 комментариев

привет!
Сохранил в закладки. Как раз собираюсь настраивать. Спасибо!

1

Обновил код для тильды. Подходит вообще для любых сайтов, где при срабатывании отправки формы передаются все поля, даже скрытые:


$(document).ready(function() {
setTimeout(function(){

ym(555222333, 'getClientID', function(clientID) {
$ii = 0;
$("form").each(function() {
$ii++;
$(this).append('');
$unixtime = Math.floor(Date.now() / 1000);
$(this).append('');
$linkgen = 'link';
$(this).append('link'+"'"+'>');
});
});

}, 2100);

});


Данный код добавляет во все формы на вашем сайте на Тильде скрытые поля, одно из которых ссылка на php-скрипт, перейдя по которой, к этому визиту который оставил заявку на сайте, будет прикреплена ещё одна цель.

Эта цель может стоять в Яндекс.Директ как та, по которой нужно вести оптимизацию или оплату за неё.

1

спасибо за статью. Пробую вручную выгрузить, после обработки появляется ошибка как на скрине. Не сталкивались с таким? время перевёл, разницу в часовом поясе учёл

Время учёта 21 день с момента первого визита этого идентефикатора пользователя.
Ещё желательно в рекламе и метрике выставить часовой пояс МСК.

1

Кстати, забыл упомянуть, что некторые CRM/чаты/виджеты и колл-трекинг аналитика общается с метрикой именно путём передачи оффлайн-целей.

Где можно, они шлют цель в визите сразу по js. Но если отправка отложенная (после звонка), то идёт активация инструмента передача оффлайн целей через API-запросы.

Не знаю как сейчаС, но раньше отдавать цели по JS было не очень надежно. У многих пользователей стояли адблоки, блокировщики сбора статистики и счетчик метрики на сайте не запускался. И целей метрика, тоже не передавала.

Чтобы обеспечить точно управления рекламными площадками пришлось переходить на дорогую систему сквозной аналитики. Там с этим проблем не было.

Эти данные были актуальны на 2017-2018 год. Возможно сейчас такая же история.