Top.Mail.Ru

Динамический пиксель

Доброго времени суток! Давно ничего не выкладывал, но постараюсь исправиться. В этой статье я хочу разобрать такую тему как динамический пиксель. Причем нарочно не привязываю его только к фейсбук, хотя чаще всего именно там его используют, но на самом деле данный метод актуален для любых сервисов аналитики.

Итак в чем же суть такого понятия как динамический пиксель. На самом деле все просто, это возможность рекламировать свой сайт с разных аккаунтов в том же facebook, google, yandex и т.п. при этом не заморачиваясь установкой кода отслеживания статистики для нужной рекламной сети под каждый отдельный аккаунт. Иными словами базовый код аналитики будет стоять на вашем сайте, а уникальный идентификатор конкретного аккаунта мы будем передавать на сайт в рекламной ссылке и там уже его подставлять в код аналитики.

Итак, первое с чем нам нужно определиться, как передавать необходимый id нашего пикселя. Ну на самом деле любая рекламная сеть позволяет добавлять собственные utm-метки и это самый распространенный способ как передать нужный параметр. Кроме того если вы пользуетесь каким-либо трекером он также позволяет без особых проблем добавить собственные метки к рекламным ссылкам. Важно понимать каким ключом передается ваша метка, чтобы без проблем получить ее на своем сайте. Ключ это название вашей utm-метки, например site.com?pixel=123456. В данном примере ключ это pixel а его значение 123456, все ютм метки передаются в конце url адреса и начинаются со знака вопроса, далее идут сами метки и записываются они как ключ=значение, сами метки разделяются знаком амперсант &. Вот пример нескольких меток в урл адресе ?pixel=123456&utm_source=fb&utm_campaign=cpc

Ну теперь переходим непосредственно к приему нашей метки на сайте. Мы разберем здесь два основных способа приема и дальнейшей передачи нашей метки на нашу страницу спасибо, на которой мы хотим чтобы код пикселя отбивал в рекламную сеть событие Lead. Первый это cookie (куки), как по мне самый простой способ получения нужного значения на нашей индексной странице сайта и его передача вообще на любую страницу нашего сайта. Но у кук есть один недостаток, работают они только в рамках одного домена и если вы допустим используете какую то общую страницу спасибо для нескольких сайтов и расположена она на отдельном от рекламируемого сайта домене, то тут куки нам не помогут и как решить такую проблему я расскажу во втором способе чуть ниже.

Проброс пикселя с помощью куки

Для дальнейших примеров я буду использовать ключ pixel чтобы забирать нужное мне значение id пикселя из урл адреса. Итак, если у вас нет ограничений и вы можете использовать такой язык программирования как PHP, то с приемом и передачей данных в куках нет вообще никаких проблем, главное при этом чтобы у страницы на которой мы пишем данный код было расширение .php, просто в самом верху нашей индексной страницы пропишем такой код, открываем его так <?php

setcookie("pixel", $_GET["pixel"], time()+60*60*24);

?> и закрываем наш кусок php кода. Тут я вызываю php функцию setcookie(), она задаёт cookie, которое будет передано клиенту вместе с другими HTTP-заголовками. Первым параметром я прописываю название cookie, вторым ее значение, которое мы получаем из глобальной переменной $_GET, она представляет из себя ассоциативный массив переменных, переданных скрипту через параметры URL, по ключу pixel, ну и третьим параметром прописал тут время жизни установленной куки в 24 часа.

Вот так просто можно получить нужное нам значение средствами php, теперь мы можем забрать записанное в cookie с именем pixel значение в любом месте нашего лендинга вот так <?=$_COOKIE[‘pixel’];?>, все. Ну и вот так мы можем подставить значение пикселя сразу на нашей странице спасибо.

Но бывают случаи когда использование php по каким-то причинам не возможно, поэтому ниже приведу пример кода где мы получим необходимое значение из url и запишем его в куки, а в последствии выведем его на нашей странице спасибо с помощью javascript.

Итак, на нашей индексной странице перед закрывающим тегом </body> в тегах <script></script> пишем следующий код

document.addEventListener("DOMContentLoaded", function() {
let url = new URL(window.location.href);
let pixel = url.searchParams.get('pixel');
if (!pixel) return;
let date = new Date();
date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000));
const expires = "expires=" + date.toUTCString();
document.cookie = 'pixel=' + pixel + ';' + expires + ';path=/';
});

тут мы получаем значение нашего пикселя из урл адреса и записываем его в куки с именем pixel. Далее открываем нашу страницу спасибо и также перед закрывающим тегом </head> в тегах <script></script> пишем следующий код

