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

<p class="callout warning">dsp - обов'язковий параметр для постбеків</p>

## Postback

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

`https://sevenupdates.com/2025/08/beachgoers-did-not-see-these-funny-beach-moments-coming?<span style="color: rgb(45, 194, 107);"><strong>widget_id</strong></span>=57966373&site=rtbsystem.org&<span style="color: rgb(45, 194, 107);"><strong>number_page</strong></span>=47001&<span style="color: rgb(45, 194, 107);"><strong>teaser_id</strong></span>=1435583086&<span style="color: rgb(45, 194, 107);"><strong>abtest</strong></span>=0&<span style="color: rgb(45, 194, 107);"><strong>os_id</strong></span>=2&title=&offer=tardmusjacque2989872_us&keyword=&<span style="color: rgb(45, 194, 107);"><strong>user_id</strong></span>=11781472095139629543_1002430649_12064939378970662344&<span style="color: rgb(45, 194, 107);"><strong>subdomain</strong></span>=us2.rtbsystem.org&dsp=kibr&<span style="color: rgb(45, 194, 107);"><strong>impression_id</strong></span>=&cost=1.940681&external_id=32d499a9-e104-11ef-9dd0-c4cbe1e3eb40`

  
Як повинен формуватися постбек (GET/POST):  
`https://dsp-postback.rtb-system.online/{dsp}/sale?teaser_id={<span style="color: rgb(45, 194, 107);"><strong>teaser_id</strong></span>}&widget_id={<span style="color: rgb(45, 194, 107);"><strong>widget_id</strong></span>}&number_page={<span style="color: rgb(45, 194, 107);"><strong>number_page</strong></span>}&payout=0&abtest={<span style="color: rgb(45, 194, 107);"><strong>abtest</strong></span>}&os_id={<span style="color: rgb(45, 194, 107);"><strong>os_id</strong></span>}&user_id={<span style="color: rgb(45, 194, 107);"><strong>user_id</strong></span>}&impression_id={<span style="color: rgb(45, 194, 107);"><strong>impression_id</strong></span>}&subdomain={<span style="color: rgb(45, 194, 107);"><strong>subdomain</strong></span>}`

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

---

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


В код віджету mgid потрібно буде додати <span style="color: rgb(45, 194, 107);">**data-src-id**</span> значенням якого має бути<span style="color: rgb(45, 194, 107);"> **teaser\_id**</span>

```html
<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>
```

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

```html
<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](https://doc.rtb-system.online/uploads/images/gallery/2025-08/scaled-1680-/image.png)](https://doc.rtb-system.online/uploads/images/gallery/2025-08/image.png)

#### Adsense

Автоматом відслідковує URL, тому там все має бути автоматично.  
Але не завжди там буде вся статистика -&gt; **[https://support.google.com/adsense/answer/11988478?hl=en](https://doc.rtb-system.online/Page%20URL%20breakdown)**

[![image.png](https://doc.rtb-system.online/uploads/images/gallery/2025-08/scaled-1680-/qPIimage.png)](https://doc.rtb-system.online/uploads/images/gallery/2025-08/qPIimage.png)

---

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

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

```html
<script>
(function(){
  const urlParams = new URLSearchParams(window.location.search);
  const params = {
    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") || ""
  };

  const buildGetUrl = () => {
    const qs = new URLSearchParams({
      teaser_id: params.teaser_id,
      widget_id: params.widget_id,
      number_page: params.number_page,
      payout: 0,
      abtest: params.abtest,
      os_id: params.os_id,
      user_id: params.user_id,
      impression_id: params.impression_id,
      subdomain: params.subdomain
    }).toString();
    return "https://dsp-postback-v2.rtb-system.online/" + encodeURIComponent(params.dsp) + "/sale?" + qs;
  };

  function sendPostback(){
      if (!params.dsp) return;
      const url = buildGetUrl();

      fetch(url, { method: "GET", mode: "cors", cache: "no-store" })
        .then(res => { if (res.ok) return; throw 0; }) 
        .catch(()=> { fetch(url, { method: "GET", mode: "no-cors", keepalive: true, cache: "no-store" }) .catch(()=> (new Image()).src = url + "&_img=1");});
    }

  function handleAdsenseClick(){
    let downAt = 0;
    const mark = e => { if (e.target && (e.target.closest(".ad_click") || e.target.closest(".adsbygoogle"))) downAt = Date.now(); };
    document.addEventListener("mousedown", mark, { passive: true });
    document.addEventListener("touchstart", mark, { passive: true });
    const maybe = () => { if (downAt && Date.now() - downAt < 1500) { sendPostback(); downAt = 0; } };
    window.addEventListener("blur", maybe);
    document.addEventListener("visibilitychange", ()=> { if (document.hidden) maybe(); });
  }

  function handleMgidClick(){
    document.addEventListener("click", e => {
      const widget = e.target.closest("[data-widget-id]");
      if (!widget) return;
      const teaser = e.target.closest("a, [data-hash]");
      if (teaser) sendPostback();
    }, { passive: true });
  }

  if (params.dsp) { handleAdsenseClick(); handleMgidClick(); }
})();
</script>
```