Подтвердить что ты не робот

Будет ли это причиной какой-либо проблемы, если я использую несколько пикселов Facebook на одной странице?

Я хотел бы включить оба идентификатора Facebook Pixel и идентификатор пользователя Facebook Pixel на одной странице, так что мы оба можем иметь представление о пользователях, а клиент может также создавать AD для страницы, если он или она захочет.

Я уже тестировал отслеживание и, похоже, работает нормально. Тем не менее, я получаю предупреждения от Pixel SDK о том, что на этой странице были обнаружены "несколько разных пикселей".

Поскольку я не могу найти никакой информации об этом сценарии, я хотел бы знать, хорошо ли это сделать?

Спасибо

4b9b3361

Ответ 1

https://www.facebook.com/business/help/community/question/?id=10100525729830570

В соответствии с командой помощи Facebook:

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

Ответ 2

У меня было такое же требование, и я обнаружил, что это возможно, и вам не нужно взламывать код пикселя Facebook.

Даже если он не документирован, объект fbq поддерживает множественные идентификаторы пикселей.

Просто вызовите несколько раз функцию init с разными идентификаторами пикселей. Затем, когда вы выполняете fbq('track', "PageView");, он выдаст одно событие на пиксель. Вы можете вызывать fbq('track', '{{your_event_name}}') столько раз, сколько хотите, и он будет отслеживать событие для всех ранее инициализированных пикселей.

Итак, ваш окончательный код будет выглядеть так:

<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','//connect.facebook.net/en_US/fbevents.js');
    fbq('init', '{{pixel_id_1}}');
    fbq('init', '{{pixel_id_2}}');
    fbq('track', "PageView");
</script>
<noscript>
  <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id={{pixel_id_1}}&ev=PageView&noscript=1" />
  <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id={{pixel_id_2}}&ev=PageView&noscript=1" />
</noscript>

Ответ 3

Множественный код пикселя Facebook

Чтобы иметь возможность запускать различные события в разные пиксели Facebook, без необходимости вызова всех ранее инициализированных пикселей Facebook, вы можете перезаписать функцию fbq (путем копирования и вставки фрагмента ниже на вашу базу кода), а затем вызвать события отслеживания, как описано в разделе Использование ниже.

<script type="text/javascript">
(function() {
  var fbq = (function() {
    function fbq()
    {
      if(arguments.length > 0) {
        var action, pixel_id, type_track, content_obj;

        if( typeof arguments[0] == "string") action = arguments[0];
        if( typeof arguments[1] == "string") pixel_id = arguments[1];
        if( typeof arguments[2] == "string") type_track = arguments[2];
        if( typeof arguments[3] == "object") content_obj = arguments[3];

        var params = [];
        if(typeof action == "string" && action.replace(/\s+/gi, "") != "" &&
        typeof pixel_id == "string" && pixel_id.replace(/\s+/gi, "") != "" &&
        typeof type_track == "string" && type_track.replace(/\s+/gi, "")) {

          params.push("id=" + encodeURIComponent(pixel_id));
          switch(type_track) {
            case "PageView":
            case "ViewContent":
            case "Search":
            case "AddToCart":
            case "InitiateCheckout":
            case "AddPaymentInfo":
            case "Lead":
            case "CompleteRegistration":
            case "Purchase":
            case "AddToWishlist":
            params.push("ev=" + encodeURIComponent(type_track));
            break;
            default:
            return;
          }

          params.push("dl=" + encodeURIComponent(document.location.href));
          params.push("rl=" + encodeURIComponent(document.referrer));
          params.push("if=false");
          params.push("ts=" + new Date().getTime());

          if(typeof content_obj == "object") {
            for(var u in content_obj) {
              if(typeof content_obj[u] == "object" && content_obj[u] instanceof Array) {
                if(content_obj[u].length > 0) {
                  for(var y=0; y<content_obj[u].length; y++) { content_obj[u][y] = (content_obj[u][y]+"").replace(/^\s+|\s+$/gi, "").replace(/\s+/gi," ").replace(/,/gi, "§"); }
                  params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u].join(",").replace(/^/gi, "[\"").replace(/$/gi, "\"]").replace(/,/gi, "\",\"").replace(/§/gi, "\,")));
                }
              }
              else if(typeof content_obj[u] == "string")
              params.push("cd[" + u + "]=" + encodeURIComponent(content_obj[u]));
            }
          }

          params.push("v=" + encodeURIComponent("2.5.0"));

          if(typeof window.jQuery == "function") {
            var iframe_id = new Date().getTime();
            jQuery("body").append("<img height='1' width='1' style='display:none;width:1px;height:1px;' id='fb_" + iframe_id + "' src='https://www.facebook.com/tr/?" + params.join("&") + "' />");
            setTimeout(function() { jQuery("#fb_" + iframe_id).remove(); }, 1000);
          }
        }
      }
    }

    return fbq;
  });

  window.fbq = new fbq();
})();
</script>

