Арбитраж трафика
October 3, 2021

POSTBACK GT: получай максимум информации в телеграм

@traffempire

Большинство из нас пользуется постбеком из партнерки в Телеграм. Удобно, что скрывать. Постоянно видишь результаты своей работы, свой профит. Для многих людей мониторинг статистики становится настоящей зависимостью.

По сети давно гуляет способ сделать постбек в бота и он отлично работает, но передаваемых данных исключительно мало, обрабатывать их невозможно, получать дополнитеьную инфу тоже нельзя. А ведь при должном знании, можно устроить себе настоящую систему контроля и статистики прямо внутри телеги! Бесплатно и без СМС!

Это первая статья из серии "Автоматизация для арбитражника с помощью Гугл Таблиц".

Вот так примерно это будет выглядеть. На скриншоте моя телега:

Бот отправляет данные:

  • Номер оффера в Трафорс
  • ISO Гео
  • Топ страна за день
  • Топ Оффер за день
  • Заработано с момента запуска бота
  • Заработок за неделю
  • Дейли
  • До заветной мечты осталось.

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

Давайте приступим.

Настройка Postback

  • Затраты: 0$
  • Требования: google-аккаунт, telegram, рега в пп
  • Сложность: 3 из 5


Давайте я сначала расскажу, как все работает, а в конце оставлю 📩 ссылку на таблицу из статьи.

Да, все верно. Мы будем использовать Гугл таблицы - отличный и простой инструмент в умелых руках. В них есть все, что необходимо для арбитражника и даже больше. При должном подходе можно хоть трекер свой собрать.

⚠️ Для начала, проведем все подготовительные работы:

Создадим бота в телеграм, как описано, например в этой статье с (1 по 3 пункт обязательно). Мы должны получить:

API-Ключ вашего телеграм бота

Ваш Chat-ID

Без этих данных читать ниже не имеет смысла.

Вооружившись, переходим в Гугл таблицы:

Берем новую таблицу, называем ее "bot". Нам нужно два листа. Переименовываем первый лист в "🤖 Bot" , второй лист создаем и называем "log".

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

Я тут немножко покреативил, и заполнил первый лист вот так:

У вас скорее всего будет все проще. Ну, либо сохраните себе мою табличку, ссылки будут внизу.

Далее перейдем в скрипты наших таблиц, создадим основную "рыбу" для работы с телегой, настроим прием данных из партнерки и выборку данных. Но сначала сохраним себе ID нашей таблицы. В адресной строке браузера он будет выглядеть так:

https://docs.google.com/spreadsheets/d/{ВАШ ID}/edit#gid=0

Этот ID тоже важен и будет использоваться в наших настройках.

Далее открываем Редактор скриптов:

и попадаем в окно, в котором всё удаляем.

Ниже я приведу код моего скрипта. Я ни разу не программист, уверен, что все можно решить более красиво, но имеем что имеем:

Сразу заполняем наши данные в шапке скрипта. Вписываем свои токены и вставляем в наше окно скрипта. URL приложения пока не заполняем, его мы получим ниже.

Пробежимся по функциям

Создает хук в Телегу

function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);
}

Пишем наши входящие данные из постбека партнерки в лог-лист. В качестве параметров выступают ключи: sum, country, dev, city и off.

https://script.google.com/macros/s/AKfycbxJhNCiugOiTmn1BHH6moxvNYJUS-tSpIvJZjQYo8njJh6gRnqeMs7_AOar1v98q5ps/exec?sum={sum}&country={geo}&dev={os}&city={city}&off={offerid}

Эта та самая ссылка, которую вы будете указывать в глобальном постбеке вашей партнерки. Макросы и ключи смотрите в личном кабинете, или уточняйте у менеджера. Вот так они выглядят на примере Трафорс:

Если хотите принимать дополнительные, или свои - меняйте.

function writeToGoogleSpreadsheet(params) {  
  var spreadsheet = SpreadsheetApp.openById(idTable);
  var sheetData = spreadsheet.getSheetByName('log');
      sheetData.appendRow([    params.sum, params.country, params.dev, params.city, params.off  ]);
}

Функция отправки сообщений в Телегу. В качестве параметров выступает текст и разметка. Мы можем использовать либо HTML, либо Markdown. Во втором случае, разметку в скрипте нужно тоже делать маркдаун, у нас первый случай описан.

function sendMessage(text, parse_mode) {
  var url = telegramUrl + "/sendMessage?chat_id=" + tgID + "&text=" + encodeURIComponent(text) + "&parse_mode=" 
  + parse_mode + '&disable_web_page_preview=True';
  var response = UrlFetchApp.fetch(url);
}

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

