Увольнение пикселя преобразования Facebook
Я все еще довольно новичок в Javascript, но мне было интересно, что будет лучшим способом для запуска пикселя преобразования Facebook (ниже) без фактической загрузки страницы "подтверждения" / "Спасибо"?
<script type="text/javascript">
var fb_param = {};
fb_param.pixel_id = 'XXXXXXXXXXX';
fb_param.value = '0.00';
fb_param.currency = 'USD';
(function(){
var fpw = document.createElement('script');
fpw.async = true;
fpw.src = '//connect.facebook.net/en_US/fp.js';
var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(fpw, ref);
})();
</script>
<noscript><img height="1" width="1" alt="" style="display:none"
src="https://www.facebook.com/offsite_event.php?id=XXXXXXXXXX&value=0&currency=USD" /></noscript>
Facebook говорит, что мы должны подключить это к нашим страницам "Спасибо", которые посетители видят после конвертации (заполняют форму, совершают покупку и т.д.). Однако некоторые из наших форм представляют собой всплывающие окна или формы на боковых панелях рядом с контентом, которые мы не хотим, чтобы читатели были перенаправлены с помощью страницы подтверждения.
В Google Analytics я могу создать "невидимый" просмотр страницы, нажав _gaq.push(['_ trackPageview]); код, который может сказать GA, что он должен считать невидимое просмотрение страницы в качестве цели.
Есть ли что-то похожее на то, что достаточно общего для того, чтобы сообщить моему сайту о пожаре пикселя FB?
Ответы
Ответ 1
EDIT: я обновил свой код, поскольку то, о чем я говорил ранее, не работал. Спасибо @Flambino, чтобы указать.
Это мой пересмотренный ответ, используя пиксель, а не script, чтобы передать пиксель преобразования. Я ссылаюсь на Как отслеживать конверсию Google Adwords onclick? Сообщение SO:
<head>
<script type="text/javascript">
function facebookConversionPixel(fb_pixel, fb_value){
var image = new Image(1,1);
image.src = "//www.facebook.com/offsite_event.php?id=" + fb_pixel + "&value=" + fb_value + "&currency=USD";
}
</script>
</head>
<body>
<a href="#" onclick="facebookConversionPixel(123456,0.00);">FBCONV</a>
</body>
Ответ 2
Из документов FB "Как отслеживать события на странице" :
После установки фрагмента базового кода вы можете отслеживать действия на странице, такие как щелчки на кнопке, путем вызова _fbq.push('track') для пикселя преобразования путем регистрации различных обработчиков событий в HTML Элемент DOM. Например:
function trackConversionEvent(val, cny) {
var cd = {};
cd.value = val;
cd.currency = cny;
_fbq.push(['track', '<pixel_id>', cd]);
}
<button onClick="trackConversionEvent('10.00','USD');" />
Ответ 3
Просто переместите весь исходный код в выбранное вами событие. Затем просто измените 1 часть кода. То, что вам нужно сделать, это сделать fb_param
глобальным вместо локального.
См. ниже в комментарии
$('.button').click(function() {
window.fb_param = {}; // must be global by adding `window.`
fb_param.pixel_id = '123456789';
fb_param.value = '0.00';
fb_param.currency = 'USD';
(function(){
var fpw = document.createElement('script'); fpw.async = true; fpw.src = '//connect.facebook.net/en_US/fp.js';
var ref = document.getElementsByTagName('script')[0];
ref.parentNode.insertBefore(fpw, ref);
})();
});
Ответ 4
У меня была аналогичная проблема, и я хотел бы запустить несколько добавлений для отслеживания кодов пикселей, и по какой-то причине я не смог отслеживать. Я сделал то, что на текущей странице я добавил пиксельный код в нижний колонтитул и функцию javascript
для вызова при отправке моей кнопки ajax.
Сначала обратитесь к странице документации в Facebook
https://developers.facebook.com/docs/ads-for-websites/conversion-pixel-code-migration#multi-conv-events
Как отслеживать несколько событий преобразования
После установки фрагмента базового кода вы можете отслеживать несколько преобразований на одной и той же веб-странице, делая несколько вызовов _fbq.push('track') для каждого идентификатора пикселя преобразования. Например:
_fbq.push(['track','<pixel_id1>',{'value':'10.00','currency':'USD'}]);
_fbq.push(['track','<pixel_id2>']);
Как отслеживать события на странице
После установки фрагмента базового кода вы можете отслеживать действия на странице, такие как щелчки на кнопке, путем вызова _fbq.push('track') для пикселя преобразования путем регистрации различных обработчиков событий в HTML Элемент DOM. Например:
function trackConversionEvent(val, cny) {
var cd = {};
cd.value = val;
cd.currency = cny;
_fbq.push(['track', '<pixel_id>', cd]);
}
<button onClick="trackConversionEvent('10.00','USD');" />
Кроме того, добавьте хром-адроны кода отслеживания пикселов facebook и перейдите на страницу вспомогательной страницы пикселя facebook: https://developers.facebook.com/docs/ads-for-websites/pixel-troubleshooting
См. мой ниже решение/ответ
Код отслеживания Facebook на текущей странице (функция() { var _fbq = window._fbq || (window._fbq = []); if (! _fbq.loaded) { var fbds = document.createElement('script'); fbds.async = true; fbds.src= '//connect.facebook.net/en_US/fbds.js'; var s = document.getElementsByTagName('script') [0]; s.parentNode.insertBefore(fbds, s); _fbq.loaded = true; } })(); window._fbq = window._fbq || []; window._fbq.push(['track', 'yourid', {'value': '1.00', 'currency': 'USD'}]);
<!-- Facebook Conversion -->
<script>(function() {
var _fbq = window._fbq || (window._fbq = []);
if (!_fbq.loaded) {
var fbds = document.createElement('script');
fbds.async = true;
fbds.src = '//connect.facebook.net/en_US/fbds.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(fbds, s);
_fbq.loaded = true;
}
})();
window._fbq = window._fbq || [];
window._fbq.push(['track', 'yourid', {'value':'1.00','currency':'USD'}]);
</script>
И код javascript для вызова при отправке формы ajax или нажатии кнопки
<script>
function trackConversionEvent(val, cny) {
var cd = {};
cd.value = val;
cd.currency = cny;
_fbq.push(['track', 'yourid1', cd]);
_fbq.push(['track', 'yourid1', cd]);
}
</script>
и вызов функции, когда ajax называется
jQuery(form).ajaxSubmit({
type:"POST",
data: $(form).serialize(),
url:"process.php",
success: function() {
**trackConversionEvent**('1.00','USD');
}
......
Ответ 5
Facebook обновил свои пиксели, поэтому я создал свою собственную настраиваемую функцию для вызова, которая будет динамически добавлять параметры вместе для отправки в Facebook.
Шаг 1. На каждой странице убедитесь, что вы инициализировали свой пиксель в элементе head страница.
Шаг 2. Добавьте эту настраиваемую функцию, которую я создал (это немного подробный, поскольку это первый черновик, поэтому я уверен, что есть способы его оптимизации для вашей выгоды).
triggerFacebookPixel: function(type, price, product_id, product_name, product_category, num_items) {
//See https://developers.facebook.com/docs/ads-for-websites/pixel-events/v2.8#events for documentation
//type = "ViewContent"|"AddToCart"|"Search"|"AddToWishlist"|"InitiateCheckout"|"AddPaymentInfo"|"Purchase"|"Lead"|"CompleteRegistration"
//product_id = Numeric Product ID. String or Integer accepted for single product events, or an array of integers for multiple products.
//price = Decimal/Float number of individual product price or total price paid in conversion, or the user status for 'CompleteRegistration'
//product_name = Optional. String of individual product name or string of search query
//product_category = Optional. String of product category, hierarchy accepted. E.g. "Clothing > Shirts > Men > T-Shirts"
//num_items = Optional. Total number of products.
var data = {
value: typeof(price) == 'string' ? parseFloat(price) : price,
currency: 'USD'
}
switch (type) {
case 'Search':
data.content_ids = product_id;
data.search_string = product_name;
if (product_category !== undefined && product_category != '') {
data.content_category = product_category;
}
break;
case 'Lead':
data.content_name = product_name;
data.content_category = product_category;
break;
case 'CompleteRegistration':
data.status = product_id;
data.content_name = product_name;
break;
default:
//Product Specific Calls
//ViewContent|AddToCart|AddToWishlist|InitiateCheckout|AddPaymentInfo|Purchase
if (num_items == 1) {
data.content_ids = [typeof(product_id) == 'string' ? parseInt(product_id) : product_id];
data.content_category = product_category;
data.content_name = product_name;
} else {
data.content_ids = product_id;
}
//"num_items" is only a parameter used in these two types
if (type == 'InitiateCheckout' || type == 'Purchase') {
data.num_items = num_items
}
//"content_type" is only a parameter used in these three types
if (type == 'Purchase' || type == 'AddToCart' || type == 'ViewContent') {
data.content_type = 'product';
}
break;
}
fbq('track', type, data);
}
Шаг 3. Вызовите эту функцию с соответствующими параметрами.
Для вашего всплывающего окна после покупки пиксель запускается по-разному, если пользователь покупает 1 элемент, а не несколько элементов. В принципе, Facebook принимает параметры для названий продуктов и категорий, если это только один продукт, но не принимает эти параметры, если он содержит несколько продуктов.
В следующих примерах приведены некоторые примеры данных продукта пользователя покупка 1 пункта:
- Название продукта: "Моя супервольная футболка"
- Идентификатор продукта: 182
- Категория продукта: "Одеждa > Рубашки > Футболки"
- Общая сумма оплаченного пользователя (включая доставку/обработку и налог): $10.84
И вот функция, которую вы вызывали при подтверждении:
triggerFacebookPixel('Purchase', 10.84, 182, 'My Super Awesome T-Shirt', 'Clothing > Shirts > T-Shirts', 1);
Когда пользователь приобретает несколько элементов, пиксель обрабатывает его по-разному, исключая названия продуктов и категории и только отправляя их идентификаторы. Поэтому давайте предположим, что наш пользователь приобрел эти два элемента:
- Идентификаторы продукта: 182 и 164 (рубашка и что-то еще)
- Общая сумма оплаченного пользователя (включая доставку/обработку и налог): $24.75
Вот как вы можете использовать эту функцию:
triggerFacebookPixel('Purchase', 24.75, [182, 164], '', '', 2);
Для других стандартных событий, определенных Facebook в отношении продуктов, вы можете использовать эту же функцию для "ViewContent", "AddToCart", AddToWishlist "," InitiateCheckout "и" AddPaymentInfo ". Просто измените" Приобретение" на любое из этих ключевых слов в вашем вызове.
Другие события не обязательно связаны с продуктами: "Свинец", "Поиск" и "Полная регистрация". Вы можете использовать эту функцию для таких ключевых слов, как это.
Пример: пользователь найден для "синих рубашек":
triggerFacebookPixel('Search', 0, [], 'blue shirts');
Если вы хотите передать категорию продукта в функцию поиска пользователя, вы можете передать это как строку в конце. Я не могу придумать сценарий использования, где вы знаете, какую категорию ищет пользователь. Если вы не использовали это в том случае, если продукт отображается в результатах поиска, и пользователь нажал на него со страницы поиска. Возможно, это и есть эта функция, но документация не совсем понятна. Если это для вас, то просто измените 0 и пустой массив на фактические значения (цена и идентификатор продукта соответственно) продукта, который был нажат на странице результатов поиска, и добавьте его категорию как строку в качестве последней после строки поиска.
Пример: пользователь отправил форму, которая подписала их на ваш рассылку:
triggerFacebookPixel('CompleteRegistration', 0, 'Signed Up', 'Newsletter');
Документация на Facebook гласит, что при заполнении регистрационной формы следует использовать "CompleteRegistration", например. полная подписка/регистрация для услуги. Строка "Подпись" является параметром "статус", а строка "Информационный бюллетень" является параметром "content_name".
Пример: пользователь отправил форму, которая подписала их на бесплатную 30-дневную пробную версию какой-либо услуги, которую вы предлагаете (так что теперь она является лидером), где имя службы "Свободно" 30-дневная пробная служба ", а также в подкатегории" Бесплатные испытания "в категории" Мои услуги ":
triggerFacebookPixel('Lead', 0, 'Free 30-Day Trial Service', 'My Services > Free Trials');
Документация на Facebook гласит, что "Свинец" - это когда регистрация завершена, например. нажмите на цену, зарегистрируйтесь для пробной версии. Я предположил, что именем службы является параметр "content_name", а категория службы - параметр "content_category".