У меня есть сайт кампании с одним пейджером, который должен собрать 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
изменений хэшей не будет.
Как обычно, для замены не требуется замена строки.
Будет ли более правильным вопрос: Как отправить пользовательские данные для расширенного соответствия после инициализации пикселя? Вместо попытки сделать инициализацию ленивой/динамической.
(2) требует передачи фактических значений, а не имен переменных. Если вы хотите, чтобы пиксельный код считывал его из переменных, вам нужно использовать (1). Предложите вам установить расширение Chrome для хелперов, которое помогает при отладке. – CBroe
Спасибо за помощь! К сожалению, когда я устанавливаю 'user_email = ''' и использую 'fbq ('init', 1, {em: '{{_user_email_}}'});' для инициализации пикселя; отправить 'PageView'; затем установите 'user_email' фактическое электронное письмо; затем отправьте «Lead», я вижу как из помощника Pixel, так и для инструментов разработчика, которые * no * hashed пользовательские данные отправляются с * ни * событием (должно быть отправлено с 'Lead'). Если я задаю адрес электронной почты вручную при инициализации пикселя (например, 'fbq ('init', 1, {em: '[email protected]'});' Я вижу, что хэшированное письмо отправляется с обоими событиями. –
Не уверен, в какой момент он должен захватить значение этой переменной. Попробуйте инициализировать 'user_email' с адресом электронной почты с самого начала, прежде чем вы вызовете метод init, чтобы увидеть, что это что-то изменит. – CBroe