function doGet(e) {
  writeToGoogleSpreadsheet(e.parameter);
  const income = SpreadsheetApp.openById(idTable);
  const sheet = income.getSheetByName('🤖 Bot');
  const logsheet = income.getSheetByName('log');

  const top = sheet.getRange('D8').getValue(); //Тянем из листа Bot значения D8
  const kopilka = Number(sheet.getRange('D12').getValue()); // то же самое из D12. Делаем его числом.
  const kopilkaName = sheet.getRange('D13').getValue(); // далее также
  const topGeo = sheet.getRange('D16').getValue();
  const topOffer = sheet.getRange('D18').getValue();
  const sumAll = Number(sheet.getRange('D20').getValue());
  const sumWeek = Number(sheet.getRange('D21').getValue());
  const sumDay = Number(sheet.getRange('D22').getValue());

  const convSum = sheet.getRange('D6').getValue();
  const convGeo = sheet.getRange('D7').getValue();
  const convDev = sheet.getRange('D8').getValue();
  const convCity = sheet.getRange('D9').getValue();
  const convOff = sheet.getRange('D10').getValue();
  
// разметка сообщения. Не забывайте символы окончания строк

  var pbMessage= '<b>🤑 [' + convOff + '] ' + convGeo + ' ❱❱❱❱❱ ' + convSum + 'lt;/b>\n'
  + '------------------------------\n'
  + '🏆 ТОP Страна: ....... \t\t' + topGeo + '\n'
  + '      ТOP Оффер: ....... \t\t# ' + topOffer + '\n'
  + '      \n'
  + '💰 ТОТАЛ ................. \t\t$ ' + sumAll +'\n'
  + '      Неделя ................ \t\t$ ' + sumWeek + '\n'
  + '      Дейли .................. \t\t$ ' + sumDay + '\n'
  + '      \n'
  + '✨ До ' + kopilkaName + ': $ ' + kopilka + '\n\n'

  sendMessage(pbMessage, 'HTML'); \\отсылаем сообщение. Не забываем указывать разметку
}

Функция суточного сохранения и обнуления данных. Выставляется по таймеру(см ниже) на "раз в сутки" и очищает логи, подбивает суммы. В ячейках 20 и 21 сохраняются ИТОГО и "за неделю", обратите внимание, через добавление данных в ячейки в виде формул. По сути, раз в сутки берутся данные из ячейки и суммируются со значениями "за сегодня", а потом перезаписываются, сохраняясь таким образом. Везде стоит округление до 4 знаков.

function saveData() {
      const income = SpreadsheetApp.openById(idTable);
      const sheet = income.getSheetByName('🤖 Bot');
      const value = sheet.getRange('D20').getValue();
      const daily = sheet.getRange('D21').getValue();

      income.getSheetByName('🤖 Bot').getRange('D20').setValue("=ROUND(SUM("+value+",D22),4)")
      income.getSheetByName('🤖 Bot').getRange('D21').setValue("=ROUND(SUM("+daily+",D22),4)")

      var sheetActive = SpreadsheetApp.openById(idTable).getSheetByName("log");
      sheetActive.getRange('A:Y').clearContent();
}

Функция еженедельного обнуления и сохранения. Выставляется по таймеру (см ниже) на "раз в неделю" и сбрасывает недельную статистику.

function clearWeek() {
      const income = SpreadsheetApp.openById(idTable);
      const sheet = income.getSheetByName('🤖 Bot');

      income.getSheetByName('🤖 Bot').getRange('D21').setValue("=ROUND(SUM(0,D22),4)")

}

Не скриптом единым.

Кроме скрипта есть и обратная сторона медали - формулы. Давайте глянем, что у нас есть. Я очистил оформление, чтобы можно было увидеть наглядно:

Скопировал вам их в тексте, для удобства:

=LOOKUP(1, ARRAYFORMULA(1/(log!A:A<>"")),log!A1:A)
=LOOKUP(1, ARRAYFORMULA(1/(log!A:A<>"")),log!B1:B)
=LOOKUP(1, ARRAYFORMULA(1/(log!A:A<>"")),log!C1:C)
=LOOKUP(1, ARRAYFORMULA(1/(log!A:A<>"")),log!D1:D)
=LOOKUP(1, ARRAYFORMULA(1/(log!A:A<>"")),log!E1:E)

=ROUND(MINUS(D14,D20),0)

=ARRAYFORMULA(INDEX(log!B1:B,MATCH(MAX(COUNTIF(log!B1:B,log!B1:B)),COUNTIF(log!B1:B,log!B1:B),0)))
=ARRAYFORMULA(INDEX(log!E1:E,MATCH(MAX(COUNTIF(log!E1:E,log!E1:E)),COUNTIF(log!E1:E,log!E1:E),0)))

=ROUND(SUM(0,D22),4)
=ROUND(SUM(0,D22),4)
=ROUND(SUM(log!A1:A),2)

Первые пять формул делают поиск последней строки со значением стоимости конверсии в листе log и выводят соответствующее этой строке значение страны, оффера, устройства и т.д.

Далее идет округленная сумма, оставшаяся до вашей мечты.

Следом, две формулы, вычисляющие самое популярное гео и оффер. Они берут данные из листа log, производят поиск самых частых значений в указанном столбце и выводят самое популярное.

Три последние суммы - это вычисление дневного, недельного и общего показателей. Реализовано все через сложение "дейли" с ячейками. По срабатыванию функции saveData они по таймеру суммируются и перезаписываются. Округлено до 4 знаков. Дейли вычисляется путем сложения всех значений в столбце с суммой на листе log.

