2016-09-21 2 views
6

У меня есть сайт кампании с одним пейджером, который должен собрать PageView и LEAD данные о событиях для таргетинга на Facebook с «расширенным соответствием».Как инициализировать Facebook Pixel с данными, которые будут заполнены после инициализации?

Для PageView, мне нужно инициализировать пиксель при загрузке страницы. Для расширенного сопоставления мне необходимо предоставить пользовательские данные для сценария инициализации - однако, я имею только пользовательские данные, доступные после того, как пользователь отправил данные, то есть когда должно быть отправлено событие LEAD.

Возможно ли предоставить сценарий инициализации «указателем» на переменную javascript, которая используется при отправке события LEAD? Справочная страница подсказывает это, но все примеры имеют, например, параметр электронной почты, предоставленный в виде простого текста или хэша sha256; а не как переменная JS, а не как текстовый указатель на один.

Из "Advanced Matching with the Pixel" help page:

Чтобы включить эту функцию, изменять код FB пикселя по умолчанию для передачи данных в вызов пикселя инициализации.

fbq('init', '<FB_PIXEL_ID>', { 
    em: '{{_email_}}', 
    // Data will be hashed automatically via a dedicated function in FB pixel 
    ph: '{{_phone_number_}}', 
    fn: '{{_first_name_}}' 
    .... 
}) 

В приведенном выше примере, вам нужно будет заменить электронную почту, PHONE_NUMBER, first_name с именами переменных на вашем сайте, что захвата эти данные.

Скажем, у меня есть user_email переменную в том же объеме, как fbq-init:

var user_email = ''; 

Позже, после того, как форма отправлена, эта переменная будет заполняться как

user_email = "[email protected]"; 

Как я должен укажите переменную в fbq? (1) Нравится?

fbq('init', 123456, { em: '{{_user_email_}}' }); 

(2) Или как это?

fbq('init', 123456, { em: 'user_email' }); 

(3) Или я должен предоставить это просто с переменной:

fbq('init', 123456, { em: user_email }); // nb: user_email === false when this is run 

(4) Или я должен инициализировать пиксель без каких-либо данных соответствия, а затем обогащают его? (Как?)

Уважаемое рекламное агентство отправило меня с инструкциями для отправки имени переменной, как в моем примере 2, но справочная страница намекает на 1 без фактического предоставления каких-либо реальных примеров.


Я попробовал все варианты 1-3, и, кажется, переменные не будут получать переоценены в последующих fbq('track', …); вызовов после инициализации. Если user_email пуст для начала, ни одно из событий не будет содержать хешированные пользовательские данные.

Более того, даже если я начну с действующего адреса электронной почты user_email = "[email protected]"; (также попробовал настоящие домены вместо примера.com) будет работать только метод 3, но, как и ожидалось, это не динамический, т.е. если user_email изменений хэшей не будет.

Как обычно, для замены не требуется замена строки.

Будет ли более правильным вопрос: Как отправить пользовательские данные для расширенного соответствия после инициализации пикселя? Вместо попытки сделать инициализацию ленивой/динамической.

+1

(2) требует передачи фактических значений, а не имен переменных. Если вы хотите, чтобы пиксельный код считывал его из переменных, вам нужно использовать (1). Предложите вам установить расширение Chrome для хелперов, которое помогает при отладке. – CBroe

+0

Спасибо за помощь! К сожалению, когда я устанавливаю 'user_email = ''' и использую 'fbq ('init', 1, {em: '{{_user_email_}}'});' для инициализации пикселя; отправить 'PageView'; затем установите 'user_email' фактическое электронное письмо; затем отправьте «Lead», я вижу как из помощника Pixel, так и для инструментов разработчика, которые * no * hashed пользовательские данные отправляются с * ни * событием (должно быть отправлено с 'Lead'). Если я задаю адрес электронной почты вручную при инициализации пикселя (например, 'fbq ('init', 1, {em: '[email protected]'});' Я вижу, что хэшированное письмо отправляется с обоими событиями. –

+0

Не уверен, в какой момент он должен захватить значение этой переменной. Попробуйте инициализировать 'user_email' с адресом электронной почты с самого начала, прежде чем вы вызовете метод init, чтобы увидеть, что это что-то изменит. – CBroe

ответ

1

В качестве временного решения можно сгенерировать Lead событие с пользователем по электронной почте данные по загрузке пикселей (изображение) с помощью JavaScript:

// here the user email is unknown, so PageView is generated without email 
fbq('init', 123456, {}); 
fbq('track', 'PageView'); 

// Later the form is submitted via ajax, so the user email is known 
$.ajax(…).done(function(data) { 
    // I decided to sha256 hash the email address in the backend and return it for the javascript handler 
    var pixel = document.createElement('img'); 
    pixel.src = 'https://www.facebook.com/tr/?id=123456&ev=Lead&ud[em]=' + data; 
    document.body.appendChild(pixel); 
    // confirmed by the Pixel helper Chrome extension, this does generate a valid tracking event 
    // (ironically, we're loading the noscript version via javascript) 
}); 

Конечно, чистая fbq версия будет более желательным. Кроме того, я еще не знаю о возможных недостатках, если они есть.