6

Mam jedną aplikację javascript na jednej stronie, w której próbuję zaimplementować Advanced Matching za pomocą New Facebook Pixel, aby dać nam lepszą rozpoznawalność naszych reklam.Zaawansowane dopasowanie do nowego Facebooka Pixel w aplikacji internetowej JavaScript

Obecnie inicjujemy piksel FB, gdy aplikacja jest ładowana po raz pierwszy, a następnie uruchamiamy standardowe zdarzenia śledzenia na podstawie zachowania użytkownika w aplikacji, np. Zakup po zakończeniu przez użytkownika zamówienia.

Uproszczony widok tego, co się dzieje jest poniżej ...

// 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', 
});  

Zaawansowana dopasowanie przypomina, że ​​pola powinna być ustawiona, gdy piksel jest zainicjowany. Ponieważ jednak inicjalizujemy piksel tylko raz podczas ładowania aplikacji (gdy nie znamy żadnych szczegółów użytkownika), nie jestem pewien, jak zastosować zaawansowane dopasowanie. Inicjowanie tego samego piksela ponownie powoduje błąd i wydaje się, że nie istnieje sposób przekazywania zaawansowanych pól dopasowania w zdarzeniu śledzenia lub sposób ponownego zainicjowania piksela.

Czy ktoś miał powodzenie przy użyciu zaawansowanego dopasowywania w aplikacji js pojedynczej strony?

Odpowiedz

1

Po raz drugi można zadzwonić na numer fbq('init', '<pixel_id>', '<PII>') z PII, gdy tylko informacje będą dostępne, a wszystkie następne pożary pikseli go wykryją. Błąd, o którym wspomniałeś, mógł być spowodowany przejściowym błędem.

+0

Tak, wygląda na to, że Facebook umożliwia teraz "inicjowanie" wiele razy na tej samej stronie. Nie jest już problemem. –

0

Ładowanie bezpośrednio adresu URL piksela działa najlepiej. W poniższym przykładzie form_data to dane dostępne tylko po zakończeniu przez użytkownika zamówienia.

// 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 jest od: https://www.google.com/search?q=sha256+mozilla&oq=sha256+mozilla&aqs=chrome..69i57j69i60.3197j0j7&sourceid=chrome&ie=UTF-8)

również zobaczyć: How to initialize Facebook Pixel with data that will be populated after the initialization?

Próbowałem podejście K.Lei za zwołania FBQ ('init', '', '') ponownie po złożeniu przez użytkownika zamówienia (za pośrednictwem formularza, w moim przypadku). Jednak, gdy zauważyłem, że po odświeżeniu strony i przesłaniu formularza ponownie (i dlatego wywołanie init ponownie) z inną nazwą/Data urodzenia/Płeć/itp., Stare parametry PII (sprzed odświeżania strony) są nadal wysyłane. Było to jednak podczas używania piksela FB przez Segment.

Powiązane problemy