Обратите внимание: на всех ячейках с цифровыми значениями стоит форматирование "Число"

Кроме того, обязательно переключите региональные настройки таблицы в "Соединенные Штаты". Это нужно для того, чтобы правильно суммировались входящие цифры у которых точка - разделитель.

Перейдем в "Файл - Настройки таблицы"

Также разрешим циклические вычисления:

Теперь давайте настроим дневной и недельный скрипты

В окне скриптов нажмите на часы слева и выберите "Добавление триггера"

Выставьте настройки как на скрине. Для функции saveData это будет запуск раз в день с 0 до часу ночи.

Для функции clearWeek это будет запуск раз в неделю в понедельник с 0 до часу ночи.

Разворачиваем

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

⚠️ ВНИМАНИЕ. Если что-либо меняете в коде скрипта, то операцию развертывания надо проводить при каждом изменении! Количество развертываний велико, но ограничено. Если при развертывании все висит и не работает - создайте копию проекта и работайте дальше.

Развернем наш скрипт как веб-приложение.

Далее мы выбираем "веб приложение". В открывшемся окне настроек выбираем "У кого есть доступ – Все"

Нажимаем "Начать развертывание. У нас запросят доступ к приложению. Нужно выдать.

Вас перебросит на верификацию, надо выбрать как на скрине. Это не опасно.

Далее вы должны предоставить права и если все верно, нас перекинет на окно приложения, где будет доступен нужный нам URL.

Копируем URL и вставляем в наш скрипт. Выбираем setWebhook и жмем "Выполнить".

Я бы рекомендовал повторить операцию с развертыванием дважды от начала и до конца. Не всегда с первого раза срабатывает.

Скрипт опубликован, нам выдан адрес для использования в глобальном постбеке ПП. Давайте еще раз на него взглянем:

https://script.google.com/macros/s/AKfocbxXhNCiugOiTmn1BHH6moxvNYJUS-tSpIvPZjQYq8njJh6gRvqeMs7_AOar1v98Q5ps/exec

Это первая часть ссылки, которую мы будем вставлять. Вторая часть - это:

?sum={sum}&country={geo}&dev={os}&city={city}&off={offerid}

В примере стоят макросы Трафорса, напоминаю. В итоге финальная, ссылка для постбека будет выглядеть примерно так:

https://script.google.com/macros/s/AKfocbxXhNCiugOiTxn1BHH6moxvNXzUS-tSpIvPZjQYo8njJh6gRvqeMs7_AOar1v98Q5ps/exec?sum={sum}&country={geo}&dev={os}&city={city}&off={offerid}

Ставим ее в личном кабинете партнерки.

Проверяем

У нас уже все работает. Как проверить? Перейти по ссылке постбека, подставив в нее тестовые значения из головы. Например:

https://script.google.com/macros/s/AKfocbxXhNCiugOiTmn1BHH6moxvNYJUS-tSpIvPZjQYo8njJh6gRzqeMa7_AOar1v98Q5ps/exec?sum=9.99&country=RU&dev=WIN&city=Moscow&off=222

Если все сделали правильно и все запустилось верно, то вы получите постбек в телеграм-бота. Мы справились, удачного профита!

✅ Для тех, кто не справился

📩 Вот пример той таблицы, о которой идет речь в статье. Можете скопировать ее себе, поставить свои ID и API и пользоваться (не забудьте сделать разворачивание), подогнав вывод в телеграм под себя, так-как на разных девайсах картинка будет отличаться в пробелах, символах, эмодзи и т.д. Играйтесь как нравится.

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

Команда TraffEmpire и лично AksHolt. Всем добра и профита!

🚀 Топовые темы на нашем канале:

🔹 Нестандартные подходы в креативах на дейтинг

🔹 Выжимка по Нигерии, для тех, кто ищет подходы

🔹 ПАК ФОТО. 100 фотографий для крео с иконками под пуши

🔹 Текст в креативах. Используем сленг

🔹 PUSH.ADNOW. Странная сетка, которая работает

- – ——— { ♛ } ——— - -

Подписывайся на наш канал и добавляй его в закреп,

если не хочешь отстать от индустрии.

- – ——— { ♛ } ——— - -

Если вам интересен арбитраж, но вы опасаетесь стартовать в одиночку, или считаете, что ваш опыт недостаточен для уверенного заработка – самым верным путем будет вступить в нашу команду.

🧨 Предлагаем отличные условия!

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

💰 Что вы получаете:

🔹 Топовые связки на самых профитных гео

🔹 Стабильный заработок и спокойная работа

🔹 Гарантированные высокие выплаты

🔹 Общий баланс для залива

🔹 Полностью отлаженная инфраструктура

🔹 Плюшки, бонусы и инсайды

🔹 Опытные кураторы и наставники

Если наше предложение вас заинтересовало, пишите @aksholt, проходите простое собеседование и вступайте в наши ряды. Мы рады всем, и опытным ребятам и тем, кто только начинает познавать азы арбитража.

Давайте работать и зарабатывать вместе!

Все статьи авторские и основаны на личном опыте.

По всем вопросам можете писать @aksholt.

Traff Empire © 2021 год