Всем салюты!
Сегодня расскажу про свои наблюдения по установке события оптимизации на разные этапы воронки. Как бы это странно не казалось (играться с такими действиями на арбитражном подходе) — в голову пришла такая мысль и ее было необходимо протестить.
Погнали!
🔥 Еще больше полезного контента в нашем Telegram канале 🔥
- Немного теории
- Установка события Лид на скролл до конца страницы, на все кнопки-якоря и, собственно, на саму кнопки отправки формы
- Какой итог 1 части эксперимента?
- Установка события Лид на квиз перед самой формой
- Какой итог 2 части эксперимента?
- Установка события Лид на кнопку «Отправить» у формы
- Какой итог 3 части эксперимента?
- Стандартная установка события Лид на страницу Спасибо
- Какой итог 4 части эксперимента?
- Какие нюансы и дальнейшие гипотезы?
Немного теории
Все мы прекрасно понимаем, что фб требует от нашего адсета — получить 50 событий в неделю для дальнейшей оптимизации. И вроде бы все круто и здорово, но пытливый ум всегда хочет найти окольные пути, для того, чтобы ускорить процесс оптимизации. И как вы уже поняли в голове крутилась мысль — установить событие ЛИД куда-то на главную страницу лендинга.
Гипотеза была такова: если, например, событие ЛИД будет срабатывать где-то «повыше» и чаще, то это, несомненно, положительно скажется на скорости обучения адсета.
Какие были варианты.
Первым делом я решил углубиться в справку разработчиков.
Для того, чтобы посмотреть под какие действия или триггеры можно было бы интегрировать событие оптимизации. И как оказалось, разгуляться там можно было на славу. С чего начались тесты?
Установка события Лид на скролл до конца страницы, на все кнопки-якоря и, собственно, на саму кнопки отправки формы
Для того чтобы такое реализовать обязательным образом нужно в <head></head> index.php установить полный пиксель:
<!-- Facebook Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '{your-pixel-id-goes-here}'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id={your-pixel-id-goes-here}&ev=PageView&noscript=1"/> </noscript> <!-- End Facebook Pixel Code -->
После данной манипуляции можно вызывать другие события функцией fbq(‘track’..
Я установил с помощью этой функции событие ЛИД на скролл до конца моего лендинга. Или другими словами: событие ЛИД срабатывает только тогда, когда юзер долистает страницу до самого низу (либо ближе к форме).
var executeWhenReachedPagePercentage = function(percentage, callback) { if (typeof percentage !== 'number') { console.error( 'First parameter must be a number, got', typeof percentage, 'instead', ); } if (typeof callback !== 'function') { console.error( 'Second parameter must be a function, got', typeof callback, 'instead', ); } function getDocumentLength() { var D = document; return Math.max( D.body.scrollHeight, D.documentElement.scrollHeight, D.body.offsetHeight, D.documentElement.offsetHeight, D.body.clientHeight, D.documentElement.clientHeight ) } function getWindowLength() { return window.innerHeight || (document.documentElement || document.body).clientHeight; } function getScrollableLength() { if (getDocumentLength() > getWindowLength()) { return getDocumentLength() - getWindowLength(); } else { return 0; } } var scrollableLength = getScrollableLength(); window.addEventListener("resize", function(){ scrollableLength = getScrollableLength(); }, false) function getCurrentScrolledLengthPosition() { return window.pageYOffset || (document.documentElement || document.body.parentNode || document.body).scrollTop; } function getPercentageScrolled() { if (scrollableLength == 0) { return 100; } else { return getCurrentScrolledLengthPosition() / scrollableLength * 100; } } var executeCallback = (function() { var wasExecuted = false; return function() { if (!wasExecuted && getPercentageScrolled() > percentage) { wasExecuted = true; callback(); } }; })(); if (getDocumentLength() == 0 || (getWindowLength()/getDocumentLength() * 100 >= percentage)) { callback(); } else { window.addEventListener('scroll', executeCallback, false); } }; executeWhenReachedPagePercentage(99, function() { fbq('track', 'Lead'); });
Также я установил событие ЛИД на все кнопки якоря:
https://developers.facebook.com/docs/meta-pixel/implementation/marketing-api
<button onClick="fbq('track', 'Lead');"> ОТПРАВИТЬ </button>
И добавил событие на срабатывание события ЛИД, если человек находится на лендинге больше 100 секунд:
var seconds = 100; setTimeout(function() { fbq('track', 'Lead'); }, seconds * 1000);
Какой итог 1 части эксперимента?
Тысячи конверсий ЛИД, но очень скудное количество «настоящих» лидов в ПП. Тут я сразу сделал вывод, что данная манипуляция — бессмысленна.
Установка события Лид на квиз перед самой формой
Сейчас расскажу поподробнее. Возникла мысль: подвинуть воронку события Лид всё-таки ближе к самой форме отправки, но не на саму кнопку отправки формы. Для этого я реализовал квиз из трех простых вопросов с одним лишь ответом «ДА». После его прохождения у человека открывалась форма. И именно на третью кнопку ДА я установил событие Лид.
Какой итог 2 части эксперимента?
Неожиданно приятный CTR. Видимо, из-за того, что все-таки под данное событие оптимизации подбиралась «другая аудитория», я получил такие показатели:
И хочется сказать, что тест был не корректным из-за высокого CPM. Но нет. За счет высокого CTR — мой CPC был в пределах нормы.
И вот пример по количеству лидов и их цене из самой топовой рк. Как видим, что логично, лидов стало меньше. Потому что это именно те люди, которые дошли до третьей кнопки квиза. И кстати, зафиксируйте цену лида в 0.33$ (она нам еще пригодится).
Но как вы уже понимаете «настоящий конверт» от такой воронки ни насколько не подвинулся в лучшую сторону. Норма CPA на моем гео 8-10$.
Дальше у меня встал вопрос: двигать событие оптимизации ближе к форме в действующих кампаниях или создать новые?
Я решил поэкспериментировать: я предположил, что раз мы уже обучили адсеты искать людей, которые уже дойдут до самой формы, то поменяв событие ЛИД уже на саму кнопку «Отправить» у формы в этих же адсетах, мы сможем найти «самых готовых» к покупке людей.
Установка события Лид на кнопку «Отправить» у формы
Подредактировав код и установив событие ЛИД на саму кнопку формы, я стал ждать следующего дня отлива.
Какой итог 3 части эксперимента?
Из скриншотов выше мы видим 2 интересные закономерности:
1) Подвинув событие ЛИД уже на саму кнопку отправки формы, CTR стал значительно снижаться.
2) Оптимизация действительно сработала и не смотря на то, что мы поставили событие «дальше» количество лидов прибавилось, CPA упал.
Ну а вот по конверту — ничего не изменилось. Несколько холостых лидов в ПП. А теперь вдумайтесь: 142 нажатия на кнопку Отправить. Я конечно понимаю, что у меня там стоит маска-валидатор, но чтобы из 142 кликов по кнопке «Отправить» всего несколько залетных лидов в ПП — это фиаско.
Стандартная установка события Лид на страницу Спасибо
Не беда — подумал я. Вот если я в коде поставлю событие Лид на страницу Спасибо — то точно будет победа. Алгоритм же уже знает тех, кто доходит до кнопки «Отправить» у формы.
Какой итог 4 части эксперимента?
По финальной части эксперимента скриншотов не осталось, так как попрощался с кабинетами. Конверт не прибавился. И при условии, что связка вполне работосопособная, алгоритм, гипотетически, — сбился. То есть он все-равно не давал аудиторию, нацеленную на покупку. Кстати, это было легко заметно по тому же высокому CTR 30-40%. Тогда как при стандартных условиях норма CTR на моем гео и тематике 12-19%.
Какие нюансы и дальнейшие гипотезы?
1) Скорее всего под слив на нутру/адалт данная воронка не совсем подходит. Был фид от людей, работающих с другими вертикалями, что данный «сдвиг» события оптимизации вверх по воронке частично помогал более быстро найти нужную аудиторию.
2) Возможно, для корректности теста стоило запускать постоянно новые кабинеты на каждую из гипотез. Возможно стоило проливать несколько дней.
3) Невозможность работы с автоправилами. Из-за того, что предельная с таким количеством лидов можно сказать не высчитывается, приходится ориентироваться только по трекеру.
Надеюсь данные наблюдения были полезны! Если у вас есть собственные — не стесняйтесь писать их либо мне в личные сообщения либо в наш уютный чат.