<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Adam</title><author><name>Adam</name></author><id>https://teletype.in/atom/adamusfb</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/adamusfb?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@adamusfb?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=adamusfb"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/adamusfb?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-10-19T07:17:31.334Z</updated><entry><id>adamusfb:shemny-traffic-postroenie-komandnoy-strukturi</id><link rel="alternate" type="text/html" href="https://teletype.in/@adamusfb/shemny-traffic-postroenie-komandnoy-strukturi?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=adamusfb"></link><title>Схемный трафик (ч. 2): Построение командной структуры на основе связки Keitaro + PuzzleBot </title><published>2023-07-02T19:26:16.382Z</published><updated>2023-07-19T15:44:52.412Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/d1/60/d1609798-deb9-4739-a56d-9934893ce1f5.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ac/fc/acfc73aa-baba-484f-9ca2-d4de849dc5c5.png&quot;&gt;В предыдущей статье (ч. 1) мы разобрали как связать партнерку =&gt; Keitaro =&gt; PuzzleBot в единую &quot;триаду&quot; для построения автоворонок внутри Telegram. Уверен, многие посыпались от технических сложностей и по итогу забили на подобный способ пролива. Возможно кого-то не убедили плюсы высказанные в пользу бота и все как лили на тг-каналы, так и льют. </summary><content type="html">
  &lt;figure id=&quot;igLw&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ac/fc/acfc73aa-baba-484f-9ca2-d4de849dc5c5.png&quot; width=&quot;2400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YVgX&quot;&gt;В &lt;a href=&quot;https://teletype.in/@adamusfb/shemny-traffic-integracia-keitaro-puzzlebot&quot; target=&quot;_blank&quot;&gt;предыдущей статье (ч. 1)&lt;/a&gt; мы разобрали как связать партнерку =&amp;gt; Keitaro =&amp;gt; &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;PuzzleBot &lt;/a&gt;в единую &amp;quot;триаду&amp;quot; для построения автоворонок внутри Telegram. Уверен, многие посыпались от технических сложностей и по итогу забили на подобный способ пролива. Возможно кого-то не убедили плюсы высказанные в пользу бота и все как лили на тг-каналы, так и льют. &lt;/p&gt;
  &lt;p id=&quot;YVIh&quot;&gt;Использование &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;PuzzleBot &lt;/a&gt;в схемном трафике позволяет снизить нагрузки на обработчиков и сделать контент персонализированным (подробнее о всех плюсах в &lt;a href=&quot;https://teletype.in/@adamusfb/shemny-traffic-integracia-keitaro-puzzlebot#XGGr&quot; target=&quot;_blank&quot;&gt;первой части&lt;/a&gt;). Помимо этого существуют плюсы &amp;quot;второго уровня&amp;quot;, которые снимают головняки как с овнеров, так и с обработчиков. &lt;/p&gt;
  &lt;p id=&quot;pk4y&quot;&gt;Для того чтобы увидеть эти возможности, необходимо обладать чуть бОльшим количеством знаний в программировании, чем нам требовалось в ч.1. Но даже если вы ими не обладаете, всегда есть &lt;a href=&quot;https://chat.openai.com/&quot; target=&quot;_blank&quot;&gt;Chat GPT&lt;/a&gt;, в котором можно собрать все что угодно букавально в пару кликов. К слову код приведенный ниже, &amp;quot;блочно&amp;quot; собран именно в нейронке GPT. &lt;/p&gt;
  &lt;p id=&quot;2uIY&quot;&gt;&lt;strong&gt;Плюсы тг-ботов для овнеров:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;twZv&quot;&gt;
    &lt;li id=&quot;BHG2&quot;&gt;Невозможность повторно записать деп к себе в стату, если этот деп уже присвоен другому обработчику (обмануть / украсть). В связи с этим не нужен спец. человек, который будет заниматься проверкой и подсчетом депов и выплат каждому из обрабов (считается автоматически ботом).&lt;/li&gt;
    &lt;li id=&quot;1HY3&quot;&gt;Полная изолированность сотрудников от внутренних процессов / доступа в партнерки / трекеры. Обработчики в лучшем случае будут иметь доступ в Кейтаро, но и без этого можно обойтись с помощью персонального бота под каждого обработчика (пример кода приведен ниже в статье).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;zAxX&quot;&gt;Сейчас крупные команды выдают доступы к партнеркам обработчикам, для того чтобы те сверяли id игроков и тем самым проверяли действительно ли юзер перерегистрировался по трек ссылке.&lt;/blockquote&gt;
  &lt;p id=&quot;YbrA&quot;&gt;&lt;strong&gt;Плюсы тг-ботов для обработчиков:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;skQJ&quot;&gt;
    &lt;li id=&quot;ngbn&quot;&gt;Легкая, интуитивно-понятная запись депа к себе в стату обработчиком. Больше не надо просить юзера прислать его ID на платформе казино, у нас вся привязка осуществляется по chat_id юзера в Telegram&lt;/li&gt;
    &lt;li id=&quot;gJJ1&quot;&gt;Легкая доступность статистики для обработчика через персонального бота обработчика + автоматический рассчет выплаты / прямого доступа в Кейтаро (по усмотрению овнера)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;YvFq&quot;&gt;&lt;strong&gt;Общие минусы:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;fYzQ&quot;&gt;
    &lt;li id=&quot;bvHi&quot;&gt;Всех юзеров надо регистрировать через специальную ссылку на бота с параметром ?start=имя_обраба. &lt;u&gt;Не обязательно заливать конкретно на бота&lt;/u&gt;, можно и на канал, но ссылка &lt;u&gt;с канала должна вести на бота&lt;/u&gt; со специальным параметром, чтобы бот сразу же скидывал ссылку для регистрации юзеру, вместо обычных постов на команде start&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;PcjU&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;B9bx&quot;&gt;Объяснение реализации&lt;/h3&gt;
  &lt;p id=&quot;f3LP&quot;&gt;Прежде чем реализовать подобную схему, необходимо понять как это работает и что на что влияет с технической точки зрения. Рекомендую обратить внимание на названия параметров, это особенно важно. Набросал небольшую схему в Miro, чтобы было проще сложить паззл в голове, настоятельно рекомендую ознакомиться:&lt;/p&gt;
  &lt;figure id=&quot;Y9tv&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://miro.com/app/embed/uXjVMAcwuJw=/?pres=1&amp;frameId=3458764559758923411&amp;embedId=340228001928&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WH3t&quot;&gt;Я специально создал схему с логикой работы скрипта, чтобы команды могли отдать это своим штатным кодерам. Мой код ниже - &lt;strong&gt;это лишь пример возможностей не претендующий на лучшее качество &lt;/strong&gt;и тд.&lt;/p&gt;
  &lt;h3 id=&quot;vdkI&quot;&gt;&lt;br /&gt;Требования&lt;/h3&gt;
  &lt;p id=&quot;5Gkt&quot;&gt;- Наличие редакции &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro с admin api&lt;/a&gt;&lt;br /&gt;- Базовое понимание работы трекера&lt;br /&gt;- Базовое понимание кода и работы с python&lt;/p&gt;
  &lt;p id=&quot;v5nv&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;kGZR&quot;&gt;Настройка скрипта&lt;/h3&gt;
  &lt;p id=&quot;BReA&quot;&gt;1. У меня код стоит на винде, поэтому и рассказывать я буду про винду. Для начала нам надо накатить &lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot;&gt;python 3й версии.&lt;/a&gt; Далее устанавливаем &lt;a href=&quot;https://www.google.com/search?sxsrf=AB5stBiX7V-lWUS5RCLLHV4JCUEls7gFGA:1689776293351&amp;q=%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0+%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D1%85+%D1%81%D1%80%D0%B5%D0%B4+python&amp;tbm=vid&amp;sa=X&amp;ved=2ahUKEwiX7tud-5qAAxVdBxAIHcG9BQYQ0pQJegQIDBAB&amp;biw=1745&amp;bih=845&amp;dpr=1.1#fpstate=ive&amp;vld=cid:595c0a13,vid:lAXNSTyALC8&quot; target=&quot;_blank&quot;&gt;переменные среды&lt;/a&gt; для удобной работы. После этого открываем cmd и ставим библиотеки &lt;code&gt;requests&lt;/code&gt; и &lt;code&gt;aiogram&lt;/code&gt; следующими командами: &lt;br /&gt;- &lt;code&gt;pip install requests&lt;/code&gt;&lt;br /&gt;- &lt;code&gt;pip install aiogram&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;2. Когда пайтон и библиотеки установлены, можно приступить к настройке кода. Создаем папку в любом месте системы и в ней создаем текстовик с содержимым указанным ниже. Далее файл нужно будет переименовать в .py вместо .txt. &lt;/p&gt;
  &lt;blockquote id=&quot;7FPM&quot;&gt;Код приведенный ниже полностью написан с помощью Chat GPT точечными запросами. Т.е я писал его не целиком, а именно блочно, соединяя потом эти блоки воедино. По сути это демонстрирует возможности, которые открываются буквально всем, было бы время и желание в этом развиваться. Поэтому enjoy, можно писать все что угодно для командной структуры затрачивая минимум времени.&lt;/blockquote&gt;
  &lt;pre id=&quot;BP5g&quot;&gt;import requests
from aiogram import Bot, Dispatcher, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from aiogram.dispatcher import FSMContext
from aiogram.dispatcher.filters import Command
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton, CallbackQuery
import datetime
import os

# ==================== CONFIG ====================
# Настройки телеграм
bot_token = &amp;#x27;from_botfather_token&amp;#x27; # Тут указываем токен бота созданного в @botfather_bot

# Настройки кейтаро
kt_address = &amp;#x27;https://domain.com&amp;#x27; # Необходимо указать домен привязанный в Кейтаро на ssl сертификате (обязательно!)
kt_token = &amp;#x27;keitaro_token&amp;#x27; # Получаем админский токен от Кейтаро тут - keitarodomain.com/admin/#!/profile/admin_api_keys
kt_timezone = &amp;#x27;Europe/Moscow&amp;#x27; # От часового пояса будет зависеть разбивка статы у обработчика

# Внутренние переменные бота
admin = &amp;#x27;@admin&amp;#x27; # Здесь необходимо указать ник юзера, отвечающего за тех. обслуживание ботов для обработчиков. В случае ошибки, обработчик будет знать кому переслать ошибку выданную ботом
chat_id = &amp;#x27;&amp;#x27; # Оставляем пустым, не обращаем внимание
handler_name = &amp;#x27;az&amp;#x27; # Это метка обработчика, которая будет записываться в Кейтаро. Не указывайте длинные метки, пусть лучше будут 2-3 символа
aff_links = [{&amp;#x27;Grecia - GR&amp;#x27;:&amp;#x27;https://my.links&amp;#x27;}] # Тут можно указывать список ссылок в формате json array. Все эти ссылки будут присылаться обработчику после вызова команды /links. Бот будет подставлять метку handler_name в каждую из ссылок

# Путь к файлу с логами chat_id
chat_ids_file = &amp;#x27;chat_ids.txt&amp;#x27; # Если для вас название файла лога не имеет значение, оставляем все как есть
# ==================== CONFIG ====================

# Инициализируем бота и диспетчера
bot = Bot(token=bot_token)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)

# Подпись в консоли чей бот
print(f&amp;#x27;============== {handler_name} ==============&amp;#x27;)

# Проверка наличия chat_id в файле
def check_chat_id(chat_id):
    if os.path.isfile(chat_ids_file):
        with open(chat_ids_file, &amp;#x27;r&amp;#x27;) as file:
            return str(chat_id) in file.read()
    else:
        return False

def clear_text_file():
    # Открытие файла в режиме записи (существующий файл будет перезаписан)
    with open(chat_ids_file, &amp;#x27;w&amp;#x27;) as file:
        # Запись пустой строки в файл
        file.write(&amp;#x27;&amp;#x27;)

# Запись chat_id в файл
def write_chat_id(chat_id):
    with open(chat_ids_file, &amp;#x27;a&amp;#x27;) as file:
        file.write(str(chat_id) + &amp;#x27;\n&amp;#x27;)

def calculate_payment(client_count):
    if client_count &amp;lt;= 15:
        payment = 1 * client_count
    elif client_count &amp;lt;= 30:
        payment = (1 * 15) + (2 * (client_count - 15))
    elif client_count &amp;lt;= 45:
        payment = (1 * 15) + (2 * 15) + (3 * (client_count - 30))
    else:
        payment = (1 * 15) + (2 * 15) + (3 * 15) + (3 * (client_count - 45))

    return payment

periods = [
    {&amp;quot;today&amp;quot;: &amp;quot;За сегодня&amp;quot;},
    {&amp;quot;yesterday&amp;quot;: &amp;quot;За вчера&amp;quot;},
    {&amp;quot;last_monday&amp;quot;: &amp;quot;Текущая неделя&amp;quot;},
    {&amp;quot;7_days_ago&amp;quot;: &amp;quot;За последние 7 дней&amp;quot;},
    {&amp;quot;first_day_of_this_month&amp;quot;: &amp;quot;Текущий месяц&amp;quot;},
    {&amp;quot;previous_month&amp;quot;: &amp;quot;Предыдущий месяц&amp;quot;},
    {&amp;quot;1_month_ago&amp;quot;: &amp;quot;За последние 30 дней&amp;quot;}
]

# Обработчик команды /stats
@dp.message_handler(Command(&amp;#x27;stats&amp;#x27;))
async def process_stats_command(message: types.Message, state: FSMContext):
    # Отправляем сообщение с просьбой ввести текст
    await message.reply(&amp;quot;Форматы дат: \n&amp;quot;+&amp;#x27;\n&amp;#x27;.join([f&amp;quot;{list(period.keys())[0]}: {list(period.values())[0]}&amp;quot; for period in periods]))

    # Устанавливаем состояние &amp;#x27;answer&amp;#x27; для данного пользователя
    await state.set_state(&amp;#x27;answer&amp;#x27;)

# Обработчик ответа с текстом
@dp.message_handler(state=&amp;quot;answer&amp;quot;, content_types=types.ContentTypes.TEXT)
async def process_text_answer(message: types.Message, state: FSMContext):
    # Получаем текст из ответа
    interval = message.text
    
    if any(interval in item for item in periods):
        body = {
          &amp;quot;range&amp;quot;: {
            &amp;quot;interval&amp;quot;: interval,
            &amp;quot;timezone&amp;quot;: kt_timezone
          },
          &amp;quot;columns&amp;quot;: [
            &amp;quot;datetime&amp;quot;,
            &amp;quot;campaign&amp;quot;,
          ],
          &amp;quot;metrics&amp;quot;: [],
          &amp;quot;grouping&amp;quot;: [],
          &amp;quot;filters&amp;quot;: [
            {
              &amp;quot;name&amp;quot;: &amp;quot;is_sale&amp;quot;,
              &amp;quot;operator&amp;quot;: &amp;quot;IS_TRUE&amp;quot;,
              &amp;quot;expression&amp;quot;: None
            },
            {
              &amp;quot;name&amp;quot;: &amp;quot;sub_id_7&amp;quot;,
              &amp;quot;operator&amp;quot;: &amp;quot;CONTAINS&amp;quot;,
              &amp;quot;expression&amp;quot;: handler_name
            }
          ],
          &amp;quot;sort&amp;quot;: [
            {
              &amp;quot;name&amp;quot;: &amp;quot;datetime&amp;quot;,
              &amp;quot;order&amp;quot;: &amp;quot;desc&amp;quot;
            }
          ],
          &amp;quot;summary&amp;quot;: True,
          &amp;quot;limit&amp;quot;: 500,
          &amp;quot;offset&amp;quot;: 0
        }

        result = requests.post(f&amp;#x27;{kt_address}/admin_api/v1/clicks/log&amp;#x27;, json=body, headers={&amp;#x27;Api-key&amp;#x27;: kt_token})

        if(result.status_code == 200):
            json = result.json()
            
            results = {}

            for row in json[&amp;#x27;rows&amp;#x27;]:
                campaign = row[&amp;#x27;campaign&amp;#x27;]
                click_datetime = row[&amp;#x27;datetime&amp;#x27;]
                click_date = datetime.datetime.strptime(click_datetime, &amp;#x27;%Y-%m-%d %H:%M:%S&amp;#x27;).strftime(&amp;#x27;%Y-%m-%d&amp;#x27;)
                
                if campaign not in results:
                    results[campaign] = {}
                
                if click_date not in results[campaign]:
                    results[campaign][click_date] = 0 
                
                results[campaign][click_date] += 1

            # Сортировка результатов по дате
            sorted_results = {}
            for campaign, dates in results.items():
                sorted_dates = dict(sorted(dates.items(), key=lambda x: datetime.datetime.strptime(x[0], &amp;#x27;%Y-%m-%d&amp;#x27;)))
                sorted_results[campaign] = sorted_dates

            # Форматированный вывод результатов
            for campaign, dates in sorted_results.items():
                output = f&amp;quot;Campaign: {campaign}\n&amp;quot;
                summ_sales = 0
                summ_payout = 0
                
                for date in dates.items():
                    sales = date[1]
                    payout = calculate_payment(date[1])
                    
                    summ_sales += sales
                    summ_payout += payout
                    
                    output += f&amp;quot;  {date[0]}:\n&amp;quot;
                    output += f&amp;quot;    Sales: {sales}\n&amp;quot;
                    output += f&amp;#x27;    Payout: {payout}$\n\n&amp;#x27;
                
                output += f&amp;#x27;------------\nTotal:\nSales: {summ_sales}\nPayout: {summ_payout}$&amp;#x27;
                await message.reply(output)
        else:
            print(f&amp;#x27;Ошибка запроса {result.status_code}&amp;#x27;)
    else:
        await message.reply(&amp;#x27;Неверный формат даты&amp;#x27;)

    # Сбрасываем состояние &amp;#x27;answer&amp;#x27; для данного пользователя
    await state.finish()


@dp.message_handler(Command(&amp;#x27;links&amp;#x27;))
async def links(message: types.Message):
    for link in aff_links:
        key = next(iter(link.keys()))
        await bot.send_message(message.chat.id, f&amp;#x27;{key}:&amp;#x27;)
        await bot.send_message(message.chat.id, f&amp;#x27;{link[key]}?start={handler_name}&amp;#x27;)

# Обработчик команды /help
@dp.message_handler(Command(&amp;#x27;help&amp;#x27;))
async def start(message: types.Message):
    await message.reply(f&amp;#x27;&amp;#x27;&amp;#x27;
/help - получить список команд
/links - получить список твоих ссылок
/stats - получить статистику
&amp;#x27;&amp;#x27;&amp;#x27;)

# Обработчик команды /clear_log
@dp.message_handler(Command(&amp;#x27;clear_log&amp;#x27;))
async def clear_log(message: types.Message):
    clear_text_file()
    await message.reply(f&amp;#x27;Файл лога {chat_ids_file} очищен&amp;#x27;)

# Обработчик пересланных сообщений
@dp.message_handler(content_types=types.ContentType.TEXT, is_forwarded=True)
async def forwarded_message(message: types.Message, state: FSMContext):
    global chat_id
    if message.forward_from:
        chat_id = str(message.forward_from.id)

        if not check_chat_id(chat_id):
            write_chat_id(chat_id)
            await message.reply(f&amp;#x27;Запрос на запись юзера {chat_id} на ваше имя {handler_name} в обработке ⚙️&amp;#x27;) #message.chat.id, 

            # Выполнение указанного кода с тремя попытками
            # tries = 5
            try:
            # for i in range(tries):
                # print(f&amp;#x27;Попытка получить данные из трекера по chat_id {chat_id} №{i}&amp;#x27;)
            
                data = {
                    &amp;quot;range&amp;quot;: {
                        &amp;quot;interval&amp;quot;: &amp;quot;1_month_ago&amp;quot;,
                        &amp;quot;timezone&amp;quot;: kt_timezone
                    },
                    &amp;quot;columns&amp;quot;: [
                        &amp;quot;sub_id&amp;quot;
                    ],
                    &amp;quot;metrics&amp;quot;: [],
                    &amp;quot;grouping&amp;quot;: [],
                    &amp;quot;filters&amp;quot;: [
                        {
                            &amp;quot;name&amp;quot;: &amp;quot;sub_id_9&amp;quot;,
                            &amp;quot;operator&amp;quot;: &amp;quot;CONTAINS&amp;quot;,
                            &amp;quot;expression&amp;quot;: chat_id
                        }
                    ],
                    &amp;quot;sort&amp;quot;: [
                        {
                            &amp;quot;name&amp;quot;: &amp;quot;datetime&amp;quot;,
                            &amp;quot;order&amp;quot;: &amp;quot;desc&amp;quot;
                        }
                    ],
                    &amp;quot;summary&amp;quot;: True,
                    &amp;quot;limit&amp;quot;: 250,
                    &amp;quot;offset&amp;quot;: 0
                }

                response = requests.post(f&amp;#x27;{kt_address}/admin_api/v1/clicks/log&amp;#x27;, json=data, headers={&amp;quot;Api-Key&amp;quot;: kt_token})
                
                # success = False
                
                if response.status_code == 200:
                    rows = response.json().get(&amp;#x27;rows&amp;#x27;, [])
                    print(f&amp;#x27;Ответ на получение subid\&amp;#x27;s по chat_id {chat_id}: {rows}&amp;#x27;)
                    
                    if len(rows) &amp;gt; 0:
                        completed_subids = []
                    
                        for row in rows:
                            subid = row.get(&amp;#x27;sub_id&amp;#x27;)
                              
                            print(f&amp;#x27;Началась обработка {subid}&amp;#x27;)
                            
                        # for _ in range(tries):
                            result = requests.get(f&amp;#x27;{kt_address}/?_update_tokens=1&amp;amp;sub_id={subid}&amp;amp;sub_id_7={handler_name}&amp;#x27;)
                            if result.status_code == 200:
                                completed_subids.append(subid)
                                print(f&amp;#x27;Запрос по обновление токенов по {subid} обработан успешно&amp;#x27;)
                                
                                # break
                            else: 
                                await bot.send_message(message.chat.id, f&amp;#x27;Запрос на обновление токена по {subid} завершился ошибкой ❌. Перешли эту ошибку админу бота {admin}&amp;#x27;)
                        # break
                        
                        completed_subids_str = &amp;#x27;\n&amp;#x27;.join(completed_subids)
                        await bot.send_message(message.chat.id, f&amp;#x27;Все {len(completed_subids)+1} кликов юзера {chat_id} записаны на {handler_name}✅\r\n\r\nСписок subid\&amp;#x27;s:\r\n{completed_subids_str}&amp;#x27;)
                    else:
                        # success = True
                        print(f&amp;#x27;Юзер с id {chat_id} не найден в системе трекера&amp;#x27;)
                        await bot.send_message(message.chat.id, f&amp;#x27;Юзер с id {chat_id} не найден в системе трекера 📔. Необходимо чтобы этот юзер был зарегистрирован по одной из трекинговых ссылок. Полный список ссылок по команде /links&amp;#x27;)
                else:
                    print(f&amp;#x27;Не удалось получить данные от keitaro по chat_id {chat_id}. Status code: {response.status_code}&amp;#x27;)
                    
                # if success:
                    # break
            except Exception as e:
                await bot.send_message(message.chat.id, f&amp;quot;Произошла ошибка при выполнении запроса: {str(e)}. Перешли эту ошибку админу бота {admin}&amp;quot;)
        else:
            await message.reply(f&amp;#x27;Этот chat_id {chat_id} юзера уже присвоен одному из обработчиков 😔&amp;#x27;) #message.chat.id,
    else:
        await message.reply(&amp;#x27;Пересланное сообщение не из чата&amp;#x27;) #message.chat.id, 

# Запускаем бота
if __name__ == &amp;#x27;__main__&amp;#x27;:
    from aiogram import executor
    executor.start_polling(dp, skip_updates=True)
&lt;/pre&gt;
  &lt;p id=&quot;ytRq&quot;&gt;3. Заменяем все данные в переменных в блоке CONFIG, &lt;u&gt;предварительно внимательно прочитав&lt;/u&gt; комментарии к каждой переменной (после #)!&lt;/p&gt;
  &lt;p id=&quot;fde9&quot;&gt;Если все сделано правильно, можно запустить код двумя нажатиями на файл, который вы переименовали в .py во 2-ом шаге. Но лучший вариант запустить отдельно cmd, перейти в папку со скриптом командов &lt;code&gt;cd C:\\путь_до_папки_со_скриптом&lt;/code&gt; и только потом через команду &lt;code&gt;python code.py&lt;/code&gt; запустить скрипт. Так вы сможете видеть ошибки (traceback&amp;#x27;s), появляющиеся в момент выполнения скрипта.&lt;/p&gt;
  &lt;p id=&quot;EZfY&quot;&gt;&lt;br /&gt;&lt;strong&gt;Нюансы по работе кода:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;6ueB&quot;&gt;
    &lt;li id=&quot;X1sr&quot;&gt;Для работы кода выше, необходимо чтобы юзер переходил на регистрацию по вашей трекинговой ссылке кампании с подставленным параметром &lt;code&gt;keitarodomain.com/?chat_id={{USER_ID_TEXT}}&lt;/code&gt; - Такую ссылку должен выдавать ваш бот для регистрации. О том &lt;a href=&quot;https://teletype.in/@adamusfb/shemny-traffic-integracia-keitaro-puzzlebot#3Hrx&quot; target=&quot;_blank&quot;&gt;как настроить источник и его параметры в ч.1&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;SZMH&quot;&gt;Источник в кейтаро должен иметь параметр для хранения метки оператора. У меня к примеру это sub_id_7 и код под это заточен. Если вы хотите изменить метку в которой у вас будет храниться параметр с именем оператора, измените его в источнике, затем в кампании и в коде в 266 строчке &lt;code&gt;{kt_address}/?_update_tokens=1&amp;amp;sub_id={subid}&amp;amp;sub_id_7={handler_name}&lt;/code&gt; (sub_id_ваш_id_метки)&lt;/li&gt;
    &lt;li id=&quot;E8JI&quot;&gt;Запись лида на юзера производится в клики Кейтаро, не в конверсии. Т.е мы не можем обновить параметры внутри конверсий, тк. будет повторная отработка s2s если таковые в кампании имеются. Соотв. смотреть стату по конверсиям не получится, но нам доступна стата кампании.&lt;/li&gt;
    &lt;li id=&quot;XSXE&quot;&gt;Каждый файл с таким кодом = 1 новый бот из botfather + новое название обработчика в переменной handler_name. Простыми словами у каждого обработчика должен быть свой бот, со своими токеном и со своим названием переменной handler_name&lt;/li&gt;
    &lt;li id=&quot;XHls&quot;&gt;Все файлы всех ботов должны находиться в одной папке, тк. файл с логом ботов и все боты ориентируются на него. Если расположить их по разным папкам, будет недоступна функция проверки записан ли юзер уже на одного из обработчиков или нет.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;6D74&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;IPNB&quot;&gt;Настройка &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;PuzzleBot&lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;EGkY&quot;&gt;Теперь стоит сказать пару слов о том, как сделать, чтобы бот &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;Puzzle &lt;/a&gt;отправлял сразу ссылку на регистрацию с подставленными параметрами сразу после вызова команды start.&lt;/p&gt;
  &lt;p id=&quot;Fj3o&quot;&gt;В конструкторе бота создаем условную конструкцию, которая будет проверять на пустоту переменную &lt;code&gt;start_payload&lt;/code&gt; и если она пустая - отрабатывать обычный скрипт бота. Если не пустая - отправлять юзеру сразу текст с ссылкой для регистрации с параметрами, по примеру &lt;code&gt;&lt;a href=&quot;https://keitaro-campaign-domain.com/?chat_id=&quot; target=&quot;_blank&quot;&gt;https://keitaro-campaign-domain.com/?chat_id=&lt;/a&gt;{{USER_ID_TEXT}}&lt;/code&gt;&lt;/p&gt;
  &lt;figure id=&quot;5j9m&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e3/7f/e37f03af-2ef3-447c-8f9f-d9aea2627920.png&quot; width=&quot;901&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VWoF&quot;&gt;&lt;strong&gt;У меня пост с регистрацией выглядит так:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;7qHo&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1d/4e/1d4e0c2a-51cf-45a5-a80a-80967d073314.png&quot; width=&quot;487&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;J16C&quot;&gt;&lt;code&gt;url_first_play&lt;/code&gt; - в этой переменной хранится ссылка на кампанию кейтаро, которая делает редирект уже на оффер&lt;br /&gt;&lt;code&gt;start_payload&lt;/code&gt; - в этой метке я передаю метку обработчика. Он кидает юзеру ссылку на бота в таком формате &lt;a href=&quot;https://t.me/mybot?start=handler&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;https://t.me/mybot?start=handler&lt;/code&gt;&lt;/a&gt;, где handler это метка обработчика&lt;br /&gt;&lt;code&gt;user_id_text &lt;/code&gt;- это переменная содержащая внутри себя chat_id телеграма этого юзера. Этот id нужен для работы скрипта приведенного выше&lt;/p&gt;
  &lt;p id=&quot;QqPH&quot;&gt;&lt;strong&gt;Таким образом из всех этих переменных собирается ссылка для регистрации:&lt;br /&gt;&lt;/strong&gt;&lt;code&gt;https://mydom.com/hanler=az&amp;amp;chat_id=9445674&amp;amp;registred=0&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;VcId&quot;&gt;После проделанных выше действий, при переходе юзером в бота с подставленным параметром start, вызывается действие, которое присылает юзеру пост с готовой ссылкой для регистрации с необходимыми нам параметрами.&lt;/p&gt;
  &lt;p id=&quot;eGJo&quot;&gt;Осталось лишь объяснить обработчикам для чего подставлять &lt;code&gt;?start=&lt;/code&gt; к ссылке бота и где брать сслки для залива :) (&lt;strong&gt;PS&lt;/strong&gt;: в боте командой /links, если они там указаны предварительно конечно).&lt;br /&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Tif7&quot;&gt;Послесловие&lt;/h3&gt;
  &lt;figure id=&quot;3iF8&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/62/d6624d97-3253-4bd3-8598-a449413b13ad.png&quot; width=&quot;1090&quot; /&gt;
    &lt;figcaption&gt;Так выглядит работа правильно настроенного бота. Если не видно что написано ПКМ =&amp;gt; открыть изображение в новом окне&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;c7zS&quot;&gt;Вот и все :) Теперь вы можете заливать как с канала в бот, так и с лички в бот, имея при этом полный трекинг всего что вам нужно. Выше показан пример работы бота и какие команды за что отвечают.&lt;/p&gt;
  &lt;p id=&quot;zL4g&quot;&gt;Если вы читали первую статью и делали все точь в точь &lt;a href=&quot;https://teletype.in/@adamusfb/shemny-traffic-integracia-keitaro-puzzlebot#3Hrx&quot; target=&quot;_blank&quot;&gt;как в ней&lt;/a&gt;, то эта часть должна встать в вашу систему как влитая. Если же вы делали изменения, меняли метки и пр., &lt;strong&gt;необходимо адаптировать код под это дело &lt;/strong&gt;/ написать новый под свои задачи.&lt;br /&gt;&lt;/p&gt;
  &lt;h3 id=&quot;z7Q2&quot;&gt;Что будет дальше этой статьи?&lt;/h3&gt;
  &lt;figure id=&quot;Joim&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/56/de/56de3992-e8c1-458d-b0ce-497e5271ea25.png&quot; width=&quot;816&quot; /&gt;
    &lt;figcaption&gt;Отбив статуса lead в Facebook с помощью Conversion Api &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;WOBX&quot;&gt;По сути хотел остановиться на этом, но перая часть статьи вызвала бурный интерес к теме, поэтому я буду отталкиваться от реакций и просмотров данной части. Если продолжение будет вам интересно, напишу еще пару статей про залив за подписки в тг и оптимизацию за ФД / РД. &lt;/p&gt;
  &lt;p id=&quot;qgqt&quot;&gt;На данный момент &lt;strong&gt;найден способ отбивать лиды при подписке на канал&lt;/strong&gt;, но выглядит он громоздко, хоть и работает как часы. Рекомендую тем кто шарит заливать просто на ФД, РД, благо сделать это гораздо проще чем при заливах за подписки&lt;/p&gt;
  &lt;h3 id=&quot;a9JM&quot;&gt;Немного о спонсорах&lt;/h3&gt;
  &lt;figure id=&quot;q5xL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0e/57/0e57e55e-437b-4b3d-aa4f-9850d70e55a6.jpeg&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;uF3k&quot;&gt;Как вы сами убедились из серии статей, &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro &lt;/a&gt;невероятно эффективный инструмент в работе с трафиком. Как раз сейчас выходит новая версия 10.1, в которой будут значительные улучшения опыта работы с трекером. Советую лично от себя обновиться прямо сейчас. А чтобы обновление не вышло в копеечку, предоставляю вам промо &lt;code&gt;adamblog&lt;/code&gt; с 20% скидкой для новых участников. &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Перейди на зеленую сторону и увеличь свой ROI кратно вместе с Keitaro&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;BpgC&quot;&gt;&lt;strong&gt;Для тех кому интересно, выкладываю список новых функций:&lt;br /&gt;&lt;/strong&gt;⚡️Интеграции по автоматической передаче расходов с Google Ads и TikTok&lt;br /&gt;⚡️Режим чтения кампаний/лендингов/офферов для отдельных пользователей&lt;br /&gt;⚡️Новые статусы конверсий Reg &amp;amp; Dep для работы с гемблингом&lt;br /&gt;⚡️Новые метрики в отчетах от уникальных кликов (uCPC, uEPC и др)&lt;br /&gt;⚡️Новый редактор лендингов (обновленный функционал и дизайн)&lt;br /&gt;⚡️Совместимость с Bearer token&lt;br /&gt;⚡️Обновленная цветовая гама Dashboard &lt;/p&gt;

</content></entry><entry><id>adamusfb:shemny-traffic-integracia-keitaro-puzzlebot</id><link rel="alternate" type="text/html" href="https://teletype.in/@adamusfb/shemny-traffic-integracia-keitaro-puzzlebot?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=adamusfb"></link><title>Схемный трафик (ч.1): Автоворонка в боте</title><published>2023-06-12T23:08:50.364Z</published><updated>2023-06-13T12:32:32.516Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/2c/9f/2c9f868e-5086-44ff-a7ca-e93ac38a9ed4.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/ea/49/ea4939f0-4e4f-43c1-ad0c-56fa63e74be4.png&quot;&gt;Еще год-полтора назад появилось такое понятие как &quot;Схемный трафик&quot; и изначально им пользовались исключительно гемблисты. Позже этим же способом начали лить бинарки, крипту, нутру и все прочее. Сейчас схемный находится в топе, все больше аффов адаптируют свои классические воронки под работу с мессенджерами в связке с чат-операторами. </summary><content type="html">
  &lt;figure id=&quot;HRCT&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ea/49/ea4939f0-4e4f-43c1-ad0c-56fa63e74be4.png&quot; width=&quot;2400&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;CIlQ&quot;&gt;Предыстория&lt;/h3&gt;
  &lt;p id=&quot;4uq2&quot;&gt;Еще год-полтора назад появилось такое понятие как &amp;quot;Схемный трафик&amp;quot; и изначально им пользовались исключительно гемблисты. Позже этим же способом начали лить бинарки, крипту, нутру и все прочее. Сейчас схемный находится в топе, все больше аффов адаптируют свои классические воронки под работу с мессенджерами в связке с чат-операторами. &lt;/p&gt;
  &lt;p id=&quot;xizS&quot;&gt;Мне было интересно взяться за подобное и посмотреть на устройство этого изобретения изнутри, ну и конечно же придумать пару технических штук для упрощения работы операторов и команды в целом. &lt;br /&gt;&lt;/p&gt;
  &lt;h3 id=&quot;17HD&quot;&gt;О чем эта статья&lt;/h3&gt;
  &lt;p id=&quot;VxTv&quot;&gt;Сегодня речь пойдет об автоворонке и ее реализации с помощью сервиса &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;PuzzleBot&lt;/a&gt;. Кто не в курсе, Puzzle - это &lt;code&gt;no-code&lt;/code&gt; конструктор чат ботов Telegram, обладающий практически неограниченными возможностями.&lt;/p&gt;
  &lt;p id=&quot;eX9W&quot;&gt;&lt;strong&gt;Почему я выбрал именно PuzzleBot? &lt;br /&gt;&lt;/strong&gt;&lt;em&gt;- Стабильность&lt;br /&gt;- Наличие входящего и исходящего API &lt;br /&gt;- Наличие сценариев / постинга&lt;br /&gt;- Возможность интеграции WebApp в бота&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;1Uxg&quot;&gt;Сразу скажу, в данной статье &lt;u&gt;&lt;strong&gt;я не буду разбирать конкретные примеры воронок&lt;/strong&gt;&lt;/u&gt; (текст, визуал), а лишь покажу возможности, которые открываются при использовании связки партнерки + трекера + пазла. Для кого-то информация изложенная внизу может показаться банальной, для кого-то это будет откровением.&lt;br /&gt; &lt;br /&gt;Чтобы было проще понять о чем идет речь, &lt;strong&gt;&lt;u&gt;я сделал пример&lt;/u&gt;&lt;/strong&gt; такого бота специально для вас: ➡️&lt;a href=&quot;https://t.me/scheme_traffic_bot&quot; target=&quot;_blank&quot;&gt;https://t.me/scheme_traffic_bot⬅️&lt;/a&gt;. &lt;strong&gt;&lt;u&gt;Потыкайтесь&lt;/u&gt;&lt;/strong&gt; и вернитесь в статью. &lt;/p&gt;
  &lt;p id=&quot;nr7R&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;PZT5&quot;&gt;Немного о минусах и плюсах&lt;/h3&gt;
  &lt;p id=&quot;D9uF&quot;&gt;Для начала стоит перечислить минусы использования ботов в схемном трафике. Глупо было бы ожидать что все будет идеально, ведь если крупные команды прямо сейчас заливают на каналы, значит не все так гладко, ну либо они слишком ленивы и не хотят заниматься продумыванием структуры ботов. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Главный &lt;/strong&gt;и &lt;strong&gt;самый существенный минус бота&lt;/strong&gt; - это неумение аудитории пользоваться кнопками и прочим функицоналом ТГ. Среди всего прочего, этот минус выделяется и бьет по шарам. Тем не менее, этот &amp;quot;острый угол&amp;quot; можно сгладить с помощью сценариев / событий / контента внутри бота.&lt;/p&gt;
  &lt;p id=&quot;XGGr&quot;&gt;&lt;strong&gt;Плюсы бота:&lt;/strong&gt; &lt;/p&gt;
  &lt;ul id=&quot;SbPR&quot;&gt;
    &lt;li id=&quot;K21e&quot;&gt;Полный трекинг &lt;u&gt;&lt;strong&gt;всего что можно оттрекать&lt;/strong&gt;&lt;/u&gt;&lt;/li&gt;
    &lt;li id=&quot;d7ok&quot;&gt;Сигментирование аудитории на всех этапах&lt;/li&gt;
    &lt;li id=&quot;A2Cg&quot;&gt;Сохранение контактов юзера, если они регнулись через ссылку на бота из канала (вместо прямых ссылок, размещаем ссылки на бота в канале и юзеры делают регу через него)&lt;/li&gt;
    &lt;li id=&quot;87OL&quot;&gt;Скрытость воронки (контента) от посторонних глаз&lt;/li&gt;
    &lt;li id=&quot;whOk&quot;&gt;Процент отписки (блокировки) от бота ~25% от общего числа подписавшихся &lt;u&gt;за счет персонализированного контента&lt;/u&gt;. Тогда как в канале этот процент может достигать 55-60%.&lt;/li&gt;
    &lt;li id=&quot;d3A9&quot;&gt;Автоматическая работа с юзером на основе S2S постбэков из &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro&lt;/a&gt; \ &lt;a href=&quot;https://cp.binom.org/aff/go/pavelogsflt&quot; target=&quot;_blank&quot;&gt;Binom&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;5hJu&quot;&gt;Возможность встраивания WebApp (сайт) прямо внутрь бота&lt;/li&gt;
    &lt;li id=&quot;vOYe&quot;&gt;Возможность использования Conversion API Facebook для трекинга различных событий&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;c0FA&quot;&gt;&lt;strong&gt;Минусы бота&lt;/strong&gt;: &lt;/p&gt;
  &lt;ul id=&quot;MBzX&quot;&gt;
    &lt;li id=&quot;8KQw&quot;&gt;Отсутствие соц. подтверждения в виде количества подписчиков на канале \ количестве просмотров и лайков на постах&lt;/li&gt;
    &lt;li id=&quot;AXbO&quot;&gt;Безграмотность аудитории и не понимание как работать с ботом (зависит от гео и от вашего поясняющего этот момент контента)&lt;/li&gt;
    &lt;li id=&quot;FvVX&quot;&gt;Не у всех партнерок есть настройка постбэков в трекер на каждое из событий&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;RI6v&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;z74q&quot;&gt;&lt;strong&gt;Как сделать подобное&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;faIN&quot;&gt;Если вы протыкали все кнопки в &lt;a href=&quot;https://t.me/scheme_traffic_bot&quot; target=&quot;_blank&quot;&gt;тестовом боте&lt;/a&gt; и дошли до этой главы, то вы готовы немного напрячь мозги и сделать красиво. Ниже будет приведена пошаговая инструкция для реализации. Сразу скажу, для того чтобы пройтись по руководству и нигде не ошибиться, нужно ознакомиться &lt;strong&gt;&lt;u&gt;хотя бы с базой функционала вашего трекера&lt;/u&gt;&lt;/strong&gt; и &lt;strong&gt;&lt;u&gt;&lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;сервиса PuzzleBot&lt;/a&gt;&lt;/u&gt;&lt;/strong&gt;. Без этого фундамента, вряд ли у вас получится собрать &amp;quot;пазл&amp;quot; воедино и получить что-то рабочее на выходе. &lt;/p&gt;
  &lt;p id=&quot;CUcx&quot;&gt;Бот который был приведен в пример выше собран в связке ПП + &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro &lt;/a&gt;+ PuzzleBot. Соотв. все что приведено ниже, будет сделано на примере &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro&lt;/a&gt;. Если у вас &lt;a href=&quot;https://cp.binom.org/aff/go/pavelogsflt&quot; target=&quot;_blank&quot;&gt;Binom &lt;/a&gt;- курите их &lt;a href=&quot;https://docs.binom.org/&quot; target=&quot;_blank&quot;&gt;доку&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Из тех знаний, которые пригодятся в работе: &lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;EpKC&quot;&gt;
    &lt;li id=&quot;YAOd&quot;&gt;&lt;a href=&quot;https://docs.keitaro.io/ru/conversions-and-postback/postback.html&quot; target=&quot;_blank&quot;&gt;Настройка постбэков из партнерской сети&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;3jdV&quot;&gt;&lt;a href=&quot;https://docs.keitaro.io/ru/campaigns-and-streams/s2s-postback.html?h=s2s&quot; target=&quot;_blank&quot;&gt;Настройка S2S постбэков внутри кампании трекера&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;R7Ml&quot;&gt;&lt;a href=&quot;https://help.puzzlebot.top/article?r=17&amp;a=150&quot; target=&quot;_blank&quot;&gt;Входящий API сервиса PuzzleBot&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;CL9X&quot;&gt;Я не буду рассказывать как работает тот или иной сервис / как подцепить бота в Puzzle или как добавить в бота ресурс (канал или чат). Читайте их &lt;a href=&quot;https://help.puzzlebot.top/&quot; target=&quot;_blank&quot;&gt;доку &lt;/a&gt;/ смотрите поясняющие видосы на их &lt;a href=&quot;https://www.youtube.com/c/iampuzzlebot&quot; target=&quot;_blank&quot;&gt;Youtube-канале&lt;/a&gt;. &lt;strong&gt;Там все / обо всем подробно расписано&lt;/strong&gt;. &lt;/p&gt;
  &lt;h3 id=&quot;n87m&quot;&gt;&lt;br /&gt;Настроим PuzzleBot&lt;/h3&gt;
  &lt;p id=&quot;FsMj&quot;&gt;1. После подключения бота и нужных ресурсов в него, зайдем в раздел &lt;a href=&quot;https://cp.puzzlebot.top/moderation&quot; target=&quot;_blank&quot;&gt;Модерация&lt;/a&gt; и создадим следующие категории: &lt;/p&gt;
  &lt;ul id=&quot;6l17&quot;&gt;
    &lt;li id=&quot;EuKH&quot;&gt;Зарегистрирован&lt;/li&gt;
    &lt;li id=&quot;oG5m&quot;&gt;Сделал Sale&lt;/li&gt;
    &lt;li id=&quot;FkgL&quot;&gt;Сделал Rebill &lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;CyAB&quot;&gt;В моем примере они указаны так. Вы конечно же можете назвать их как вам заблагорассудиться. Главное чтобы эти категории отображали смысл полученного постбэка от трекера (lead/sale/rebill).&lt;/blockquote&gt;
  &lt;figure id=&quot;qrPF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bf/58/bf5824d0-b950-41a6-97f7-b14fca1264ba.png&quot; width=&quot;782&quot; /&gt;
    &lt;figcaption&gt;Категории будут присваиваться юзерам автоматически (если это нстроено в конструкторе) после прохождения определенных команд в боте (рега, деп, редеп). Далее мы сможем смотреть стату, &amp;quot;разбивать&amp;quot; их по статусам и пр. Создавать категории можно не только под постбэки, но и под любые другие действия в боте - тут все зависит от ваших целей. &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;E1Vk&quot;&gt;2. &lt;strong&gt;Зайдем в &lt;a href=&quot;https://cp.puzzlebot.top/constructor&quot; target=&quot;_blank&quot;&gt;Конструктор Puzzle &lt;/a&gt;и создадим 3 базовые команды&lt;/strong&gt;, которые будут вызываться по API PuzzleBot с помощью настроеного S2S постбэка в кампании &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro&lt;/a&gt;. У меня эти действия называются &lt;code&gt;registred, deposited, redeposited&lt;/code&gt;. Вы же можете назвать их как вам угодно, &lt;u&gt;главное что бы было понимание что эти названия команд, в дальнейшем необходимо будет указывать при обращении к апи паззла&lt;/u&gt;. &lt;/p&gt;
  &lt;figure id=&quot;Hpoe&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d4/a7/d4a7b4d7-7bf5-4427-af8a-f931552abc66.png&quot; width=&quot;1173&quot; /&gt;
    &lt;figcaption&gt;Так выглядит базовая конструкция бота, для работы с постбэками из Keitaro TDS. От этих 3х действий можно строить дальнейшие логические цепочки и планировать воронку.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;G527&quot;&gt;&lt;strong&gt;Рассмотрим подробнее как выглядят эти команды внутри:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;Aj90&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1e/fc/1efc1e3f-fee0-4f2c-b13c-068e183346f2.png&quot; width=&quot;1166&quot; /&gt;
    &lt;figcaption&gt;Остальные действия deposited, rediposited настроены аналогичным образом, как на скриншоте выше, но категории там присваиваются юзеру уже совсем другие, которые отвечают отработке постбэков на sale / rebill.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3xyg&quot;&gt;В каждой команде я поставил &lt;strong&gt;&lt;u&gt;доп. действие&lt;/u&gt;&lt;/strong&gt; при срабатывании команды. Первое действие что мы делаем - меняем категорию для юзера, у которого сработала команда &lt;code&gt;registred&lt;/code&gt; . По желанию делаем уведомление в спец. группу о переходе юзера из одной категории в другую. Это уже по желанию, но мне так удобнее, потому что я и моя команда &lt;u&gt;всегда видим кто/что/когда сделал&lt;/u&gt; и можем по &lt;u&gt;одному клику найти этот диалог в тг&lt;/u&gt;.&lt;/p&gt;
  &lt;p id=&quot;FvRT&quot;&gt;3. &lt;strong&gt;Создадим токен&lt;/strong&gt; от нашего &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;Puzzle бота&lt;/a&gt; для доступа к внешнему API и сохраним его к себе в блокнотик. Он нам пригодится, когда будем настраивать S2S внутри кампании KT.&lt;/p&gt;
  &lt;figure id=&quot;ZlsF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/14/7f/147f50ed-e682-426d-a472-bca34b70c71b.png&quot; width=&quot;1157&quot; /&gt;
    &lt;figcaption&gt;Созданные токены всегда доступны в настройках бота, в разделе &amp;quot;Интеграции&amp;quot;. &lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rcC7&quot;&gt;На этом настройка &lt;strong&gt;&lt;u&gt;базы&lt;/u&gt;&lt;/strong&gt; для автобота завершена. После настройки других компонентов (пп, трекера) этого большого пазла, можно будет вернуться и &amp;quot;обвесить&amp;quot; этот каркас контентом и пр. лабудой. &lt;/p&gt;
  &lt;p id=&quot;5rdB&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;1vbY&quot;&gt;Настройка Партнерской сети&lt;/h3&gt;
  &lt;p id=&quot;zzDQ&quot;&gt;Практически в каждом трекере уже имеются готовые шаблоны для прокидывания постбэков из ПП. Все что вам надо сделать, зайти в раздел Партнерские сети (&lt;code&gt;/admin/#!/affiliate_networks/&lt;/code&gt;) в трекере, нажать на кнопку &amp;quot;Создать&amp;quot; и выбрать готовый шаблон постбэка. Далее вам выпадет готовая ссылка для вставки в настройки партнерской сети. Мы ее копируем, идем в настройки нашей ПП и вставляем в настройки постбэков.&lt;/p&gt;
  &lt;figure id=&quot;0UZF&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d0/47/d0476442-9e56-4828-8d78-632af83e9ca0.png&quot; width=&quot;917&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0HCM&quot;&gt;&lt;strong&gt;Но что делать, если среди шаблонов не оказалось нужной ПП?&lt;/strong&gt; - Не отчаиваться и запастись терпением. Для начала рекомендую прочесть &lt;a href=&quot;https://docs.keitaro.io/ru/conversions-and-postback/postback.html&quot; target=&quot;_blank&quot;&gt;FAQ от КТ по созданию Партнерской сети в трекере&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Для успешного создания своей ПП в &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro&lt;/a&gt;, необходимо знать &lt;strong&gt;1 фундаментальную вещь&lt;/strong&gt;: Все данные синхронизируются с помощью subid (в биноме это clickid) трекера. Сабайди это уникальный идентификатор клика, который у каждого юзера&lt;u&gt;,&lt;/u&gt; при каждом заходе &lt;strong&gt;&lt;u&gt;на ссылку кампании разный&lt;/u&gt;&lt;/strong&gt;. Я специально выделил жирным что это именно &lt;strong&gt;&lt;u&gt;ссылка кампании&lt;/u&gt;&lt;/strong&gt;, а не прямая на лендинг, тк. subid попросту не присваивается юзеру, если вы заливаете напрямую  ссылку на ленд! Этот subid мы обязаны передать в партнерку, чтобы в дальнейшем, после целевого действия юзера партнерка смогла забрать этот subid из своей БД и отправить постбэк в трекер. Звучит сложно, но на самом деле все гораздо проще чем кажется. &lt;/p&gt;
  &lt;p id=&quot;mhye&quot;&gt;&lt;strong&gt;Mindmap с объяснением взаимодействия ПП и трекара и роли Subid в этом взаимодействии:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;orKU&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://miro.com/app/live-embed/uXjVMAcwuJw=/?moveToViewport=1325,-954,1819,895&amp;embedId=901846784455&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;gdgZ&quot;&gt;Еще одна важная деталь состоит в том, что для каждого события свой статус. В кейтаро есть 3 основных статуса: &lt;code&gt;lead&lt;/code&gt;(конверсия), &lt;code&gt;sale&lt;/code&gt;(продажа), &lt;code&gt;rebill&lt;/code&gt;(на самом деле &lt;code&gt;sale + tid&lt;/code&gt;, но в БД КТ это пишется как &lt;code&gt;rebill&lt;/code&gt;- допродажа). &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Хвост постбэка на&lt;/strong&gt; &lt;code&gt;&lt;em&gt;lead&lt;/em&gt;&lt;/code&gt;:&lt;br /&gt;&lt;code&gt;postback/?subid={subid}&amp;amp;status=lead&amp;amp;payout={payout}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;GBYe&quot;&gt;&lt;strong&gt;Хвост постбэка на&lt;/strong&gt; &lt;code&gt;&lt;em&gt;sale&lt;/em&gt;&lt;/code&gt;:&lt;br /&gt;&lt;code&gt;postback/?subid={subid}&amp;amp;status=sale&amp;amp;payout={payout}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;37Op&quot;&gt;&lt;strong&gt;Хвост постбэка на&lt;/strong&gt; &lt;code&gt;rebill&lt;/code&gt;:&lt;br /&gt;&lt;code&gt;postback/?subid={subid}&amp;amp;status=sale&amp;amp;payout={payout}&amp;amp;tid={tid}&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;i2MX&quot;&gt;По поводу статуса lead, все понятно. Но есть некоторая путаница по поводу sale &amp;amp; rebill. Смотрите, если мы отправляем постбэк только с 3 метками &lt;code&gt;subid / status / payout&lt;/code&gt; - то все это считается &lt;strong&gt;&lt;u&gt;продажей&lt;/u&gt;&lt;/strong&gt;, но если к этому хвосту добавить &lt;code&gt;tid&lt;/code&gt; (transaction id) - то этот постбэк будет считаться &lt;strong&gt;&lt;u&gt;допродажей&lt;/u&gt;&lt;/strong&gt;. По этой логике можно быстро собирать свои постбэки для любого из событий, для любой из ПП, где есть возможность настраивать постбэки.&lt;/p&gt;
  &lt;h3 id=&quot;3Hrx&quot;&gt;&lt;br /&gt;&lt;strong&gt;Настроим источник в Keitaro&lt;/strong&gt;: &lt;/h3&gt;
  &lt;p id=&quot;nPQY&quot;&gt;&lt;strong&gt;Зайдем в &amp;quot;Источники&amp;quot;&lt;/strong&gt; (&lt;code&gt;/admin/#!/traffic_sources/&lt;/code&gt;) в трекере и выберем источник с которого будем заливать схемный трафик, в моем случае это Facebook. Пропишем метку, в которую будет записываться &lt;code&gt;chat_id&lt;/code&gt;(уникальный идентификатор пользователя Telegram). По этому &lt;strong&gt;&lt;u&gt;параметру&lt;/u&gt; &lt;/strong&gt;в дальнейшем будет происходить &lt;u&gt;&lt;strong&gt;синхронизация с ботом юзера&lt;/strong&gt;&lt;/u&gt;. Если &lt;strong&gt;&lt;u&gt;не передать&lt;/u&gt;&lt;/strong&gt; &lt;code&gt;chat_id&lt;/code&gt;, мы &lt;strong&gt;&lt;u&gt;не сможем сделать S2S запрос&lt;/u&gt;&lt;/strong&gt; на API PuzzleBot с названием команды для ее запуска у юзера. &lt;/p&gt;
  &lt;p id=&quot;JIu9&quot;&gt;&lt;strong&gt;Поэтому настраиваем либо как на скрине, либо в таком порядке: &lt;/strong&gt;&lt;br /&gt;Моя метка (Название метки для отображения в стате) | my_metka | {my_metka} (в виде макроса). &lt;/p&gt;
  &lt;p id=&quot;dMIt&quot;&gt;Далее необходимо прожать галку в левом нижнем углу &amp;quot;Обновить в кампаниях&amp;quot; и сохранить. Опять же, если вы льете &lt;strong&gt;&lt;u&gt;не&lt;/u&gt;&lt;/strong&gt; только схемный, но и другие вертикали, необходимо вручную &lt;u&gt;у&lt;strong&gt;далить источник из кампании со схемным&lt;/strong&gt;&lt;/u&gt; и снова его туда проставить, а затем сохранить, чтобы все измененные метки из источника подятнулись и проставились в раздел параметров внутри кампании. &lt;/p&gt;
  &lt;figure id=&quot;LIUx&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b7/c9/b7c939cf-26ae-4434-99f6-0340886d7a3e.png&quot; width=&quot;911&quot; /&gt;
    &lt;figcaption&gt;Так выглядит у меня настройка кампании. Остальные метки замазаны. Вы можете проставить свои метки &lt;u&gt;в ближайшее свободное поле&lt;/u&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;Kwc8&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/37/0f/370f8474-4f3c-4524-8f7c-c12cc1df7da4.png&quot; width=&quot;1088&quot; /&gt;
    &lt;figcaption&gt;Параметры должны проставиться в &lt;u&gt;каждой кампании&lt;/u&gt;, которую вы собираетесь заливать &lt;u&gt;в связке с ботом&lt;/u&gt;.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;og6s&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;bIMv&quot;&gt;Настройка S2S постбэков внутри кампании Keitaro&lt;/h3&gt;
  &lt;p id=&quot;n7RQ&quot;&gt;Вот тут-то нам и пригодится &lt;a href=&quot;#FvRT&quot;&gt;созданный токен&lt;/a&gt; от &lt;a href=&quot;https://puzzlebot.top/?r=gvinj38Z&quot; target=&quot;_blank&quot;&gt;PuzzleBot &lt;/a&gt;и их &lt;a href=&quot;https://help.puzzlebot.top/article?r=17&amp;a=150&quot; target=&quot;_blank&quot;&gt;дока&lt;/a&gt;. Из их руководства следует: Для того чтобы вызвать команду у конкретного пользователя, мы обязаны сделать запрос с указанием его chat_id Telegram и названием запускаемой команды: &lt;/p&gt;
  &lt;p id=&quot;gVHx&quot;&gt;&lt;code&gt;method: &lt;strong&gt;sendCommand&lt;/strong&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;params:&lt;/code&gt;&lt;br /&gt;&lt;code&gt; command_name - string, name of command ot condition&lt;/code&gt;&lt;br /&gt;&lt;code&gt; tg_chat_id - number, Telegram id of resource or user&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;CEnR&quot;&gt;&lt;code&gt;success result: code = 0, data = &amp;quot;ok&amp;quot;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;URL для запуска команды &lt;em&gt;registred&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;в моем случае будет выглядеть вот так&lt;/strong&gt;:&lt;br /&gt;&lt;em&gt;https://api.puzzlebot.top/?token=LF4cRL0ZXmV2S6SXUCMYJmkVHIZ&amp;amp;method=sendCommand&amp;amp;command_name=registred&amp;amp;tg_chat_id={sub_id_9}&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;e1qD&quot;&gt;Я скопировал &lt;a href=&quot;#FvRT&quot;&gt;заранее созданный api-ключ из сервиса PuzzleBot&lt;/a&gt; и подставил его в метку token=. Затем в метку command_name= прописал &lt;a href=&quot;#E1Vk&quot;&gt;название команды&lt;/a&gt; так, &lt;strong&gt;&lt;u&gt;как она называется у меня в конструкторе внутри PuzzleBot&lt;/u&gt;&lt;/strong&gt;. Ну и конечно же вставил &lt;a href=&quot;#JIu9&quot;&gt;метку от трекера&lt;/a&gt;, в которой у меня хранится chat_id человека, который совершил целевое действие на моей ссылке кампании. &lt;br /&gt;&lt;br /&gt;Небольшая путаница возникает у людей, когда они сталкиваются с настройкой S2S в КТ. Почему я поставил макрос с названием &lt;em&gt;{sub_id_9} &lt;/em&gt;вместо {&lt;em&gt;chat_id&lt;/em&gt;}? - &lt;strong&gt;Все просто&lt;/strong&gt;: Для БД трекера &amp;quot;chat_id&amp;quot; - это лишь &lt;strong&gt;&lt;u&gt;пользовательское название метки&lt;/u&gt;&lt;/strong&gt; &lt;em&gt;sub_id_№ &lt;/em&gt;с порядковым номером 9. Если вы поставите в S2S ваше пользовательское название (у меня это chat_id), то трекер попросту &lt;u&gt;&lt;strong&gt;не найдет такой метки&lt;/strong&gt;&lt;/u&gt;, не сможет испольнить макрос и получить значение из БД. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Найти свой порядковый номер sub_id_ очень легко. Достаточно зайти в кампанию и посчитать сверху вниз по нарастающей, как указано это на скриншоте снизу:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;Eell&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/db/0a/db0a6102-49aa-4ed2-bd67-3606030dcd46.png&quot; width=&quot;1077&quot; /&gt;
    &lt;figcaption&gt;Исходя из этой логики, нужное мне значение лежит в метке sub_id_9&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JLYM&quot;&gt;1. С &lt;a href=&quot;#CEnR&quot;&gt;собранной ссылкой&lt;/a&gt; для S2S, идем во вкладку S2S Postback внутри настраиваемой кампании, создаем перый наш постбэк для события lead и вписываем собранную ссылку в поле URL:&lt;/p&gt;
  &lt;figure id=&quot;u182&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/22/ca/22ca38ad-61bd-43c2-934e-c8035a6136fb.png&quot; width=&quot;955&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;a5YL&quot;&gt;2. Далее я создаю еще один постбэк с помощью кнопки &amp;quot;Добавить&amp;quot;, заменяю в &lt;a href=&quot;#CEnR&quot;&gt;URL&lt;/a&gt; в метке &lt;em&gt;command_name&lt;/em&gt;= значение на следующую мою пользовательскую команду из конструктора PuzzleBot - у меня это deposited: &lt;/p&gt;
  &lt;figure id=&quot;Hl8M&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ef/88/ef884e22-f61e-471e-8432-f0d8a1759803.png&quot; width=&quot;960&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;yNyb&quot;&gt;3. Те же действия проделываем с 3им постбэком: создаем, заменяем на соотв. команду (у меня это redeposited) и снимаем галки как показано на скрине:&lt;/p&gt;
  &lt;figure id=&quot;dSna&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/34/20/34206d4a-0fb0-4af4-832d-545427605485.png&quot; width=&quot;1749&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;ZqZy&quot;&gt;Проставляем ссылки в бот&lt;/h3&gt;
  &lt;p id=&quot;OfaY&quot;&gt;Копируем ссылку из кампании, убираем все ненужные метки из ссылки, оставляем только те что действительно нужны (chat_id). Можете конечно и не убирать, но те же макросы от Facebook тут работать не будут (вообще лучше создать отдельный источник в КТ и проставить кастом параметры там).&lt;/p&gt;
  &lt;p id=&quot;HUhQ&quot;&gt;&lt;strong&gt;В метку где будет храниться наш chat_id,  пишем внутренний макрос PuzzleBot в виде&lt;/strong&gt; &lt;code&gt;chat_id={{USER_ID_TEXT}}&lt;/code&gt;: &lt;/p&gt;
  &lt;figure id=&quot;LFds&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/3d/d1/3dd1bc43-7ded-4d7e-bf81-c29bc798c2b1.png&quot; width=&quot;1165&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;quzW&quot;&gt;Поздравляю, с этого момента, любое целевое действие совершенное пользователем на нашей трекинговой ссылке КТ, будет передаваться по API в Puzzle и для пользователя будет запускаться команда указанная в command_name=. &lt;/p&gt;
  &lt;h3 id=&quot;46Su&quot;&gt;&lt;br /&gt;&lt;strong&gt;Подитог&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;s7ar&quot;&gt;С виду все выглядит невероятно сложно, но если разобраться в этом всего лишь один раз - можно будет творить все что придет в голову. &lt;u&gt;Возможности современных сервисов это позволяют&lt;/u&gt;. &lt;/p&gt;
  &lt;p id=&quot;JJMk&quot;&gt;На описанный выше &amp;quot;каркас&amp;quot; можно навешать любой контент. В общем можно все это оформить интуитивно для пользователя и вывести для себя идеальную формулу автобота. Ну а если аудитория безграмотная, можно наполнить бот визуалом, объясняющим как с ним взаимодействовать (прямо показывать что можно тыкать на кнопки в видео). &lt;/p&gt;
  &lt;p id=&quot;CJkk&quot;&gt;В таком сетапе латам у нас шел замечательно, а вот Индия в дикий минус, потому что индусы не очень грамотные и очень ленивые, &lt;u&gt;тупо не хотят разбираться с тем как это работает&lt;/u&gt;. В общем все зависит от гео и от вашего подхода / инструкций в визуале. &lt;/p&gt;
  &lt;h3 id=&quot;FKxT&quot;&gt;&lt;br /&gt;О чем будет следующая статья&lt;/h3&gt;
  &lt;p id=&quot;jSIn&quot;&gt;В след. теме, я разберу возможности пролива на канал и регистрации юзеров через бот, а так же создание персональных ботов для каждого обработчика и снятие 50% существующих головняков у команд. &lt;/p&gt;
  &lt;p id=&quot;H9cJ&quot;&gt;С помощью регистрации юзеров через бота, мне удалось выстроить систему, при которой обработчики могут записывать юзеров пришедших им в личку просто переслав сообщение этого юзера в свой персональный бот (красное выделение). &lt;/p&gt;
  &lt;p id=&quot;16HX&quot;&gt;Так же за счет интеграции персональных ботов с трекером, у обработчика появляется возможность смотреть свою стату с подсчетом их заработка даже не заходя в трекер (синее выделение):&lt;/p&gt;
  &lt;figure id=&quot;XgB6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d6/62/d6624d97-3253-4bd3-8598-a449413b13ad.png&quot; width=&quot;1090&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oZn2&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;vO3l&quot;&gt;Немного о партнерах&lt;/h3&gt;
  &lt;p id=&quot;1KMa&quot;&gt;Моим верным партнером и незаменимым инструментом в работе все так же остается трекер &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro&lt;/a&gt;. Совсем недавно разработчики полностью обновили внутрянку трекера, сделав его еще быстрее и функциональнее. &lt;/p&gt;
  &lt;p id=&quot;l1NF&quot;&gt;Настоятельно рекомендую сделать апдейт и перейти на новую, 10ую версию &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;Keitaro TDS&lt;/a&gt;. Ну а по промокоду &lt;code&gt;adamblog&lt;/code&gt;, вы сможете это сделать с выгодой -20%. Регистрируйтесь &lt;a href=&quot;https://keitaro.io/89119/info&quot; target=&quot;_blank&quot;&gt;https://keitaro.io/89119/info&lt;/a&gt; и переходите на &amp;quot;зеленую&amp;quot; сторону.&lt;/p&gt;
  &lt;figure id=&quot;lOpP&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5e/76/5e760cac-5208-4661-bd2c-af11358c0514.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;

</content></entry><entry><id>adamusfb:AsMzjACY1BM</id><link rel="alternate" type="text/html" href="https://teletype.in/@adamusfb/AsMzjACY1BM?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=adamusfb"></link><title>Универсальный конструктор апи и настройка лендинга за 2 минуты</title><published>2022-11-02T15:28:10.956Z</published><updated>2022-11-02T15:31:53.675Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/c7/ea/c7eadda9-23c6-47fb-a146-7c25eb7888fe.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img4.teletype.in/files/b7/c3/b7c3f547-c80f-4f6a-96fc-598ce9d9f97b.png&quot;&gt;Список ПП доступных для сборки конструткором:
- aff1
- terraleads
- lemonad
- leadtrade
- leadrock
- leadreaktor
- leadbit
- kma
- cpagetti
- adcombo</summary><content type="html">
  &lt;figure id=&quot;4kXB&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b7/c3/b7c3f547-c80f-4f6a-96fc-598ce9d9f97b.png&quot; width=&quot;1343&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;kI6q&quot;&gt;&lt;br /&gt;Конструктор&lt;/h2&gt;
  &lt;p id=&quot;V7HC&quot;&gt;&lt;strong&gt;Список ПП доступных для сборки конструткором:&lt;br /&gt;- &lt;/strong&gt;aff1&lt;br /&gt;- terraleads&lt;br /&gt;- lemonad&lt;br /&gt;- leadtrade&lt;br /&gt;- leadrock&lt;br /&gt;- leadreaktor&lt;br /&gt;- leadbit&lt;br /&gt;- kma&lt;br /&gt;- cpagetti&lt;br /&gt;- adcombo&lt;/p&gt;
  &lt;p id=&quot;QAlg&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;48S2&quot;&gt;&lt;strong&gt;Настройка &lt;/strong&gt;&lt;br /&gt;1. Размещаем папку &lt;strong&gt;thanks &lt;/strong&gt;и &lt;strong&gt;apis &lt;/strong&gt;в &lt;u&gt;корне своего трекера&lt;br /&gt;&lt;/u&gt;2. Заходим в папку apis, находим файлик &lt;code&gt;config.php&lt;/code&gt; и вставляем туда свои API-токены от партнерок (где найти токены в каждой из пп, можно посмотреть там же). &lt;br /&gt;3. Находим в этом же файлике переменную &lt;code&gt;$custom,&lt;/code&gt; в ней прописываем название меток, из которых будут передаваться данные в партнерки. &lt;/p&gt;
  &lt;p id=&quot;ylq7&quot;&gt;&lt;strong&gt;Для ссылки такого вида:&lt;/strong&gt;&lt;code&gt;&lt;br /&gt;&lt;em&gt;https://mydom.com/?buyer=zeliboba&amp;amp;account=bm45&amp;amp;domain=mydom.com&amp;amp;pixel=9999999999999&lt;/em&gt;&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;coOr&quot;&gt;&lt;strong&gt;Переменная&lt;code&gt; $custom&lt;/code&gt; должна иметь след. вид:&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;$custom = [&lt;br /&gt;	&amp;quot;sub_id_1&amp;quot;	=&amp;gt;&amp;quot;buyer&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_2&amp;quot;	=&amp;gt;&amp;quot;account&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_3&amp;quot;	=&amp;gt;&amp;quot;domain&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_4&amp;quot;	=&amp;gt;&amp;quot;pixel&amp;quot;,&lt;br /&gt;	&amp;quot;clickid&amp;quot;	=&amp;gt;&amp;quot;subid&amp;quot;&lt;br /&gt;];&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;wjgZ&quot;&gt;&lt;strong&gt;Если у вас нет меток для передачи в пп, то просто оставим эти поля пустыми:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;qN1y&quot;&gt;&lt;code&gt;$custom = [&lt;br /&gt;	&amp;quot;sub_id_1&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_2&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_3&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_4&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;clickid&amp;quot;	=&amp;gt;&amp;quot;subid&amp;quot;&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Поле &lt;code&gt;clickid&lt;/code&gt; называем так, как у вас в трекере называется макрос для передачи сабайди (нужен для постбэка с пп в трекер). В данном случае это Кейтаро, поэтому оставляем &lt;code&gt;subid&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;0N5A&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;8xrY&quot;&gt;&lt;strong&gt;После настройки имеем пути с которыми мы будем работать: &lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://yourdomain.com/apis/index.php&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/apis/index.php&lt;/a&gt; - тут мы собираем код для интеграции в форму лендинга&lt;/p&gt;
  &lt;figure id=&quot;Xz5I&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/15/b5/15b5dbe5-722d-4436-9c6d-6254fd29e5b2.gif&quot; width=&quot;600&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;iYz6&quot;&gt;&lt;strong&gt;Пример сборки в конструкторе и последующая отправка лида:&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;xRvF&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/ZErC0sFUL_U?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YyQg&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://yourdomain.com/apis/logs/index.php&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/apis/logs/index.php&lt;/a&gt;  - тут мы можем в удобном виде читать логи отправленных заявок за каждый день из каждой пп&lt;/p&gt;
  &lt;figure id=&quot;GDto&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5c/c9/5cc9070e-21b3-48d3-8d8f-a7679d8cbf44.gif&quot; width=&quot;1276&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2nIw&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;LRKH&quot;&gt;&lt;a href=&quot;https://yourdomain.com/thanks/contacts/get.php&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/thanks/contacts/get.php&lt;/a&gt; - здесь мы можем посмотреть собранные данные пользователей в формате name - phone - mail (если скопировать это в таблицу, то все встанет по ячейкам автоматически).&lt;/p&gt;
  &lt;figure id=&quot;00nD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/db/8d/db8d8557-a2a9-4cd7-a2f9-b6ca40060fda.gif&quot; width=&quot;576&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;K5IS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;8pe1&quot;&gt;Страница спасибо&lt;/h2&gt;
  &lt;p id=&quot;xdu4&quot;&gt;Я уже &lt;a href=&quot;https://t.me/adamusfb/256&quot; target=&quot;_blank&quot;&gt;выкладывал у себя на канале эту штуку&lt;/a&gt; и довольно подробно описывал принцип ее работы. Не вижу смысла расписывать заново что куда, поэтому просто скопирую текст сюда:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Логика работы:&lt;/strong&gt;&lt;br /&gt;1) С помощью метки &lt;code&gt;country&lt;/code&gt; передаем в формате &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes&quot; target=&quot;_blank&quot;&gt;iso &lt;/a&gt;страну &lt;code&gt;mydom.com/thanks?country=RU&lt;/code&gt;&lt;br /&gt;2) Если перевод для этой страны имеется — покажет перевод под эту страну&lt;br /&gt;2.1) Если такой страны с переводом нет в &lt;code&gt;source/iso&lt;/code&gt; — покажет страницу спасибо &lt;u&gt;на английском языке&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Возможности&lt;/strong&gt;:&lt;br /&gt;- Содержит в себе практически все языки перевода и автоматически определяет на какой перевод отправить пользователя.&lt;br /&gt;&lt;br /&gt;- Можно вписывать свой js код, который будет подгружаться &lt;u&gt;на всех&lt;/u&gt; переводах страницы спасибо. Делается это по пути: &lt;code&gt;thanks/source/js/script.js&lt;/code&gt;. Внутри этого файла так же присутствует пиксель. Все что вам надо сделать - &lt;u&gt;вписать имя метки&lt;/u&gt; в которой вы его передаете в переменную &lt;code&gt;let pxname = &amp;#x27;pixel&amp;#x27;;&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;- Если пользователь вписывает свой email, его данные попадают в файлик в формате &lt;code&gt;name:phone:email&lt;/code&gt;. Сам файл имеет название по передаваемым на страницу спасибо меткам &lt;code&gt;country_vertical_date.txt&lt;/code&gt;. &lt;br /&gt;&lt;/p&gt;
  &lt;p id=&quot;hRbc&quot;&gt;&lt;br /&gt;&lt;strong&gt;Настройка:&lt;br /&gt;-&lt;/strong&gt; Грузим архив в корень трекера (keitaro/binom) и распаковываем (не в lander / landers а именно в корень сервера).&lt;br /&gt;&lt;br /&gt;- Если вы используете универсальную страницу спасибо вместе с конструктором апи, то &lt;u&gt;больше ничего делать не надо&lt;/u&gt;. Нужно лишь вписать метку в которой передается ваш пиксель в файл &lt;code&gt;thanks/source/js/script.js&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;- Если вы используете свой апи файл для передачи лидов:&lt;/p&gt;
  &lt;ul id=&quot;WKqA&quot;&gt;
    &lt;li id=&quot;P7CE&quot;&gt;Ставим редирект на нашу страницу спасибо в апи файле в таком формате&lt;br /&gt;&lt;code&gt;header(&amp;#x27;Location:&lt;a href=&quot;https://domain.com/thanks/?name=&quot; target=&quot;_blank&quot;&gt;https://domain.com/thanks/?name=&lt;/a&gt;&amp;#x27;.$_POST[&amp;#x27;name&amp;#x27;].&amp;#x27;&amp;amp;phone=&amp;#x27;.$_POST[&amp;#x27;name&amp;#x27;].&amp;#x27;&amp;amp;country=&amp;#x27;.$_POST[&amp;#x27;country&amp;#x27;].&amp;#x27;&amp;amp;vertical=&amp;#x27;.$_POST[&amp;#x27;vertical&amp;#x27;].&amp;#x27;&amp;amp;pixel=&amp;#x27;.$_POST[&amp;#x27;pixel&amp;#x27;].&amp;#x27;);&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;vmnX&quot;&gt;На лендинг ставим импуты для передачи всех данных для корректной работы страницы спасибо:&lt;br /&gt;&lt;code&gt;&amp;lt;input name=&amp;quot;name&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;vasya&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;input name=&amp;quot;phone&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;9999999999&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;input name=&amp;quot;vertical&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;adult&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;input name=&amp;quot;country&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;{country}&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;input name=&amp;quot;vertical&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;{pixel}&amp;quot;&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/li&gt;
  &lt;/ul&gt;

</content></entry><entry><id>adamusfb:1WRtMBon4Kc</id><link rel="alternate" type="text/html" href="https://teletype.in/@adamusfb/1WRtMBon4Kc?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=adamusfb"></link><title>Настраиваем лендинги на COD офферы за 1 минуту</title><published>2022-10-24T13:54:54.739Z</published><updated>2022-10-24T16:04:46.264Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/64/1a/641a2702-3f93-4894-94e1-d198cdcef153.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/5c/c9/5cc9070e-21b3-48d3-8d8f-a7679d8cbf44.gif&quot;&gt;В очередной раз выкладываю то что когда-то писал для себя, но так и не внедрил в оборот (лол). Наверное я один остался из альтруистов кто что-то выкладывает в плане технички, чувствую себя белой вороной. Ну да ладно. 

Не буду долго расписывать, это простой скрипт для быстрой настройки лендингов под COD-товарку. Настраивается 1 раз, а лендингов в последствии настроит сотни и тысячи (если вы этого захотите). Если не понятно что это и зачем, смотрите видео выше ⬆️⬆️⬆️</summary><content type="html">
  &lt;figure id=&quot;8Rza&quot; class=&quot;m_column&quot;&gt;
    &lt;iframe src=&quot;https://www.youtube.com/embed/ZErC0sFUL_U?autoplay=0&amp;loop=0&amp;mute=0&quot;&gt;&lt;/iframe&gt;
    &lt;figcaption&gt;Видеодемонстрация работы&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZSVY&quot;&gt;В очередной раз выкладываю то что когда-то писал для себя, но так и не внедрил в оборот (лол). Наверное я один остался из альтруистов кто что-то выкладывает в плане технички, чувствую себя белой вороной. Ну да ладно. &lt;br /&gt;&lt;br /&gt;Не буду долго расписывать, это простой скрипт для быстрой настройки лендингов под COD-товарку. Настраивается 1 раз, а лендингов в последствии настроит сотни и тысячи (если вы этого захотите). Если не понятно что это и зачем, смотрите видео выше ⬆️⬆️⬆️&lt;/p&gt;
  &lt;p id=&quot;up9Z&quot;&gt;Благодаря этой небольшой системке, не надо подбирать страницу спасибо, тк. она универсальная и к слову говоря &lt;u&gt;умеет собирать контакты людей&lt;/u&gt;, которые оставили свой мэйл на ней. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Список ПП доступных для сборки конструткором:&lt;/strong&gt;&lt;br /&gt;- terraleads&lt;br /&gt;- lemonad&lt;br /&gt;- aff1&lt;br /&gt;- leadtrade&lt;br /&gt;- leadrock&lt;br /&gt;- leadreaktor&lt;br /&gt;- leadbit&lt;br /&gt;- kma&lt;br /&gt;- cpagetti&lt;br /&gt;- adcombo&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Настройка конструктора&lt;/strong&gt;&lt;br /&gt;1. Размещаем папку &lt;strong&gt;thanks &lt;/strong&gt;и &lt;strong&gt;apis &lt;/strong&gt;в &lt;u&gt;корне своего трекера&lt;br /&gt;&lt;/u&gt;2. Заходим в папку apis, находим файлик &lt;code&gt;config.php&lt;/code&gt; и вставляем туда свои API-токены от партнерок (где найти токены в каждой из пп, можно посмотреть там же). &lt;br /&gt;3. Находим в этом же файлике переменную &lt;code&gt;$custom,&lt;/code&gt; в ней прописываем название меток, из которых будут передаваться данные в партнерки. &lt;/p&gt;
  &lt;p id=&quot;sfyl&quot;&gt;&lt;strong&gt;Для ссылки такого вида:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;https://mydom.com/?buyer=zeliboba&amp;amp;account=bm45&amp;amp;domain=mydom.com&amp;amp;pixel=9999999999999&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;5g2T&quot;&gt;&lt;strong&gt;Переменная&lt;code&gt; $custom&lt;/code&gt; должна иметь след. вид:&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;$custom = [&lt;br /&gt;	&amp;quot;sub_id_1&amp;quot;	=&amp;gt;&amp;quot;buyer&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_2&amp;quot;	=&amp;gt;&amp;quot;account&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_3&amp;quot;	=&amp;gt;&amp;quot;domain&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_4&amp;quot;	=&amp;gt;&amp;quot;pixel&amp;quot;,&lt;br /&gt;	&amp;quot;clickid&amp;quot;	=&amp;gt;&amp;quot;subid&amp;quot;&lt;br /&gt;];&lt;/code&gt;&lt;/p&gt;
  &lt;p id=&quot;i5EO&quot;&gt;&lt;strong&gt;Если у вас нет меток для передачи в пп, то просто оставим эти поля пустыми:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Gmp6&quot;&gt;&lt;code&gt;$custom = [&lt;br /&gt;	&amp;quot;sub_id_1&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_2&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_3&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;sub_id_4&amp;quot;	=&amp;gt;&amp;quot;&amp;quot;,&lt;br /&gt;	&amp;quot;clickid&amp;quot;	=&amp;gt;&amp;quot;subid&amp;quot;&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Поле &lt;code&gt;clickid&lt;/code&gt; называем так, как у вас в трекере называется макрос для передачи сабайди (нужен для постбэка с пп в трекер). В данном случае это Кейтаро, поэтому оставляем &lt;code&gt;subid&lt;/code&gt;.&lt;/p&gt;
  &lt;p id=&quot;wCTE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;p6LE&quot;&gt;&lt;strong&gt;После настройки имеем пути с которыми мы будем работать: &lt;/strong&gt;&lt;br /&gt;&lt;a href=&quot;https://yourdomain.com/apis&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/apis/index.php&lt;/a&gt; - тут мы собираем код для интеграции в форму лендинга&lt;br /&gt;&lt;a href=&quot;https://yourdomain.com/apis/logs&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/apis/logs/index.php &lt;/a&gt; - тут мы можем в удобном виде читать логи отправленных заявок за каждый день из каждой пп&lt;/p&gt;
  &lt;figure id=&quot;M5s9&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5c/c9/5cc9070e-21b3-48d3-8d8f-a7679d8cbf44.gif&quot; width=&quot;1276&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Rgm0&quot;&gt;&lt;a href=&quot;https://yourdomain.com/thanks/contacts/get.php&quot; target=&quot;_blank&quot;&gt;https://yourdomain.com/thanks/contacts/get.php&lt;/a&gt; - здесь мы можем посмотреть собранные данные пользователей в формате name - phone - mail (если скопировать это в таблицу, то все встанет по ячейкам автоматически).&lt;/p&gt;
  &lt;figure id=&quot;5tSD&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/db/8d/db8d8557-a2a9-4cd7-a2f9-b6ca40060fda.gif&quot; width=&quot;576&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;jIPs&quot;&gt;О том как работать с конструктором, можно посмотреть в видео &lt;u&gt;в самом начале поста&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Не забудь подписаться - &lt;a href=&quot;https://t.me/adamusfb&quot; target=&quot;_blank&quot;&gt;https://t.me/adamusfb&lt;/a&gt;&lt;/p&gt;

</content></entry></feed>