Skip to content

Automation of the data collection process for marketing analytics

License

Notifications You must be signed in to change notification settings

NPodlozhniy/marketing-pipeline

Repository files navigation

Marketing Pipeline

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

✅ Facebook

✅ TikTok

✅ Snapchat

Оглавление

  1. Коротко о проекте
  2. Как получить все нужные реквизиты для работы
  3. Как запустить проект
  4. Вывод программы
  5. Визуализация работы
  6. Полезные ссылки

Коротко о проекте

Проект направлен на решение реальной бизнес потребности: команда маркетинга любой сколь угодно крупной компании ежедневно сталкивается с проблемой анализа эффективности собственной рекламы. Бесплатных инструментов, позволяющих с легкостью анализировать на ежедневной основе данные о затраченных бюджетах и целевых конверсиях фактически не существует, с некоторыми оговорками можно попробовать использовать бесплатную версию аддона Adveronix для Google Sheets, но из-за функциональной ограниченности бесплатной версии, вы быстро поймете, что настроенный процесс не особо масштабируем, и вам потребуется более гибкий, надежный и безопасный инструмент.

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

Очевидно, что так как проект является b2b решением, нельзя просто скопировать репозиторий к себе. Изначально потребуется поработать с целью получения всех нужных доступов, создать простенькие приложения в каждом из рекламном кабинетов, которые позволят через OAuth 2.0 получить этому программному интерфейсу доступ к вашим данным.

Аналогично придется попотеть и с настройкой сервисных аккаунтов Google для создания возможно программно общаться с API Google Sheets и Google Analytics

⬆️Оглавление


Как получить все нужные реквизиты для работы

Facebook

Первое, что необходимо сделать для работы с Facebook API подтвердить аккаунт на Facebook. Когда это сделано, то у вас готов аккаунт разработчика и можно двигаться дальше — создать приложение. Для этого заходим в Консоль разработчика Facebook Далее — «My Apps» — «Create App». Заполняем название приложения, контактный Email и жмём на «Create App ID»

Когда facebook раздуплится одобрит ваше приложение, вы сможете найти его там же, и рп клике на него перед вами откроется Dashboard приложения. Переходим в «Settings» — «Basic» и записываем себе App ID и App Secret. Эти данные понадобятся для авторизации.

Теперь переходим в «Tools» — «Graph API Explorer» и оказываемся в меню для создания нового access token. Токены выдаются под разные нужды, и нам нужно задать определенные права для нашего. Нам потребуется два ads_management и ads_read — что позволяет каждый из них можно прочитать по ссылкам. Добавляем их и нажимаем на «Generate Access Token».

Рекомендую сразу нажать на голубой значок ℹ️ рядом с токеном, и проследовать по маршруту «Open in Access Token Tool» — «Renew access token» Чтобы продлить токен, в противном случае он будет недействителен через несколько часов. Сохраняем Access Token и вписываем все сохраненные значения в соответствующие места, обозначенные как <YOUR ...> программы /scripts/AdsFacebook.py и двигаемся дальше. Здесь самое сложное - ждать одобрения от Facebook, которое может произойти не очень быстро.

TikTok

Здесь в целом похоже на Facebook, но есть свои тонкости, аналогично нужно иметь аккаунт (не путать с аккаунтом TikTok - его можно не иметь), внезапно авторизованный в требуемом рекламном аккаунте. Далее переходим на сайт TikTok Marketing API и нажимаем «Become a Developer».

Понеслась! Аккуратно, как и прежде, заполняем все формы, процесс создания аккаунта разработчика и приложения происходит совместно. Обратите внимание на поле callback-address, туда требуется вписать адрес сайта вашей компании, к которому у вас есть доступ, это важно.

После одобрения приложения оно появится в списке под кнопкой «My Apps». Переходим в приложение и сохраняем App ID и Secret. После этого надо перейти по ссылке «Advertiser authorization URL», авторизоваться с упомянутым выше аккаунтом, согласится на предоставление разрешений для приложения, подтвердить кнопкой «Confirm» Произойдет редирект на сайт, указанный в callback-address при создании приложения, обратите внимание на URL, там будет лежать заветный auth_code - сохраните его.

Теперь вы готовы получить токен длительно доступа, для этого можно воспользоваться методом get_tiktok_access_token реализованным в /scripts/AdsTikTok.py, а можно сделать curl запрос:

curl -H "Content-Type:application/json" -X POST \
-d '{
    "secret": "SECRET", 
    "app_id": "APP_ID", 
    "auth_code": "AUTH_CODE"
}' \
https://ads.tiktok.com/open_api/v1.2/oauth2/access_token

Из полученного ответа сохраняем access_token , вписываем его вместо <YOUR ACCESS TOKEN> в программе /scripts/AdsTikTok.py и идем разбираться со следующей платформой.

Snapchat

Самый дружелюбный в настройке из всех рекламный кабинетов был оставлен "на сладкое". Здесь от вас потребуется минимум действий. Для начала уже привычно идем на соответствующий сайт Snap Business Manager и переходим в раздел «Business Details» Есть документация о коротких дальнейших действиях, главное - сохранить Secret а также Snap Client ID и Snap Redirect URI, но если последние два можно будет посмотреть на том же сайте после успешного создания приложение, то Secret вы больше нигде не найдете, убедитесь, что сохранили его. Кроме того вам понадобится сохранить Organization ID он виден все в том же разделе «Business Details». Впишите полученные четыре значения в соответствующие места, обозначенные как <YOUR ...> программы /scripts/AdsSnapchat.py.
Вы там увидите также поле ad_account_id, его трогать не надо. А вот поле refresh_token заполнить надо обязательно, посредством выполнения метода get_snapchat_refresh_token, там потребуются уже записанные вами значения, следуйте указаниям и впишите полученное значение вместо <YOUR REFRESH TOKEN>

