6

У меня есть одностраничное приложение javascript, в котором я пытаюсь реализовать Advanced Matching с помощью нового пикселя Facebook, чтобы дать нам лучшую атрибуцию наших объявлений.Продвинутое соответствие с новым пикселом Facebook в веб-приложении Javascript

В настоящее время init пиксель FB, когда приложение загружено первым, а затем выполните стандартные события отслеживания на основе поведения пользователя в приложении, например. Приобретайте, когда пользователь выполнит заказ.

упрощенный вид, что происходит ниже ...

// App loads 
// URL: xxxx.com/[client]/ 
!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'); 

// Pixel Initialised 
// we don't know any user details at this stage 

fbq('init', '[PIXELID]'); 
fbq('track', 'PageView'); 


// User selects the event they want to purchase tickets from 
// URL: xxxx.com/[client]/event/[productid]/ 

fbq('track', 'PageView'); 
fbq('track', 'ViewContent', { 
    content_name: 'Store', 
    content_ids: '[productid]', 
    content_type: 'product_group' 
}); 

// User goes through rest of purchase process 
// More Standard Events sent, e.g. Add To Cart 

// User completes purchase 
// URL: xxxx.com/[client]/order/completed/ 
// At this point we now know email address, name & phone, but pixel is already initialised. How do we do Advanced Matching? 

fbq('track', 'PageView'); 
fbq('track', 'Purchase', { 
    content_type: 'Store', 
    value: 75.00, 
    currency: 'USD', 
    num_items: 4, 
    order_id: '20160710090000', 
});  

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

У кого-нибудь был успех с использованием расширенного соответствия в одной странице приложения js?

ответ

1

Вы можете позвонить по телефону fbq('init', '<pixel_id>', '<PII>') во второй раз с помощью PII, как только эта информация будет доступна вам, и все последующие огни Pixel поднимут ее. Вы упомянули об ошибке из-за кратковременной ошибки.

+0

Да, похоже, что Facebook теперь позволяет вам «init» несколько раз на одной странице. Больше не проблема. –

0

Загрузка URL-адреса пикселей напрямую сработала для меня. В приведенном ниже примере form_data - это данные, которые доступны только после того, как пользователь выполнит их заказ.

// reinitialize with parameters 
    var split_name = form_data.name.split(" "); 
    var split_dob = form_data.date_of_birth.split("T")[0].split("-") 

    // https://stackoverflow.com/questions/39610897/how-to-initialize-facebook-pixel-with-data-that-will-be-populated-after-the-init 
    sha256(form_data.email).then(function(em) { 
     sha256(split_name[0].toLowerCase()).then(function(fn) { 
     sha256(split_name[split_name.length-1].toLowerCase()).then(function(ln) { 
      sha256(((form_data.phone).replace(")", "").replace("(","").split(" ").join("-")).split("-").join("")).then(function(pn) { 
      sha256(split_dob[0]+split_dob[1]+split_dob[2]).then(function(db) { 
       sha256(form_data.city.toLowerCase().split(" ").join("")).then(function(ct) { 
       sha256(form_data.region.toLowerCase()).then(function(st) { 
        sha256(form_data.postal_code).then(function(zp) { 
        var pixel = document.createElement('img'); 
        pixel.src = "https://www.facebook.com/tr/?id="+my_fb_pixel_id+"&ev=Purchase&ud[em]="+em+"&ud[fn]="+fn+ 
         "&ud[ln]="+ln+"&ud[pn]="+pn+"&ud[db]="+db+"&ud[ct]="+ct+"&ud[st]="+st+"&ud[zp]="+zp+"&cd[value]="+ 
         form_data.amount+"&cd[currency]=USD&cd[investment_object]="+JSON.stringify(res_ok); 
        document.body.appendChild(pixel) 
        }); 
       }); 
       }); 
      }); 
      }); 
     }); 
     }); 
    }); 

(SHA256 от: https://www.google.com/search?q=sha256+mozilla&oq=sha256+mozilla&aqs=chrome..69i57j69i60.3197j0j7&sourceid=chrome&ie=UTF-8)

Также смотрите: How to initialize Facebook Pixel with data that will be populated after the initialization?

Я попытался подход K.Lei в вызова FBQ ('инициализации', '', '') снова после того, как пользователь отправит свой заказ (через форму, в моем случае). Однако, когда я заметил, что после обновления страницы и повторной отправки формы (и, следовательно, вызова init снова) с другим именем/Birthdate/Gender/и т. Д., Старые параметры PII (начиная с обновления страницы) все равно отправляются. Это было при использовании пикселя FB через сегмент.

 Смежные вопросы

  • Нет связанных вопросов^_^