Skip to main content

DSP Content | Postback та трекінг

dsp - обов'язковий параметр для постбеків

Postback

Як виглядатиме приблизно клік по вашій сторінці:

https://sevenupdates.com/2025/08/beachgoers-did-not-see-these-funny-beach-moments-coming?widget_id=57966373&site=rtbsystem.org&number_page=47001&teaser_id=1435583086&abtest=0&os_id=2&title=&offer=tardmusjacque2989872_us&keyword=&user_id=11781472095139629543_1002430649_12064939378970662344&subdomain=us2.rtbsystem.org&dsp=kibr&impression_id=&cost=1.940681&external_id=32d499a9-e104-11ef-9dd0-c4cbe1e3eb40


Як повинен формуватися постбек (GET/POST):
https://dsp-postback.rtb-system.online/{dsp}/sale?teaser_id={teaser_id}&widget_id={widget_id}&number_page={number_page}&payout=0&abtest={abtest}&os_id={os_id}&user_id={user_id}&impression_id={impression_id}&subdomain={subdomain}

У фігурних дужках вказаному ім'я параметра, яке треба підсатвити, з URL по якому перейшов користувач (тобто поточної сторінки).


Трекінг ID тизера в MGID Publishers (widget subid - SubID)

В код віджету mgid потрібно буде додати data-src-id значенням якого має бути teaser_id

<div data-type="_mgwidget" data-widget-id="1834344" data-src-id="${teaser_id}"></div> <script>(function(w,q){w[q]=w[q]||[];w[q].push(["_mgc.load"])})(window,"_mgq");</script>

Як приблизно має виглядати:

<div data-type="_mgwidget" data-widget-id="1834344" data-src-id="134345345345"></div> <script>(function(w,q){w[q]=w[q]||[];w[q].push(["_mgc.load"])})(window,"_mgq");</script>

Перегляд статистики

MGID

Якщо все ок трекається то тут в mgid маєте бачити id тизерів

image.png

Adsense

Автоматом відслідковує URL, тому там все має бути автоматично.
Але не завжди там буде вся статистика -> https://support.google.com/adsense/answer/11988478?hl=en

image.png


Скрипт постбеків

Цей скрипт відслідковує необхідні для постбеку параметри, а також кліки по рекламі MGID та Adsense (не 100% точність).
Підключати його можна двома варіантами:
- одразу на початку <body> в тегу <script>......</script>
-
як файл скрипту але з ключем defer <script src="/script.js" defer></script>


(function() {
  // //--Підставляю teser_id як SubID для статистики в MGID та подальшого перерахунку--
  // const urlParams = new URLSearchParams(window.location.search);
  // const teaserId = urlParams.get("teaser_id");
  // if (teaserId) {
  //   const mgidWidgets = document.querySelectorAll("[data-widget-id]"); //Формуємо массив всіх віджетів mgid на сторінці
  //   mgidWidgets.forEach((widget) => {widget.setAttribute("data-src-id", teaserId);}); // Додаємо data-src-id до кожного віджету - це наш SubID
  // }

  //Формуємо массив параметрів необхідних для постбеку
  function getUrlParameters() {
    return {
      dsp:          urlParams.get("dsp"), //required
      teaser_id:    urlParams.get("teaser_id") || "",
      widget_id:    urlParams.get("widget_id") || "",
      number_page:  urlParams.get("number_page") || "",
      abtest:       urlParams.get("abtest") || "",
      os_id:        urlParams.get("os_id") || "",
      user_id:      urlParams.get("user_id") || "",
      impression_id:urlParams.get("impression_id") || "",
      subdomain:    urlParams.get("subdomain") || "",
    };
  }

  // Відправка постбеку
  function sendPostback() {
    const payout = 0; //default value
    const params = getUrlParameters();

    // Формуємо URL постбеку
    const postbackParams = new URLSearchParams({
      teaser_id:    params.teaser_id,
      widget_id:    params.widget_id,
      number_page:  params.number_page,
      payout:       payout,
      abtest:       params.abtest,
      os_id:        params.os_id,
      user_id:      params.user_id,
      impression_id:params.impression_id,
      subdomain:    params.subdomain,
    });
    const postbackUrl = `https://dsp-postback.rtb-system.online/${params.dsp}/sale?${postbackParams}`;
    fetch(postbackUrl);
  }

  // Обробник кліку по рекламі для Google AdSense
  function handleAdsenseClick() {
    let mousedownTime = 0;
    document.addEventListener("mousedown", (e) => {if (e.target.closest(".ad_click, .adsbygoogle")) {mousedownTime = Date.now();}});
    window.addEventListener("blur", () => {if (Date.now() - mousedownTime < 500) {sendPostback(); mousedownTime = 0;}});
    document.addEventListener("visibilitychange", () => {if (document.hidden && Date.now() - mousedownTime < 1000) {sendPostback(); mousedownTime = 0;}});
  }

  // Обробник кліку по рекламі для MGID
  function handleMgidClick() {
    document.addEventListener("click", (e) => {
      const mgidWidget = e.target.closest("[data-widget-id]");
      if (mgidWidget) { const teaser = e.target.closest("a, [data-hash]"); if (teaser) {sendPostback();}}});
  }

  // Ініціалізація скрипта для перехоплення кліків та відправки постбек, якщо наявний обов'язковий параметр dsp
  function initClickTracking() {
    const params = getUrlParameters();
    if (!params.dsp) { console.warn("dsp - required parameter not found"); return;}
    handleAdsenseClick();
    handleMgidClick();
  }
  initClickTracking();
})();