Создайте пиксель
Назовите его по продукту, сайту или воронке.
PIXORA ADS SIGNAL LAYER
Подключите пиксель один раз, сохраните путь от рекламного клика до заявки и не теряйте важные события в аналитике.
Создайте Pixel, подтвердите HTTPS-домен, проверьте тестовые события и выберите его при создании веб-кампании или в её настройках.
Назовите его по продукту, сайту или воронке.
Разместите файл с точным токеном на этом адресе по HTTPS.
Откройте сайт напрямую и проверьте PageView, ViewContent и Lead.
В разделе «Продвигать → Веб-трафик» выберите Pixel на шаге «Аудитория» или в настройках готовой кампании.
Для проверки live-атрибуции откройте сайт через настоящий переход из веб-кампании. Только такой переход создаёт px_click; прямая ссылка его не даёт. Посмотреть демо-лендинг LENTO.
Обычный HTML, React, WordPress или SPA — выберите свой сценарий и отправляйте события через маленький SDK.
Добавьте код один раз в head или layout. Новый SDK ждёт явного согласия на аналитику: вызовите consent из вашей CMP, даже если async-скрипт ещё не загрузился.
<script>
window.PixorAdsPixel = window.PixorAdsPixel || { q: [] };
window.PixorAdsPixel.track = window.PixorAdsPixel.track || function (name, options) {
window.PixorAdsPixel.q.push([name, options]);
};
window.PixorAdsPixel.consent = window.PixorAdsPixel.consent || function (value) {
window.PixorAdsPixel.q.push(["consent", value]);
};
</script>
<script async data-consent="required" src="https://pixora-ads.com/sdk/pixorads-pixel.js?pixel_id=px_your_id"></script>По умолчанию согласие неизвестно. Отказ останавливает сбор и удаляет сохранённую атрибуцию. Старые установки сохраняют поведение до перехода на data-consent=required.
// Вызовите из обработчика согласия вашей CMP, не автоматически:
function onAnalyticsConsentChanged(granted) {
window.PixorAdsPixel.consent(granted ? "granted" : "denied");
}После согласия SDK один раз отправляет PageView и поддерживает px_click и px_tclick. Серверный ключ не размещайте на странице. В live-режиме Origin должен совпадать с подтверждённым HTTPS-доменом.
PageView, Lead, CompleteRegistration и Purchase имеют единый формат, стабильный eventId и прозрачный журнал.
Отправляйте Lead только после успешного ответа сервера. Используйте выданный им стабильный event_id в браузере и postback.
// После успешного ответа на заявку:
window.PixorAdsPixel.track("Lead", {
eventId: acceptedLead.event_id,
});События браузера показывают действия, но не подтверждают серверную конверсию и не меняют оплату. Не отправляйте Purchase для демонстрационной заявки.
Пиксель помогает увидеть воронку, а HMAC-подписанный postback подтверждает целевые действия для аналитики.
Сервер подписывает точные байты JSON: timestamp + точка + raw JSON. Передайте тот же event_id, что в браузере; повторяйте запрос с ним же.
// Node.js 22+, YOUR SERVER. Keep the signing key out of the browser.
import { createHmac } from "node:crypto";
async function sendPixelEvent(event) {
// Persist this event in your outbox after the real outcome, with its original
// event_id and px_click (or px_tclick). Reuse the same body on retries.
const raw = JSON.stringify(event);
const timestamp = String(Math.floor(Date.now() / 1000));
const signature = createHmac("sha256", process.env.PIXORADS_PIXEL_KEY)
.update(timestamp + "." + raw).digest("hex");
// Public px_... ID, not the internal UUID used in cabinet APIs.
const pixelId = process.env.PIXORADS_PUBLIC_PIXEL_ID;
const response = await fetch(
"https://pixora-ads.com/api/v1/pixels/" + encodeURIComponent(pixelId) + "/postback",
{
method: "POST",
redirect: "error",
headers: {"Content-Type": "application/json",
"X-PixorAds-Timestamp": timestamp,
"X-PixorAds-Pixel-Signature": signature},
body: raw,
signal: AbortSignal.timeout(8000)
}
);
if (!response.ok) throw new Error("Pixel postback HTTP " + response.status);
const result = await response.json();
// 2xx alone does not mean attribution: inspect status/mode/error_code.
return result;
}
// Example persisted lead payload (replace with values from your backend):
// {event_id: "lead:123", event_name: "Lead", px_click: "<original click token>"}
// For a Purchase, optional value_minor and currency must be supplied together.
// RUB and XTR use 1000 internal units per unit; USD is not accepted here.
// Retry only transport/5xx/429 failures with bounded backoff. Generate a fresh
// timestamp/signature on each delivery, keeping the event_id and body unchanged.Подписанный серверный postback подтверждает целевое действие для аналитики и сам по себе не меняет оплату. Один event_id связывает оба сигнала и позволяет безопасно повторять запрос.
Передавайте X-PixorAds-Timestamp и X-PixorAds-Pixel-Signature (HMAC-SHA256) с backend. Ключ подписи храните только на сервере.
Добавьте отдельные подключения в настройках кампании. Код на сайте получает реальные идентификаторы счётчиков после согласия посетителя; секреты хранятся только на сервере Pixora Ads.
Скопируйте полный код из подключения. Он работает и без Pixel. Несколько подключений работают одновременно; токен и API secret в этот код не входят.
<script>
window.PixorAdsAnalytics = window.PixorAdsAnalytics || {
q: [],
consent: function (value) { this.q.push(["consent", value]); }
};
</script>
<script async src="https://pixora-ads.com/sdk/pixorads-analytics.js?connection_id=YOUR_PUBLIC_CONNECTION_ID"></script>
// Вызовите только из CMP, не разрешайте автоматически:
function onAnalyticsConsentChanged(granted) {
window.PixorAdsAnalytics.consent(granted ? "granted" : "denied");
}Код использует ym(counter, 'getClientID', callback) и gtag('get', measurementID, 'client_id'/'session_id', callback). Он ждёт установленные счётчики до восьми секунд, пропускает недоступные ID и не создаёт искусственных посетителей. Обновления согласия общие с Pixel, который настроен на ожидание согласия.
Проверка в кабинете показывает: счётчик найден → посетитель связан → запрос проверен → тест отправлен. Валидация GA4 отличается от доставки и не гарантирует появление в отчётах. Сумма покупки и стабильный ID заказа должны приходить с вашего сервера. API Метрики · Google tag API.
Журнал показывает последние 40 событий с event_id, источником, режимом, кампанией и error_code. Проверьте их перед повтором.
test сохранён без атрибуции. received принят без подтверждённой конверсии для аналитики. attributed связан с кликом; запись браузера остаётся сигналом активности, а подписанный серверный postback подтверждает конверсию для аналитики без изменения оплаты. duplicate не создаёт второй результат. unmatched требует действительного px_click и подходящей кампании. rejected не прошёл проверку или конфликтует с другим событием.
Если строки нет, проверьте ответ во вкладке Network: неподтверждённый домен, Pixel на паузе или неверная подпись могут отклонить запрос до записи в журнал.
СЛЕДУЮЩИЙ СИГНАЛ
Создайте пиксель в кабинете, пройдите тестовый сценарий и подключите его к кампании.