Документация · v1

PIXORA ADS SIGNAL LAYER

Пиксель конверсий.
От клика до события.

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

01Создать02Подтвердить03Установить04Проверить05Связать кампанию06Включить live

Путь от клика до первой конверсии

Создайте Pixel, подтвердите HTTPS-домен, проверьте тестовые события и выберите его при создании веб-кампании или в её настройках.

01

Создайте пиксель

Назовите его по продукту, сайту или воронке.

02

Подтвердите домен

Разместите файл с точным токеном на этом адресе по HTTPS.

03

Проверьте test-режим

Откройте сайт напрямую и проверьте PageView, ViewContent и Lead.

04

Свяжите с веб-кампанией

В разделе «Продвигать → Веб-трафик» выберите 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,
});
PageViewСтраница открыта; SDK отправляет сам
ViewContentПросмотр предмета
LeadСервер принял заявку
PurchaseПодтверждён реальный заказ

События браузера показывают действия, но не подтверждают серверную конверсию и не меняют оплату. Не отправляйте Purchase для демонстрационной заявки.

Браузерная аналитика + серверное подтверждение

Пиксель помогает увидеть воронку, а HMAC-подписанный postback подтверждает целевые действия для аналитики.

Подтвердите результат с backend

Сервер подписывает точные байты 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. Ключ подписи храните только на сервере.

Метрика и GA4 в одной воронке

Добавьте отдельные подключения в настройках кампании. Код на сайте получает реальные идентификаторы счётчиков после согласия посетителя; секреты хранятся только на сервере Pixora Ads.

Связующий код для сайта или GTM

Скопируйте полный код из подключения. Он работает и без 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. Проверьте их перед повтором.

testreceivedattributedduplicateunmatchedrejected

test сохранён без атрибуции. received принят без подтверждённой конверсии для аналитики. attributed связан с кликом; запись браузера остаётся сигналом активности, а подписанный серверный postback подтверждает конверсию для аналитики без изменения оплаты. duplicate не создаёт второй результат. unmatched требует действительного px_click и подходящей кампании. rejected не прошёл проверку или конфликтует с другим событием.

Если строки нет, проверьте ответ во вкладке Network: неподтверждённый домен, Pixel на паузе или неверная подпись могут отклонить запрос до записи в журнал.

СЛЕДУЮЩИЙ СИГНАЛ

Готовы увидеть полную воронку?

Создайте пиксель в кабинете, пройдите тестовый сценарий и подключите его к кампании.

Перейти в кабинет