Я пытаюсь вызвать свой Facebook-пиксель.
Это проблема:
У меня есть собственный пиксель изображения, установленный на веб-сайте клиента, когда мой пиксель запускается на клиентском веб-сайте, он отправляет запрос на мой сервер, который после некоторых вставок в db перенаправляет запрос на страницу CFML (HTML для ColdFusion), которая имеет пиксельный код из Facebook, как показано ниже:
<script>
// Facebok Pixel Init Code
fbq('init', 'PIXEL_ID');
fbq('trackCustom', 'myCustomEvent', {});
</script>
<noscript>
<img src="THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1">
</noscript>
Когда я напрямую обращаюсь к странице через браузер, он успешно запускает пиксель, и я могу видеть его в отчете о пикселях Facebook. Но когда запрос перенаправляется на страницу после вставки в db, пиксель не запускается.
Я думаю, это потому, что JavaScript и HTML никогда не добавляются в DOM, поэтому он никогда не запускается...
Вы знаете, как я могу это достичь?
Я думаю, если, возможно, я отправлю HTTP-запрос GET в <img>
надеюсь, что Facebook примет его.
ОБНОВИТЬ
Так вот что происходит, запрос, который я отправляю, запускает событие, но @Jules прав. Я не могу найти, какое объявление привело к конверсии с использованием этого метода, проблема в том, что при нажатии на трафик на сайт наших клиентов, в котором мы не можем установить код javascript.
Я попытался проверить, что хранит файлы cookie в cookie, поэтому, когда я делаю запрос GET, я отправляю эти значения, но это происходит:
1 - Объявление отправляет пользователя по следующей ссылке:
l.facebook.com/l.php?u=redirect_url&h=some_token_here
На этой странице я могу проверить, что есть несколько файлов cookie (я предполагаю, что это значения, которые нужно найти в facebook, чтобы найти, какое объявление привело к конверсии)
2 - Затем пользователь перенаправляется на страницу формы наших клиентов
Я также пытался проверить файлы cookie, но файлы cookie, похоже, не существуют..
Мне нужна помощь людям!
Вы не должны писать код HTML/Javascript.
Первый пиксель преобразования вызывается через тег img
поэтому вы не можете отвечать HTML/Javascript.
Все, что вам нужно сделать, это вернуть перенаправление (301) на конечный пиксель изображения. В этом случае:
Redirect 301 THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1
Итак, ребята,
Я сделал это так:
Вместо того, чтобы использовать CFLOCATION
для перенаправления запроса на страницу CFML
где есть фрагмент Facebook JS, я напрямую использую CFHTTP
для запроса URL отслеживания Facebook. Вот так:
<cfif #source# eq 'facebook'>
<cfhttpparam type="url" name="id" value="PIXEL_ID">
<cfhttpparam type="url" name="ev" value="myCustomEvent">
<cfhttpparam type="url" name="noscript" value="1">
</cfif>
Это сработало! :)
Основываясь на ваших комментариях, ниже может работать. Вы будете использовать тег изображения noscript
. Я думаю, что вы хотите вернуться с CFML, это CFLocation на правильный URL-адрес пикселя FB, а не на загрузку cfhttp. Таким образом, клиент все еще загружает пиксель FB, и вы по-прежнему отслеживаете его загрузку между ними.
Загрузка браузера
<img src="//your-server.net/trackPixel.cfm?some_vars=some_vals">
Этот CFML делает...
<!--- DO YOUR STORAGE AND OTHER LOGIC --->
<cfquery>...</cfquery>
<!--- THEN REDIRECT --->
<cflocation url="the_official_fb_image_url.gif" addToken="no">
Поэтому, когда пользовательский браузер загружает ваш cfm в качестве изображения, ответ заключается в загрузке другого изображения.
Если вы используете CFlocation
то нет, сценарии не будут срабатывать. Вместо этого используйте перенос javascript. Дайте браузеру достаточно времени, чтобы загрузить страницу и запустить сценарий. Что-то вроде этого:
<script>
fbq('init', 'PIXEL_ID');
fbq('trackCustom', 'myCustomEvent', {});
setTimeout(
function(){
window.location.href='';
// or simply: history.go(-1);
},
3000
);
</script>
<noscript>
<img src="THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1">
</noscript>