Использование

Теперь функция fbq принимает 3 параметра. Первым параметром будет только "трек". Второй - новый, где вы можете указать идентификатор пикселя Facebook, который хотите использовать для отслеживания этого конкретного события. В-третьих, как обычно, скажем название события. И, наконец, вы можете передавать другие параметры, такие как стоимость покупки, валюта, content_ids и т.д.

<script>
  fbq('track', '<FIRST_PIXEL_ID>', 'PageView');
  fbq('track', '<FIRST_PIXEL_ID>', 'Purchase', {value: 79.9, currency: 'BRL'});
  fbq('track', '<SECOND_PIXEL_ID>', 'Purchase', {value: 89.9, currency: 'BRL'});
</script>

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

Demo

Вы можете найти результаты на этой странице продукта, хотя я не использовал разные данные на странице продукта. Но я использую его для запуска событий покупки с различными значениями покупки в кассе. Кроме того, если у вас его еще нет, загрузите расширение Facebook Pixel Helper для Google Chrome. Это поможет вам отладить пиксель Facebook.

Ответ 4

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

См. this.

Ответ 5

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

После включения полного фрагмента кода пикселя Facebook один раз на сайте, вы можете просто добавить дополнительные элементы идентификатора пикселя, прежде чем вызывать какие-либо события трека. Таким образом, ваш полный фрагмент кода на сайте будет выглядеть следующим образом:

<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','//connect.facebook.net/en_US/fbevents.js');
    fbq('init', '[first-pixel-id]');
    fbq('init', '[second-pixel-id]');
    fbq('track', 'PageView');
</script>
<noscript>
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=[first-pixel-id]&ev=PageView&noscript=1" />
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=[second-pixel-id]&ev=PageView&noscript=1" />
</noscript>

После инициализации всех идентификаторов пикселей на вашем сайте с помощью fbq('init') вы можете подтвердить, что они были загружены, запустив следующий код в консоли JavaScript:

fbq.getState().pixels

Вы также должны установить Facebook Pixel Helper. Он дает некоторую подробную информацию о каждом пикселе и каждом событии трека, отправленном на Facebook.

Следующий естественный вопрос - как отслеживать события только с одним из этих идентификаторов пикселей. Если вы работаете с каталогом продуктов для динамических объявлений Facebook, вам может потребоваться отслеживать события и передавать Facebook свой уникальный идентификатор продукта для продукта на сайте.

К сожалению, пиксель Facebook не может этого сделать. Но вы можете взломать его.

Метод <noscript> отслеживания события просмотра страницы в Facebook дал мне подсказку о том, что вы можете отслеживать события для одного пикселя, а не через объект fbq.

В ответе Флавио Уенше он действительно реализовал эту идею. Я взял его, очистил и модифицировал.

код

