# Other in archive

# Сервер документації (+тимчасово для скриптів автоматизації)

## **Первинні налаштування**

Треба створити користувача **sudo** (щоб не працювати з під **root**)

```bash
adduser oleksandr-d
```

занести користувача в групу **sudo**

```bash
sudo usermod -aG sudo oleksandr-d
```

<div id="bkmrk-">---

</div>Встановлюю PHP та модулі

```bash
sudo apt install -y php-cli php-openssl php-mbstring php-iconv php-tokenizer php-gd php-mysql php-xml php-ldap php-curl php-gd php-simplexml php-dom php-pdo

```

Встановлюю php-fpm, щоб використовувати nginx, як web-сервер.

```bash
sudo apt install php-fpm
```

Встановлюю MySQL

```bash
sudo apt install mysql-server
sudo mysql_secure_installation

# Remove anonymous users? [Y/n]                     Type Y
# Disallow root login remotely? [Y/n]               Type Y
# Remove test database and access to it? [Y/n]      Type Y
# Reload privilege tables now? [Y/n]                Type Y
```

Налаштовую php-fpm

```bash
sudo nano /etc/php/8.3/fpm/php.ini
```

```
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_filesize = 100M
cgi.fix_pathinfo = 0
max_execution_time = 360
date.timezone = Europe/Kyiv
```

Встановлюю Composer

Завантажте сценарій інсталятора Composer.

```bash
curl -sS https://getcomposer.org/installer -o composer-setup.php
```

Виконайте наведені нижче команди, щоб перевірити інсталятор.

```bash
HASH=`curl -sS https://composer.github.io/installer.sig`
echo $HASH
php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
```

Наведені вище команди захоплюють хеш-значення інсталятора та зіставляють його із завантаженим сценарієм. Ви повинні побачити такі дані, якщо інсталятор безпечний для запуску.

```
Installer verified
```

Встановіть Composer.

```bash
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
```

Перевірте інсталяцію, перевіривши її версію.

```bash
composer --version
```

Створюю базу даних bookstack з користувачем bookstackuser та даю йому повний доступ до цієї бази даних.

```bash
sudo mysql
```

```sql
CREATE DATABASE bookstack; 
CREATE USER 'bookstackuser'@'localhost' IDENTIFIED WITH mysql_native_password BY '********************';
GRANT ALL ON bookstack.* TO 'bookstackuser'@'localhost'; FLUSH PRIVILEGES;
exit
```

Дозволяю доступ по ssh через порт 22

```bash
sudo ufw allow ssh
```

Встановлюємо Nginx та надаю доступ до портів

```bash
sudo apt install nginx
sudo ufw allow 'Nginx Full'
```

Перевіряємо налаштування брандмауера (необхідні налаштування є в списку відповіді) та потім вмикаємо його

```bash
sudo ufw app list

# Available applications:
#   Nginx Full
#   Nginx HTTP
#   Nginx HTTPS
#   OpenSSH

sudo ufw enable

sudo ufw status
# Status: active

# To                         Action      From
# --                         ------      ----
# 22/tcp                     ALLOW       Anywhere
# Nginx Full                 ALLOW       Anywhere
# 22/tcp (v6)                ALLOW       Anywhere (v6)
# Nginx Full (v6)            ALLOW       Anywhere (v6)
```

Завантажую сам BookStack та налаштовую  
Створіть кореневу папку для програми BookStack.

```bash
sudo mkdir -p /var/www/bookstack
```

Роблю власником себе (поточного юзера з якого працюю), щоб не працювати постійно з sudo та для nginx

```bash
sudo chown -R oleksandr-d:www-data /var/www/bookstack
```

Переходжу в створену папку, та клоную репозиторій з BookStack (крапка в кінці треба, щоб розпакувалось в поточну папку. а не створювалась нова).

```bash
cd /var/www/bookstack
git clone https://github.com/BookStackApp/BookStack.git --branch=release --single-branch .
```

Встановлюємо Composer для bookstack

```bash
composer install --no-dev
```

<div id="bkmrk--2"><div class="result-frame svelte-1a37brm" id="bkmrk--3"></div><div class="result-frame svelte-1a37brm" id="bkmrk--4"></div></div>Копіюю файл, та налаштовую дані для додатку

```bash
cp .env.example .env
```

Відкрийте файл для редагування.

```bash
nano .env
```

Заповніть URL-адресу програми та дані бази даних. Якщо ви збираєтеся використовувати функції електронної пошти, заповніть дані SMTP або видаліть їх із файлу.

```
APP_URL=https://doc.rtb-system.online

DB_HOST=localhost
DB_DATABASE=bookstack
DB_USERNAME=bookstackuser
DB_PASSWORD=**********************


# Can be 'smtp' or 'sendmail'
MAIL_DRIVER=smtp

MAIL_FROM_NAME="RTB Documentation"
MAIL_FROM=my@email.com


MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=my@email.com
MAIL_PASSWORD="**** **** **** ****"
MAIL_ENCRYPTION=tls
```

Далі генерую ключ для artisan який запишеться в файл .env

```bash
php artisan key:generate
```

Налаштовую додаткові права для юзера до каталогу з bookstack

```bash
sudo chown -R oleksandr-d:www-data /var/www/bookstack
sudo chmod -R 755 /var/www/bookstack
sudo chmod -R 775 /var/www/bookstack/storage /var/www/bookstack/bootstrap/cache /var/www/bookstack/public/uploads
sudo chmod 640 /var/www/bookstack/.env
```

Роблю artisan міграцію

```bash
php artisan migrate
```

Далі встановимо та налаштуємо certbot та конфігурацію nginx  
Спочатку зупинимо nginx

```bash
sudo systemctl stop nginx.service
```

Встановлюємо Certbot

```bash
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
```

Перевірити версію

```bash
certbot --version
```

Генеруємо сертифікат

```bash
sudo certbot certonly
```

Тепер запускаю та вмикаю nginx

```bash
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
```

Налаштовую конфігурацію для nginx

```bash
sudo nano /etc/nginx/sites-available/bookstack
```

```nginx
# HTTP — редірект на HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name notes.bistats.site;

    location / {
        return 301 https://$host$request_uri;
    }
}

# HTTPS — конфігурація SSL
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name notes.bistats.site;

    ssl_certificate /etc/letsencrypt/live/notes.bistats.site/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/notes.bistats.site/privkey.pem;

    root /var/www/bookstack/public;
    index index.php index.html index.htm;

    client_max_body_size 100M;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
```

```bash
sudo ln -s /etc/nginx/sites-available/bookstack /etc/nginx/sites-enabled/
```

```bash
sudo systemctl restart nginx.service
```

Була помилка додав ще раз права на необхідні папки.

# Перехоплення пустого адтайтлу | FB n2s (костиль)

Для n2s потрібно щоб адтайтл надходив з кліком до провайдера.  
Але інколи адтайтла з джерела відсутній, тому в такому разі в трекері в трекері робимо правило для пустого адтайтла куди додаємо офер з пропсианим адтайтлом в самому посиланні офера.  
Регулярка для правила **`.{2,}`**

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

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

# News site

### host/

Робимо глобальний масив, який буде оновлювати   
Читамєо <span style="color: rgb(241, 196, 15);">***/data/articles.json***   
</span>Розбираємо на масиви по кожній категорії, а також робимо масив з *<span style="color: rgb(241, 196, 15);">**article**</span>**<span style="color: rgb(241, 196, 15);">path</span>*** робмлю для перевірки чи є такий шлях, інакше відправляти всіх на головну сторінку.

# Задачі

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

##### <span style="color: rgb(45, 194, 107);">**E** </span>стовбчик

Може бути дуже різні дані. Тому потрібно ретельно це перевіряти:  
\- якщо це ківорди чи адтайтли то потрібно їх енкодити  
\- перевіряти кількість рядків  
\- символи заекодити `&`, `#`, `%`, `?`, `=`, `+`, `{`, `}`, `[`, `]`, `|`, `^`, і `~`,  
\- всякі `\r \n \t \v` видалити (в певних моментах вже після обробки масииву ківордів та адтайтлу). Бо трекери не обробляють такі символи, та інколи це призводить не коректного формуваня Offer URL в трекерах.  
Трекер потім передає це все, як є.

##### <span style="color: rgb(45, 194, 107);">**API**</span> (tracker/crossroads/tonic)

Запускати API, тільки якщо це peerclick (точніше не clickflare/keitaro)

Для дока задач.

Можна просто зробити функції, які збиратимуть і передаватимуть дані:  
\- по стовбчику в обраному рядку  
\- назва рядка

Передаватиуть ці дані на мій сервак.  
А я поверну відповідь, який текст і колір в стовбчику проставити, ну і якусь додаткову інфу, про помилки чи ще щось.

В себе відповідно логуватиму це все, у вигляді назва дока, назва аркуша, номер рядка.

В git зробити 2 гілки stage/master  
Щоб можна було тестувати.  
Тест док зробити з одним аркушем, де буде набір всіх шаблонів задач. Можливо в якомусь стовбчику буде клітинка з посиланням на доку.

І так в мене буде одне джерело коду та логів.

##### <span style="color: rgb(45, 194, 107);">**Errors**</span>

Робити в коді різні перевірки і формувати помилки і потім повертати їх та вписувати в стовбчик <span style="color: rgb(45, 194, 107);">**D**</span>

##### <span style="color: rgb(45, 194, 107);">**TS**</span>

Потрібно буде зробити нові TS, де дати відповідні імена віхідним параметрам  
Наприклад там де campaign\_item, так і називати, а не tease ID.  
Але це застосовувати там де генерується повне посилання для тизера.  
Бо там де шаблони, можуть бути помилки від баєрів  
Тобто не ламати досвід, а робити це безшовно де це можливо. Повністю проблему не прибере, але зменшить об'єм де треба враховувати нюанси

