Устанавливаем cAPI Pixel:
ADS NINJA1. На index.php в самый верх пописываем код, который сохранит наши значения переменных в cookies:
<?php setcookie("pixel", $_GET["pixel"], time()+60*60*24);
setcookie("token", $_GET["token"], time()+60*60*24); ?>
____________________________________________________________________________
2. На index.php, перед закрытием тега </head> прописываем код стандартного JS пикселя, который сохранит и передаст fbc и fbp (cookies пикселя) для повышения атрибуции и точности отслеживания:
<!-- Facebook Pixel -->
<script>
!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');
fbq('init', '$pixel'); //
fbq('track', 'PageView');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=$pixel&ev=PageView&noscript=1"
/></noscript>
____________________________________________________________________________
3. На страницу благодарности перед закрытием тега </body> ставим два скрипта:
1. Для сохранения fbc и fbp :
<script>
function setCookie(name, value, days) {
let expires = '';
if (days) {
const date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = '; expires=' + date.toUTCString();
}
document.cookie = name + '=' + (value || '') + expires + '; path=/';
}
function getUrlParam(param) {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get(param);
}
// Сохраняем _fbp из cookie, установленной Pixel'ем
const fbp = document.cookie.match(/_fbp=([^;]+)/);
if (fbp) {
setCookie('_fbp', fbp[1], 180);
}
// Сохраняем _fbc, если пользователь перешёл по рекламе
const fbclid = getUrlParam('fbclid');
if (fbclid) {
const fbc = 'fb.1.' + Math.floor(Date.now() / 1000) + '.' + fbclid;
setCookie('_fbc', fbc, 180);
}
</script>
____________________________________________________________________________
2. Скрипт отправки события Lead по cAPI:
<?php
$pixel_id = $_COOKIE["pixel"] ?? '';
$access_token = $_COOKIE["token"] ?? '';
$fbp = $_COOKIE['_fbp'] ?? null;
$fbc = $_COOKIE['_fbc'] ?? null;
if (!empty($pixel_id) && !empty($access_token)) {
$user_data = [
'client_ip_address' => $_SERVER['REMOTE_ADDR'],
'client_user_agent' => $_SERVER['HTTP_USER_AGENT'],
];
if ($fbp) $user_data['fbp'] = $fbp;
if ($fbc) $user_data['fbc'] = $fbc;
$event_id = uniqid('', true);
$data = [
'data' => [
[
'event_name' => 'Lead',
'event_time' => time(),
'event_id' => $event_id,
'event_source_url' => 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
'user_data' => $user_data,
'custom_data' => [
'content_name' => 'Заявка с формы',
],
'action_source' => 'website',
]
],
'access_token' => $access_token,
];
$api_url = "https://graph.facebook.com/v18.0/{$pixel_id}/events";
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = curl_exec($ch);
curl_close($ch);
// Логируем всё
$log = "========== " . date("Y-m-d H:i:s") . " ==========\n";
$log .= "Pixel ID: $pixel_id\n";
$log .= "Access Token: $access_token\n";
$log .= "Event ID: $event_id\n";
$log .= "Request URL: $api_url\n";
$log .= "Client IP: " . $_SERVER['REMOTE_ADDR'] . "\n";
$log .= "User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . "\n";
$log .= "fbp: $fbp\n";
$log .= "fbc: $fbc\n";
$log .= "Data Sent:\n" . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) . "\n";
$log .= "Facebook Response:\n$response\n";
$log .= "===========================================\n\n";
file_put_contents('fb_log.txt', $log, FILE_APPEND);
}
?>