Google

История о взаимодействии с Google проще, здесь не потребуется никаких приложений и потому нет как таковой OAuth авторизации в отличие от подключения к рекламным кабинетам. Требуется создать просто два сервисных аккаунта (можно и один), посредством которых будет осуществляться сервер-серверное взаимодействие и аутентификация в сервисах Google на программном уровне, используя доступы созданных роботов.

Google Sheets

Здесь необходимо следовать довольно понятному и простому алгоритму:

  1. заходим в Google Developers Console и создаем новый проект по кнопке «Create Project»
  2. Посредством меню в левой части экрана переходим в раздел «APIs & Services» — «Library», находим «Drive API» переходим и жмем «Enable»
  3. Аналогично предыдущему пункту включаем «Sheets API»
  4. Переходим теперь в раздел «APIs & Services» — «Credentials» и выбираем «Create credentials» — «Service account key»
  5. Заполняем форму и подтверждаем посредством кнопки «Create key»
  6. Выбираем из двух вариантов «JSON» и жмем «Create»
  7. Скачанный файл переименовываем в transferbot.json и заменяем в корне этого проекта
  8. Создаем новый Google Sheet, в который будет записываться все собранные данные по рекламе, и в доступах добавляем права редактора для client_email из скачанного файла
  9. Копируем из этого Google Sheet spreadsheet_key, он хранится в URL https://docs.google.com/spreadsheets/d/<spreadsheet_key>/edit#gid=...
  10. Скопированный на предыдущем шаге spreadsheet_key вписываем вместо <YOUR SPREADSHEET KEY> в программе /scripts/Marketing.py

Google Analytics

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

... 7. Скачанный файл переименовываем в gadatabot.json и заменяем в корне этого проекта 8. client_email из скачанного файла вписываем в программе вместо <YOUR CLIENT EMAIL> 9. На сайте Google Analytics в разделе «Admin» - «View» копируем View ID 10. Скопированный на предыдущем шаге View ID вписываем вместо <YOUR VIEW ID> в программе /scripts/GoogleAnalytics.py

Tableau

В программе /scripts/Marketing.py реализовано обновление ноутбука в Tableau. Это имеет смысл для вас, если у вас есть сервер Tableau Server или Tableau Online на котором вы построили некоторую визуализацию, которую хотите обновлять по мере поступления новых данных. Если так, то заполните переменные <YOUR ...> со своими данными авторизации Tableau, введите домен и название вашего сайта, а также название ноутбука, который требуется обновлять.

⬆️Оглавление


Как запустить проект

Ура! Вы готовы запрашивать данные из всех рекламных кабинетов. Складываются они по умолчанию в базу данных, права к которой хранятся в переменных окружения. Итак, в зависимости от вашей операционной системы у вас есть разные возможности.

Linux

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

Запуск в терминале

export DB_HOST=<YOUR DATABASE>
export DB_USER=<YOUR USERNAME>
export DB_PWD=<YOUR PASSWORD>
RUN chmod a+x run.sh
./run.sh

Запуск через контейнер

Нужно заполнить поля <YOUR DATABASE>, <YOUR USERNAME> и <YOUR PASSWORD> в файле Dockerfile После этого можно строить контейнер (единожды):

docker build -t <your docker nickname>/<image name> .

И запускать его:

docker run -p 8888:5000 <your docker nickname>/<image name>

Также для постановки кода на расписание можно положить вышеуказанную команду в файл refresher.sh. Потом выполнить:

chmod a+x refresher.sh

Убедиться, что файл стал исполняемым можно с помощи команды:

ls -lah

Потом выполнить команду и вписать а открывшийся файл строку из cron.yaml:

crontab -e

Убедится, что строка добавлена можно с помощью команды:

crontab -l

Windows

Контейнер под Windows можно адаптировать самостоятельно, приведен способ запуска только через командную строку:

set DB_HOST=<YOUR DATABASE>
set DB_USER=<YOUR USERNAME>
set DB_PWD=<YOUR PASSWORD>
.\run.bat

⬆️Оглавление


Вывод программы

Вывод для каждой из операционных систем практически не отличается, для примера вот вывод в терминале Linux:

Marketing dashboard refreshing ...
Data upload success!
Getting Snapchat API access token...
Getting all accounts...
Getting all campaigns from Snapchat API...
Getting stats by each campaign from Snapchat API...
Getting stats by each campaign from Snapchat API...
Data upload success!
Data upload success!
Job 1 completed
Job 2 completed
Job 3 completed
Job 4 completed
Job 5 completed
Job 6 completed
Job 7 completed
Job 8 completed
Data upload success!
Data upload success!
Tableau workbook Marketing refreshed at 01/13/2022 06:17:15
Check /root/journal.log for more details.

⬆️Оглавление


Визуализация работы

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

По всем каналам

По каждому в отдельности

⬆️Оглавление


Полезные ссылки

  1. Facebook Graph API Explorer
  2. TikTok Marketing Api Docs
  3. Snapchat Marketing Api Docs
  4. Google Analytics Api with Python
  5. Connecting Tableau to Google Sheets
  6. Habr Docker Tutorial
  7. Habr TikTok Data Mining
  8. About Adveronix

⬆️Оглавление