document.addEventListener("DOMContentLoaded", function() {
	let cookieRegex = /pixel=([^;]+)/;
	let pxCookieMatch = document.cookie.match(cookieRegex);
	let pxVal = pxCookieMatch[1];

	var script_tag = document.createElement('script');
	script_tag.text = `
	!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', `+pxVal+`); 
	fbq('track', 'Lead');
	`;
	document.head.appendChild(script_tag);

	let noscript = document.createElement('noscript');
	let pxImg = document.createElement("img");
	pxImg.setAttribute("height", "1");
	pxImg.setAttribute("width", "1");
	pxImg.setAttribute("src", "https://www.facebook.com/tr?id=" + pxVal + "&ev=Lead&noscript=1");
	noscript.appendChild(pxImg);
	document.head.appendChild(noscript);
});

Он выведет полный код пикселя на страницу перед закрывающим тегом </head> со значением id нашего пикселя полученным из куки. В этом примере мы прописываем полный код пикселя фейсбук, но очень часто арбитражники используют только его короткую версию, ниже пример как вывести только ее

document.addEventListener("DOMContentLoaded", function() {
	let cookieRegex = /pixel=([^;]+)/;
	let pxCookieMatch = document.cookie.match(cookieRegex);
	let pxVal = pxCookieMatch[1];

	let pxImg = document.createElement("img");
	pxImg.setAttribute("height", "1");
	pxImg.setAttribute("width", "1");
	pxImg.setAttribute("src", "https://www.facebook.com/tr?id=" + pxVal + "&ev=Lead&noscript=1");
	document.head.appendChild(pxImg);
});

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

Проброс пикселя через форму

Собственно на php это делается элементарно, добавляем во все наши формы на лендинге скрытый инпут <input type=»hidden» name=»pixel» value=»<?=$_GET[‘pixel’];»> и все, при отправке формы id нашего пикселя будет отправляться в обработчик с ключом pixel и там мы его просто получим из массива POST таким образом $px = $_POST[‘pixel’] но об этом чуть позже, а сейчас я покажу как добавить такой скрытый инпут с id пикселя средствами javascript, для этого на индексной странице перед закрывающим тегом </body> в тегах <script></script> пишем следующий код

document.addEventListener("DOMContentLoaded", function() {
	var url = new URL(window.location.href);
	var pixel = url.searchParams.get('pixel');

	var inp = document.createElement("input");

	inp.setAttribute('type', 'hidden');
	inp.setAttribute('name', 'pixel');
	inp.setAttribute('value', pixel);

	var forms = document.querySelectorAll("form");

	for (var i = 0; i < forms.length; i++) {
		forms[i].appendChild(inp);
	}
});

Вот мы и добавили скрытый инпут с нашим пикселем в формы и можем его отправлять на наш обработчик, а что же дальше? Дальше два варианта, если ваша страница спасибо и обработчик это один файл или же свою страницу спасибо вы подключаете к обработчику (как и наоборот обработчик к странице спасибо) через php выражение include то id пикселя в его код мы можем получить просто из массива post как показывал выше

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

тут рамкой я отметил получение id пикселя из массива post и его запись в переменную $px, далее находите редирект на вашу страницу спасибо? он реализуется как правило с помощью функции header(‘Location success.php’) в моем случае так, и я дописываю к адресу страницы гет параметр ?pixel= и с помощью операции конкатенации дописываю к ней нашу переменную с id пикселя $px. Все что нам остается далее сделать это забрать на странице спасибо значение id пикселя из гет параметра (pixel в моем случае) и записать его в код пикселя, как это я показывал ранее.

Хотелось описать эту тему менее объемно, но чтобы было понятно что и как, но не получилось)) Надеюсь вас не утомило чтение сего опуса и главное если вам данная информация хоть немного поможет разобраться что же такое пресловутый динамический пиксель и как прокидывать необходимые данные когда это нужно, то буду счастлив. Ну и задавайте вопросы в комментариях или в личку, всегда помогу чем могу.

В планах продолжить разбор примеров отправки заявок по API в различные CPA сетки, планирую разобрать все основные партнерки в Nutra вертикали, а также сделать разбор отправки заявок по апи в Crypto вертикали на примере такой CRM как trackbox.

О программе Макс (админ)

Смотрите также

Валидация формы

Валидация формы, что это, зачем она нужна, покажу примеры валидаторов на js, рассмотрим простейший механизм валидации данных с форм на php.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.