(function (window, document) {
    if (window.myfbq) return;
    window.myfbq = (function () {
        if (arguments.length > 0) {
            var pixelId, trackType, contentObj;

            if (typeof arguments[0] == 'string') pixelId = arguments[0];
            if (typeof arguments[1] == 'string') trackType = arguments[1];
            if (typeof arguments[2] == 'object') contentObj = arguments[2];

            var params = [];
            if (typeof pixelId === 'string' && pixelId.replace(/\s+/gi, '') != '' &&
            typeof trackType === 'string' && trackType.replace(/\s+/gi, '')) {
                params.push('id=' + encodeURIComponent(pixelId));
                switch (trackType) {
                    case 'PageView':
                    case 'ViewContent':
                    case 'Search':
                    case 'AddToCart':
                    case 'InitiateCheckout':
                    case 'AddPaymentInfo':
                    case 'Lead':
                    case 'CompleteRegistration':
                    case 'Purchase':
                    case 'AddToWishlist':
                        params.push('ev=' + encodeURIComponent(trackType));
                        break;
                    default:
                        return;
                }

                params.push('dl=' + encodeURIComponent(document.location.href));
                if (document.referrer) params.push('rl=' + encodeURIComponent(document.referrer));
                params.push('if=false');
                params.push('ts=' + new Date().getTime());

                if (typeof contentObj == 'object') {
                    for (var u in contentObj) {
                        if (typeof contentObj[u] == 'object' && contentObj[u] instanceof Array) {
                            if (contentObj[u].length > 0) {
                                for (var y = 0; y < contentObj[u].length; y++) { contentObj[u][y] = (contentObj[u][y] + '').replace(/^\s+|\s+$/gi, '').replace(/\s+/gi, ' ').replace(/,/gi, '§'); }
                                params.push('cd[' + u + ']=' + encodeURIComponent(contentObj[u].join(',').replace(/^/gi, '[\'').replace(/$/gi, '\']').replace(/,/gi, '\',\'').replace(/§/gi, '\,')));
                            }
                        }
                        else if (typeof contentObj[u] == 'string')
                            params.push('cd[' + u + ']=' + encodeURIComponent(contentObj[u]));
                    }
                }

                params.push('v=' + encodeURIComponent('2.7.19'));

                var imgId = new Date().getTime();
                var img = document.createElement('img');
                img.id = 'fb_' + imgId, img.src = 'https://www.facebook.com/tr/?' + params.join('&'), img.width = 1, img.height = 1, img.style = 'display:none;';
                document.body.appendChild(img);
                window.setTimeout(function () { var t = document.getElementById('fb_' + imgId); t.parentElement.removeChild(t); }, 1000);
            }
        }
    });
})(window, document);

Использование

myfbq("[your-pixel-id]", "PageView");
myfbq("[your-pixel-id]", "ViewContent");
myfbq("[your-pixel-id]", "ViewContent", { content_type: "product", content_ids: ['892185001003'] });

Дальнейшая дискуссия

Обратите внимание, что эта функция myfbq не имеет связей или связей с объектом fbq. Он просто динамически вставляет теги <img> на сайт, которые совершают вызовы в Facebook для отслеживания событий для отдельных пикселей. Таким образом, вы можете отслеживать события ко всем пикселям, инициализированным на сайте, с помощью обычного фрагмента кода пикселя Facebook или всего лишь одного идентификатора пикселя с помощью функции myfbq, или вы можете сделать оба!

Если вы хотите сделать оба варианта, включите функцию myfbq на сайт, то ваш фрагмент кода пикселя Facebook может выглядеть так:

<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','//connect.facebook.net/en_US/fbevents.js');
    fbq('init', '12345678');
    fbq('init', '87654321');
    fbq('track', 'PageView'); //tracks a PageView event to all initialized pixels

    myfbq("87654321", "ViewContent", { content_type: "product", content_ids: ['892185001003'] }); //tracks a ViewContent event to only one pixel, with your own unique ProductId
</script>
<noscript>
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=12345678&ev=PageView&noscript=1" />
    <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=87654321&ev=PageView&noscript=1" />
</noscript>