##### <span style="color: rgb(45, 194, 107);">**Name Campaign**</span>  


Зробити перейменування камапній в crossroad та tonic під час генеруваня самого посиланя Offer URL та імені кампанії. Якщо буде відповідно помилка, то її виведемо.  
Або для цих н2с першим тегом вписувати номер дяка задачі.  
Або коли згенерувалось ім'я, то перевірити чи є таке в н2с провайдерів, і якщо є тоді додавати тег (наприклад tmestamp цілочисельний).

##### <span style="color: rgb(45, 194, 107);">**Документація**</span>

Описати документацію по скрипту, звідповідними окремими посиланнями на доку по інтеграції з ПП, TS, трекером.

# System1 | отримання партнерського посилання і  подача задачі

##### Подаємо запит на отримання партнерського посилання.  
Вказуємо необхідні дані:

- **CC** - ваш імейл
- **Subject** - назва кампанії бажано просто тему вашої кампанії наприклад ***Plaque Psoriasis***
- **Type** - обираємо ***Direct To Lander***
- **Description** - adtitle англійською (текст креативу) або список (якщо їх декілька). Якщо мова не англійська, то перекласти на англійську.
- **Language** - мова на яку орієнтована кампанія
- **Geo**/**Country Targeting** - країна на яку орієнтована кампанія
- **Native Network** - джерело трафіку. Якщо в списку потрібного немає, то обираємо ***Other: Please specify within ticket***). Також в **Description** після adtitles дописуємо назву джерела трафіку, наприклад **Network: MGID**
- **Attachments** - тут завантажуємо креатививи, які будемо використовувати (зображення).

##### [![image.png](https://doc.rtb.support/uploads/images/gallery/2024-01/scaled-1680-/mgFW9ugmsCYnfwuG-image.png)](https://doc.rtb.support/uploads/images/gallery/2024-01/mgFW9ugmsCYnfwuG-image.png)  


---

##### Статус своїх запитів можете перевіряти тут.  


##### [![image.png](https://doc.rtb.support/uploads/images/gallery/2024-01/scaled-1680-/fWWNeKgcYdAHp0lZ-image.png)](https://doc.rtb.support/uploads/images/gallery/2024-01/fWWNeKgcYdAHp0lZ-image.png)  


---

##### Результат ви побачите в Status, а також якщо клікнете на свій запит, то перейдете на сторінку де буде відповідь від модерації, та посилання, яке копіюємо.  


##### [![image.png](https://doc.rtb.support/uploads/images/gallery/2024-01/scaled-1680-/jbgDjoSoyqutVlYZ-image.png)](https://doc.rtb.support/uploads/images/gallery/2024-01/jbgDjoSoyqutVlYZ-image.png)  


---

##### Задачу подаємо як з іншими провайдерами  


<p class="callout info">Для **DSP** ще окремо вказуємо **adtitle**</p>

[![image.png](https://doc.rtb.support/uploads/images/gallery/2024-01/scaled-1680-/MAf7OS34nHk5p2h7-image.png)](https://doc.rtb.support/uploads/images/gallery/2024-01/MAf7OS34nHk5p2h7-image.png)

# domain active постбеки та пікселі

```
RTBEuro
Ad Click Pixel
https://flarequick.com/cf/cv?click_id={$tg10}&payout={$estimatedGoogleCPCToday}&txid={$datetimepst}&param1={$query}&ct=sale

Domain Pixel Example
LANDER
!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', '506752001994869'); 
fbq('track', 'ViewContent',{}, {eventID: '{$uuid}'});

SERP
!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', '506752001994869'); 
fbq('track', 'Search',{}, {eventID: '{$uuid}'});

focus(); var listener = window.addEventListener("blur", function() { active_element = document.activeElement; if ("IFRAME" == active_element.tagName && 1 == window.location.href.includes("caf_results")) { fbq('track', 'Purchase',{}, {eventID: '{$uuid}'}); } });






RTBEuro2
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
!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', '1754180308492861'); 
fbq('track', 'ViewContent',{}, {eventID: '{$uuid}'});

SERP
!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', '1754180308492861'); 
fbq('track', 'Search',{}, {eventID: '{$uuid}'});

focus(); var listener = window.addEventListener("blur", function() { active_element = document.activeElement; if ("IFRAME" == active_element.tagName && 1 == window.location.href.includes("caf_results")) { fbq('track', 'Lead',{}, {eventID: '{$uuid}'}); } });




RTBEuro3
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
N/A

SERP
N/A




RTBEuro4
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
N/A

SERP
N/A




RTBEuro5
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
N/A

SERP
N/A






RTBEuro6
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
(function (p, i, x, e, l) {
  if (typeof window !== undefined) {
    window._dojoPixel = {};
    window._dojoPixel.events_queue =  window._dojoPixel.events_queue || [];
    window._ddq = function () {
      window._dojoPixel.events_queue.push(arguments);
    };
    var f = p.getElementsByTagName(i)[0],
      k = p.createElement(i);
    k.async = 1;
    k.src = "https://pixel.clickslogistics.com/load.js?id=6750cdd0fbd01c91d81af07e";
    f.parentNode.insertBefore(k, f);
  }
})(document, "script");
_ddq("PIXEL_INIT", {
  "keyword": "Personal Loans"
});
_ddq("PAGE_VIEW");

SERP
N/A




RTBSystem2
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale

Domain Pixel Example
LANDER
!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', '541549895129299'); 
fbq('track', 'ViewContent',{}, {eventID: '{$uuid}'});

SERP
!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', '541549895129299'); 
fbq('track', 'Search',{}, {eventID: '{$uuid}'});

focus(); var listener = window.addEventListener("blur", function() { active_element = document.activeElement; if ("IFRAME" == active_element.tagName && 1 == window.location.href.includes("caf_results")) { fbq('track', 'Lead',{}, {eventID: '{$uuid}'}); } });




RTBSystem3
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale


Domain Pixel Example
LANDER
N/A

SERP
N/A





RTBSystemMGID
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale


Domain Pixel Example
LANDER
N/A

SERP
N/A





RTBSystemPangle
Ad Click Pixel
https://flarequick.com/cf/cv?click_id={$tg10}&payout={$estimatedGoogleCPCToday}&txid={$datetimepst}&param1={$query}&ct=sale

Domain Pixel Example
LANDER
!function (w, d, t) { w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t][];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t][],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
ttq.load('CPK3VVJC77U5SPBHJOP0);
ttq.track('CompletePayment'); ttq.page(); }(window, document, 'ttq');

SERP
!function (w, d, t) { w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t][];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i<ttq.methods.length;i++)ttq.setAndDefer(ttq,ttq.methods[i]);ttq.instance=function(t){for(var e=ttq._i[t][],n=0;n<ttq.methods.length;n++)ttq.setAndDefer(e,ttq.methods[n]);return e},ttq.load=function(e,n){var i="https://analytics.tiktok.com/i18n/pixel/events.js";ttq._i=ttq._i||{},ttq._i[e]=[],ttq._i[e]._u=i,ttq._t=ttq._t||{},ttq._t[e]=+new Date,ttq._o=ttq._o||{},ttq._o[e]=n||{};var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src=i+"?sdkid="+e+"&lib="+t;var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(o,a)};
ttq.load('CPK3VVJC77U5SPBHJOP0');
ttq.track('CompletePayment'); ttq.page(); }(window, document, 'ttq');






IdealMediaNative
Ad Click Pixel
https://flarequick.com/cf/cv?click_id={$tg10}&payout={$estimatedGoogleCPCToday}&txid={$datetimepst}&param1={$query}&ct=sale

Domain Pixel Example
LANDER
!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', '1140136920409549'); 
fbq('track', 'ViewContent',{}, {eventID: '{$uuid}'});

SERP
!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', '1140136920409549'); 
fbq('track', 'Search',{}, {eventID: '{$uuid}'});

focus(); var listener = window.addEventListener("blur", function() { active_element = document.activeElement; if ("IFRAME" == active_element.tagName && 1 == window.location.href.includes("caf_results")) { fbq('track', 'Purchase',{}, {eventID: '{$uuid}'}); } });




IdealMediaNews
Ad Click Pixel
https://pstb.gopeerclick.com/postback?userid=5906&cid={$fbclid}&payout={$estimatedGoogleCPCYesterday}&status=sale


Domain Pixel Example
LANDER
N/A

SERP
N/A
```

# Макроси для джерел трафіку

<table border="1" id="bkmrk-%D0%94%D0%B6%D0%B5%D1%80%D0%B5%D0%BB%D0%BE-%D1%82%D1%80%D0%B0%D1%84%D1%96%D0%BA%D1%83-%D0%9C%D0%B0%D0%BA%D1%80" style="border-collapse: collapse; width: 100%; height: 1555.37px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr style="height: 29.4583px;"><td class="align-center" style="height: 29.4583px;">**Джерело трафіку**</td><td class="align-center" style="height: 29.4583px;">**Макроси**</td></tr></thead><tbody><tr style="height: 78.125px;"><td style="height: 78.125px;"><span data-sheets-root="1">Yahoo</span></td><td style="height: 78.125px;">```
teaser_id={adid}&campaign_id={campaignid}&widget_id=${pubid}&site=${SUPPLY_NAME}&title={title}&adgroupid={adgroupid}&creative={creative}&device={device}
```

</td></tr><tr style="height: 113.417px;"><td style="height: 113.417px;"><span data-sheets-root="1">Outbrain</span></td><td style="height: 113.417px;"><span data-sheets-root="1">external\_id={{ob\_click\_id}}&amp;teaser\_id={{ad\_id}}&amp;campaign\_id={{campaign\_id}}&amp;widget\_id={{publisher\_id}}&amp;site={{publisher\_name}}&amp;title={{ad\_title}}&amp;section\_id={{section\_id}}&amp;section\_name={{section\_name}}&amp;req\_id={{req\_id}}&amp;promoted\_link\_id={{promoted\_link\_id}}&amp;time\_stamp={{time\_stamp}}</span></td></tr><tr style="height: 46.25px;"><td style="height: 46.25px;"><span data-sheets-root="1">Recreative</span></td><td style="height: 46.25px;"><span data-sheets-root="1">teaser\_id={OfferID}&amp;campaign\_id={CompanyID}&amp;widget\_id={SiteID}&amp;device={DeviceType}&amp;external\_id={RCuid}</span></td></tr><tr style="height: 79.8333px;"><td style="height: 79.8333px;"><span data-sheets-root="1">MGID</span></td><td style="height: 79.8333px;"><span data-sheets-root="1">teaser\_id={teaser\_id}&amp;campaign\_id={campaign\_id}&amp;widget\_id={widget\_id}&amp;category\_id={category\_id}&amp;client\_id={client\_id}&amp;site={referrer}&amp;title={title}&amp;cost={click\_price}&amp;external\_id={click\_id}</span></td></tr><tr style="height: 79.8333px;"><td style="height: 79.8333px;"><span data-sheets-root="1">Adnow</span></td><td style="height: 79.8333px;"><span data-sheets-root="1">teaser\_id={{tid}}&amp;campaign\_id={{campaignid}}&amp;widget\_id={{site\_id}}&amp;geo={{country}}&amp;browser={{browser}}&amp;platform={{platform}}&amp;location={{location}}&amp;category\_id={{catid}}&amp;site={{domain}}&amp;cost={{price}}&amp;external\_id={{clickId}}</span></td></tr><tr style="height: 96.625px;"><td style="height: 96.625px;"><span data-sheets-root="1">Revcontent</span></td><td style="height: 96.625px;"><span data-sheets-root="1">widget\_id={widget\_id}&amp;teaser\_id={content\_id}&amp;title={content\_headline}&amp;campaign\_id={boost\_id}&amp;utm\_targeting={adv\_targets}&amp;target\_id={target\_id}&amp;site={site\_name}&amp;user\_ip={user\_ip}&amp;city={city}&amp;state={state}&amp;geo={country}&amp;c\_s\_c={city|state|country}&amp;external\_id={conversion\_uuid}</span></td></tr><tr style="height: 130.208px;"><td style="height: 130.208px;"><span data-sheets-root="1">Taboola</span></td><td style="height: 130.208px;"><span data-sheets-root="1">site\_name={site}&amp;widget\_id={site}&amp;site={site\_domain}&amp;thumbnail={thumbnail}&amp;title={title}&amp;tamp={timestamp}&amp;platform={platform}&amp;campaign\_id={campaign\_id}&amp;campaign\_name={campaign\_name}&amp;campaign\_item\_id={campaign\_item\_id}&amp;site\_id={site\_id}&amp;cost={cpc}&amp;external\_id={click\_id}</span></td></tr><tr style="height: 79.8333px;"><td style="height: 79.8333px;"><span data-sheets-root="1">Traffichunt</span></td><td style="height: 79.8333px;"><span data-sheets-root="1">teaser\_id=\[banner\]&amp;campaign\_id=\[camp\_id\]&amp;widget\_id=\[adspace\]&amp;site=\[site\]&amp;country=\[country\]&amp;user\_os=\[user\_os\]&amp;carrier=\[carrier\]&amp;banner\_size=\[banner\_size\]&amp;sub\_id=\[sub\_id\]&amp;cost=\[cost\]&amp;external\_id=\[txn\_id\]</span></td></tr><tr style="height: 96.625px;"><td style="height: 96.625px;"><span data-sheets-root="1">Tapnative</span></td><td style="height: 96.625px;"><span data-sheets-root="1">teaser\_id=\[AD\_ID\]&amp;campaign\_id=\[CAMPAIGN\_NAME\]&amp;widget\_id=\[PLACEMENT\_ID\]&amp;site=\[DOMAIN\]&amp;pub\_name=\[PUBLISHER\_NAME\]&amp;USER\_UA=\[USER\_UA\]&amp;DEVICE\_ID=\[DEVICE\_ID\]&amp;external\_id=\[TRANSACTION\_ID\]</span></td></tr><tr style="height: 63.0417px;"><td style="height: 63.0417px;"><span data-sheets-root="1">Dable</span></td><td style="height: 63.0417px;"><span data-sheets-root="1">teaser\_id=\[CONTENT\_NAME\]&amp;campaign\_id=\[CAMPAIGN\_NAME\]&amp;widget\_id=\[SERVICE\_NAME\]&amp;service\_type=\[SERVICE\_TYPE\]</span></td></tr><tr style="height: 79.8333px;"><td style="height: 79.8333px;"><span data-sheets-root="1">Mondiad</span></td><td style="height: 79.8333px;"><span data-sheets-root="1">teaser\_id=\[creativeid\]&amp;campaign\_id=\[campaignid\]&amp;widget\_id=\[subid\]&amp;zoneid=\[zoneid\]&amp;carrier=\[carrier\]&amp;subscriptionage=\[subscriptionage\]&amp;adformat=\[adformat\]&amp;cost=\[bid\]&amp;external\_id=\[clickid\]</span></td></tr><tr style="height: 130.208px;"><td style="height: 130.208px;"><span data-sheets-root="1">Geospot</span></td><td style="height: 130.208px;"><span data-sheets-root="1">teaser\_id={CREATIVE\_ID}&amp;campaign\_id={CAMPAIGN\_ID}&amp;widget\_id={PUBLISHER\_ID}&amp;geo={COUNTRY\_CODE}&amp;site={APP\_DOMAIN}&amp;APP\_NAME={APP\_NAME}&amp;APP\_ID={APP\_ID}&amp;APP\_BUNDLE={APP\_BUNDLE}&amp;DPI={DEVICE\_PLATFORM\_ID}&amp;DNT={DNT}&amp;APP\_NAME\_ALPHANUM={APP\_NAME\_ALPHANUM}&amp;external\_id={CONVERSION\_ID}</span></td></tr><tr style="height: 96.625px;"><td style="height: 96.625px;"><span data-sheets-root="1">FB</span></td><td style="height: 96.625px;"><span data-sheets-root="1">source={{source}}&amp;placement={{placement}}&amp;ad\_id={{ad\_id}}&amp;adset\_id={{adset\_id}}&amp;campaign\_id={{campaign\_id}}&amp;ad\_name={{ad\_name}}&amp;adset\_name={{adset\_name}}&amp;sub1={sub1}&amp;sub2={sub2}&amp;sub3={sub3}&amp;fbpixel=fbpixel</span></td></tr><tr style="height: 113.417px;"><td style="height: 113.417px;"><span data-sheets-root="1">Mediago</span></td><td style="height: 113.417px;"><span data-sheets-root="1">teaser\_id=${AD\_ID}&amp;campaign\_id=${CAMPAIGN\_ID}&amp;widget\_id=${SITE\_ID}&amp;site=${PUBLISHER\_NAME}&amp;title=${AD\_TITLE}&amp;source=${SOURCE}&amp;assetid=${ASSET\_ID}&amp;campaignname=${CAMPAIGN\_NAME}&amp;bidtime=${BID\_TIME\_STAMP}&amp;platform=${PLATFORM}&amp;contentname=${CONTENT\_NAME}&amp;assetname=${AD\_ASSET\_NAME}&amp;cost=${CPC}&amp;external\_id=${TRACKING\_ID}</span></td></tr><tr style="height: 130.208px;"><td style="height: 130.208px;"><span data-sheets-root="1">popin</span></td><td style="height: 130.208px;"><span data-sheets-root="1">teaser\_id=${CONTENT\_ID}&amp;campaign\_id=${CAMPAIGN\_ID}&amp;widget\_id=${PUBLISHER\_ID}&amp;site=${PUBLISHER\_NAME}&amp;title=${AD\_TITLE}&amp;source=${SOURCE}&amp;assetid=${ASSET\_ID}&amp;adsetname=${AD\_ASSET\_NAME}&amp;campaignname=${CAMPAIGN\_NAME}&amp;bidtime=${BID\_TIME\_STAMP}&amp;platform=${PLATFORM}&amp;contentname=${CONTENT\_NAME}&amp;cost=${CPC}&amp;external\_id=${TRACKING\_ID}</span></td></tr><tr style="height: 48.7917px;"><td style="height: 48.7917px;"><span data-sheets-root="1">DABLE</span></td><td style="height: 48.7917px;">[![image.png](https://doc.rtb-system.online/uploads/images/gallery/2025-01/scaled-1680-/image.png)](https://doc.rtb-system.online/uploads/images/gallery/2025-01/image.png)

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

</td></tr><tr style="height: 63.0417px;"><td style="height: 63.0417px;"><span data-sheets-root="1">geozo</span></td><td style="height: 63.0417px;"><span data-sheets-root="1">teaser\_id=\[AD\_ID\]&amp;widget\_id=\[BLOCK\_ID\]&amp;adgroup=\[AD\_GROUP\_ID\]&amp;category=\[CATEGORY\_ID\]&amp;template=\[TEMPLATE\_ID\]&amp;cost=\[BID\]&amp;external\_id=\[CLICK\_ID\]</span>

</td></tr></tbody></table>

# Створити pixel / dataset у Facebook

<p class="callout warning">**Disclaimer!**  
У Facebook є багато варіантів інтерфейсу, або їх мутацій. Тому назви кнопок або їх розташування може змінюватись навіть на одному і тому самому аккаунті.</p>

#### Створення pixel

Йдемо за посиланням (при потребі логінимось повторно та вказуєте всі дані потрібні для автентифікації).  
[https://business.facebook.com/settings/people](https://business.facebook.com/settings/people)?

Обраємо потрібний Bussiness Manager (далі BM).

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

Далі йдемо в **Data sources** -&gt; **Datasets**  
Завантажиться список пікселів, ми створюємо новий (**Add**).

Вказуємо ім'я і клікаємо **Create**   
Подалші вікна, попапи, якщо вони будуть можемо ігнорувати / закривати.

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

І побачимо наш створений pixel / dataset

[![image.png](https://doc.rtb-system.online/uploads/images/gallery/2025-01/scaled-1680-/Vscimage.png)](https://doc.rtb-system.online/uploads/images/gallery/2025-01/Vscimage.png)Далі потрібно видати дозволи нашому користувачеві (соц. профілю доступ до цього пікселя, а також пошерити/ прикріпити до рекламний аккаунтів (Ad accounts, скорочено РА або AA). Також бажано обрати системного користувача додатково (Conversion API)

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

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

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

І шеримо на рекламний аккаунт або декілька

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

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

---

#### Отримати код пікселя  


Переходимо в менеджер подій

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

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

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

Копіюєте код, щоб вставляти його напряму в код лендінгу.

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

Мжна використовувати цей шаблонний код, змінюючи тільки ID пікселя та назву події (якщо потрібно)  
В плівому стовбчику і підсвічу зеленим, те що можна змінювати, для адаптації під вас. В правому буде код/шаблон для копіювання.

<table border="1" id="bkmrk-%3C%21---meta-pixel-code" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td>&lt;!-- Meta Pixel Code --&gt;  
&lt;script&gt;  
!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', '<span style="color: rgb(45, 194, 107);">**1111111111111111111111**</span>');  
fbq('track', '<span style="color: rgb(45, 194, 107);">**Lead**</span>');  
&lt;/script&gt;  
&lt;noscript&gt;&lt;img height="1" width="1" style="display:none"  
src="https://www.facebook.com/tr?id=**<span style="color: rgb(45, 194, 107);">1111111111111111111111</span>**&amp;ev=<span style="color: rgb(45, 194, 107);">**Lead**</span>&amp;noscript=1"  
/&gt;&lt;/noscript&gt;  
&lt;!-- End Meta Pixel Code --&gt;</td><td>```html
<!-- Meta Pixel Code -->
<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', '1111111111111111111111');
fbq('track', 'Lead');
</script>
<noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=1111111111111111111111&ev=Lead&noscript=1"
/></noscript>
<!-- End Meta Pixel Code -->
```

</td></tr></tbody></table>

---

#### Отримання токена пікселя

Це потрібно для додаткових інтеграцій. Також потрібен і ID пікселя, ви його бачите в списку пікселів.  
Але отримаємо все також в менеджері подій (ID пікселя це тільки цифри).

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

Гортаємо нижче та шукаємо **Conversions API,** нам потрібно згенерувати token

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

Отримуємо токен.

<p class="callout warning">Якщо одразу захочете згенерувати токен і для іншого пікселя. Обов'язково!!! Перезавантажте/оновіть сторінку.  
Інакше отримаєте токен з попереднього пікселя, або додатковий токен для попереднього пікселя.</p>

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

---

#### Тестування подій | отримання тестового коду/події

Для цього процесу нам потрібен тестовий код. Беремо його на вкладці "Test events" в менеджері подій.  
І також тут буде видно результат тестування (інколи треба оновити сторінку).  
Сам код будемо виставляти в іншому місці.

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

# Tonic Facebook RSOC - отримання посилання (за комплаєнсом)

## Спосіб 1

Заходимо в налаштування кампанії

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

Клікаємо на помічник параметрів

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

Далі:  
\- вказуєте <span style="color: rgb(45, 194, 107);">**adtitle**</span>  
\- проставляєте галочки (іноді не виставлені автоматично)  
\- та задаємо додаткові параметри (кнопка Add). Нам потрібно три параметри, щоб потім оптимайзер міг отримати статистику правильно  
subid3: <span style="color: rgb(45, 194, 107);">**{{campaign.id}}**</span>  
subid4: <span style="color: rgb(45, 194, 107);">**{{adset.id}}**</span>  
subid2: <span style="color: rgb(45, 194, 107);">**{{ad.id}}**</span>

Піксель налаштовуєте як зазвичай (тут автоматично додається dpco, та перехопиться fbclid).  
Копіюєте сформовану <span style="color: rgb(45, 194, 107);">**Tracking Link**</span> та вставляєте її як URL креативу у Facebook.

---

## Спосіб 2 (простіший)

В морді берете direct link

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

---

## Задача в документі  


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

Посилання генеруєте так

[![image.png](https://doc.rtb-system.online/uploads/images/gallery/2025-04/scaled-1680-/pj9image.png)](https://doc.rtb-system.online/uploads/images/gallery/2025-04/pj9image.png)Автоматичного перейменування кампанії в тонік поки що немає.  
Потрібне посилання вам берете із стовбчика <span style="color: rgb(45, 194, 107);">**M**</span>

---

## !!! Таргетинг у Facebook

<p class="callout danger">**Facebook Audience Network** (**FAN**) Usage Prohibited:  
The use of Facebook Audience Network (FAN) is strictly prohibited. All Facebook   
campaigns and any traffic directed to your content or article pages must have FAN   
explicitly deactivated to remain in compliance with policies.  
</p>

Тобто, потрібно виключити FAN.  
У вас інтерфейс може бути іншим трохи.  
Але це налаштовується на етапі налаштувань адсета (групи оголошень).

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

Далі внизу вимикаємо FAN (знімаємо галочки)

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

# Tonic - RSOC

<details id="bkmrk-%D0%A2%D0%B5%D1%85%D0%BD%D1%96%D1%87%D0%BD%D0%B8%D0%B9-%D0%B4%D1%80%D1%96%D0%B1%D0%BD%D0%B8%D1%86%D1%96-%D0%BF"><summary>Технічні дрібниці по інтеграції The Optimizer</summary>

```
Для Optimizer
mgid 	 |	subid4 | 	{campaign_id}|{teaser_id}|{widget_id}|{source_id}
facebook | 	subid2 |	{ad.id}}
    		subid3 | 	{{campaign.id}}
    		subid4 |	{{adset.id}}|{{campaign.id}}|{{ad.id}}|{{placement}}
outbrain |	subid4 | 	{{campaign_id}}|{{ad_id}}|{{section_id}}|{{publisher_id}}|{{section_name}}|{{publisher_name}}
taboola  | 	subid4 | 	{campaign_id}|{campaign_item_id}|{site}|{site_id}|{site_domain}
newsbreak|	subid4 | 	__CAMPAIGN_ID__|__FLIGHT_ID__|__CREATIVE_ID__
```

</details>## Посилання з Tonic

Берете **Use direct link** або **D.Link** в морді

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

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

## Таблиця постбеків

Постбеки виставляєте в налаштуваннях кампанії тоніка в підменю **Callbacks**

<table border="1" class="align-center" id="bkmrk-traffic-source-postb" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr><td class="align-center">Traffic Source</td><td>Postback URL</td></tr></thead><tbody><tr><td class="align-left">mgid</td><td class="align-left">Передавати виплату попередню  
```
https://a.mgid.com/postback?c={subid1}&e=sale&r={revenue}
```

Без виплати

```
https://a.mgid.com/postback?c={subid1}&e=sale&r=0
```

</td></tr><tr><td class="align-left">facebook</td><td class="align-left">Працюєте як зазвичай з conversion token та pixel/dataset id</td></tr><tr><td class="align-left">outbrain</td><td class="align-left">```
https://tr.outbrain.com/unifiedPixel?ob_click_id={subid1}&name=sale&orderValue={revenue}&currency=USD
```

  
</td></tr><tr><td class="align-left">taboola</td><td class="align-left">```
https://trc.taboola.com/actions-handler/log/3/s2s-action?click-id={subid1}&name=sale&revenue={revenue}&currency=USD
```

  
</td></tr><tr><td class="align-left">newsbreak</td><td class="align-left">complete\_payment

```
https://business.newsbreak.com/tracking/attribute?callback={subid1}&event_type=complete_payment&nb_value={revenue}
```

click\_button

```
https://business.newsbreak.com/tracking/attribute?callback={subid1}&event_type=click_button&nb_value={revenue}
```

</td></tr><tr><td class="align-left">revcontent</td><td>???

</td></tr><tr><td class="align-left">DSP mgid</td><td>???

</td></tr></tbody></table>

---

## Генерування посилання для Джерела трафіку  


Генерується автоматично під час генерації імені кампанії. (**стовбчик M**)  
Перейменування кампаній в тоніку автоматичне, поки що не працює.

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

---

## Постбек

Налаштовуєте в самій кампанії в кабінеті Tonic

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

<p class="callout warning">Для MGID є нюанс. Коли виставляєте посилання воно може не прийнятись бо домен не одобрений, або прийнятись і модератори його промодерують. Інколи і вони не модерують і кажуть що не будуть.  
Тімлідам покажу як модерувати/одобрювати домен в cab.  
Також домен зазвичай опрувиться для одного кабінету, покажу як дозволити його для інших кабінетів, якщо потібно.  
</p>