Статьи

Автоматизуємо ремаркетинг ВКонтакте за допомогою R і Google Tag Manager

  1. 1. Авторізіруем додаток ВКонтакте
  2. 2. Отримуємо список всіх квестів
  3. 3. Створюємо списки ремаркетингу через API
  4. 4. Генеруємо спеціальний json-файл формату «змінна lookup table»
  5. 5. Налаштовуємо Google Tag Manager
  6. висновки

ВКонтакте, на відміну від Facebook, не надає можливість динамічного ремаркетингу, що дозволяє підставляти дані про товар в оголошення і показувати користувачам тільки ті товари, якими вони цікавилися. Звичайно, цей прикрий факт не раз засмучував творців кампаній в ВК. Але в новому гостьовому пості веб-аналітик Микола Глушков описав простий спосіб створення десятків, а то і сотень списків ремаркетингу в ВКонтакте за допомогою мови R і Google Tag Manager.

Сенс даної статті - показати, як без залучення вашого IT-відділу за допомогою нехитрих прийомів можна автоматизувати необхідні процеси маркетингу. Візьмемо як приклад сайт norakrolika.ru - це мережа квестів, представлена ​​в декількох містах Росії. Сторінкою товару у нас в даному випадку буде сторінка квесту.

У статті не буде розказано, як встановити R, Google Tag Manager і почати працювати з цими інструментами .

Ви можете самостійно освоїти ці матеріали в пості «Як оцінити втрачений дохід в Google Ads за допомогою мови R» .

Переходимо до самого алгоритму.

1. Авторізіруем додаток ВКонтакте

1.1. переходимо за посиланням .

1.2. Реєструємо Standalone-додаток.

1.3. Переходимо в налаштування - знадобиться id-додатки.

1.4. Далі ми повинні отримати токен для доступу до API. Переходимо за посиланням:

https://oauth.vk.com/authorize?client_id={id вашого застосування} & redirect_uri = http: //oauth.vk.com/blank.html& display = popup & scope = ads & response_type = token

1.5. Вас перекине на сторінку:

https://oauth.vk.com/blank.html#access_token=xxxx&expires_in=86400&user_id=xxx

де значення access_token - ваш ключ доступу до API. Запам'ятайте його. Якщо з'явилася помилка:

{ "Error": "invalid_request", "error_description": "Security Error"}

просто перезайдіть в ВК.

2. Отримуємо список всіх квестів

На цьому етапі нам потрібно отримати таблицю з квестами з двох полів:

  • id квесту;
  • назва квесту.

Це можна зробити різними способами: вивантажити з Google Analytics в форматі csv або вивантажити з бази даних.

Я отримаю список товарів, використовуючи API Google Analytics (для цього на сайті повинен стояти модуль розширеної електронної торгівлі ).

2.1. Відкриваємо RStudio і створюємо новий файл типу R Script.

2.2. Встановлюємо всі необхідні бібліотеки:

install.packages ( "httr") install.packages ( "stringr") install.packages (RJSONIO) install.packages (RGA)

підключаємо:

library ( "httr") # Для роботи з http-запитами library ( "stringr") # для роботи з рядками library ( "RJSONIO") # для роботи з json library ( "RGA") # для роботи з API Google Analytics

Отримуємо токен для доступу в Google Analytics:

# Авторізіруемся в Google ga_token <- authorize (client.id = "xxxx", client.secret = "yyyyy") list_product <- get_ga (profileId = "xxxx", #id уявлення Google Analytics (знайти його можна в налаштуваннях уявлення) start .date = "2016-07-01", # дата початку вивантаження end.date = "2016-07-01", # дата кінця вивантаження dimensions = "ga: productSku, ga: productName", # список параметрів metrics = "ga : productDetailViews ") # список метрик

Так ми отримаємо dataFrame зі списком квестів і наступними полями:

  • list_product $ productSku - id квесту;
  • list_product $ productName - назва квесту;
  • list_product $ productDetailViews - кількість переглядів картки квесту.

Аналогічним чином ми можемо отримати такий же dataFrame, завантаживши csv-файл через функцію read.csv:

list_product = read.csv ( "шлях до файлу", header = TRUE)

3. Створюємо списки ремаркетингу через API

Отже, у нас є список всіх товарів. Тепер треба для кожного товару створити список ретаргетінга і отримати його код.

Кожен такий код має однакову структуру і повертається у відповіді при зверненні до API.

Структура коду:

<Script type = "text / javascript"> // <! [CDATA [(window.Image? (New Image ()): document.createElement ( 'img')). Src = location.protocol + '// vk. com / rtrg? r = {pixel_id} '; //]]> </ script>

Змінюється тільки pixel_id, тобто по суті нам потрібні id квесту і id пікселя, прив'язаного до конкретного квесту.

Отримуємо наступний код:

# Створюємо порожній список для подальшого генерування json-файлу array_list <- vector (mode = "list") # запускаємо цикл n-раз, де n- кількість квестів for (i in 1: nrow (list_product)) {# для кожного квесту робимо POST-запит до методу ads.createTargetGroup # який створює список ремаркетингу pixel_resp <-content (POST ( "https://api.vk.com/method/ads.createTargetGroup", body = list (account_id = xxxx, #id вашого рекламного кабінету name = list_product $ productName [i], # назва списку ретаргетінга domain = "norakrolika.ru", # домен сайту lifetime = 15, # час життя списку access_token = "xxx" # токен доступу, отримали на предидуoем кроці))) # використовуємо регулярні вирази, витягуємо id пікселя r tg_id <-str_match (pixel_resp $ response $ pixel, "(? <= r \ =) [^ '] +") [, 1] #arr - масив, необхідний для генерування json-контейнера, докладно на наступному кроці arr <- vector (mode = "list") arr [[1]] <- list ( "type" = "TEMPLATE", "key" = "key", "value" = list_product $ productSku [i]) arr [[2] ] <- list ( "type" = "TEMPLATE", "key" = "value", "value" = rtg_id) array_list [[i]] <- list ( "type" = "MAP", "map" = arr ) # ставимо затримку 1 секунду Sys.sleep (1)}

Що ми зробили:

  • Створена порожній масив array_list, з якого буде генеруватися json (детально про це на наступному кроці);
  • в циклі пробіглися по кожному квсесту і зробили списки ретаргетінга;
  • створили ще один масив і занесли в нього інформацію id квесту і id пікселя.

4. Генеруємо спеціальний json-файл формату «змінна lookup table»

На цьому кроці ми повинні отримати валідний json-файл, який буде містити змінну типу «таблиця пошуку» і приймати вхідні змінну id товару, а також, в разі знаходження, на вихід віддавати id пікселя.

На попередньому етапі ми створили порожній масив:

array_list <- vector (mode = "list")

і заповнили його наступною інформацією:

arr [[1]] <- list ( "type" = "TEMPLATE", "key" = "key", "value" = list_product $ productSku [i] #id квесту) arr [[2]] <- list ( "type" = "TEMPLATE", "key" = "value", "value" = rtg_id #id пікселя) array_list [[i]] <- list ( "type" = "MAP", "map" = arr)

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

# Порожній масив зі списком gtm-змінних array_var <-vector (mode = "list") # порожній масив зі списком налаштувань змінної array_parameter <-vector (mode = "list") array_parameter [[1]] <- list ( "type" = "BOOLEAN", "key" = "setDefaultValue", "value" = "false") array_parameter [[2]] <- list ( "type" = "TEMPLATE", "key" = "input", "value" = "{{product id}}" # то, що таблиця пошуку буде приймати на вхід, в даному випадку id квесту) array_parameter [[3]] <- list ( "type" = "LIST", "key" = "map "," list "= array_list # список з усіма id квестів і id пікселів) array_var [[1]] <- list (" accountId "=" xxx ", #id аккауна GTM" containerId "=" xxx ", #id контейнера GTM "variableId" = "1", "name" = "lookup table", # назва gtm-змінної "type" = "smm", "parameter" = array_parameter) # кінцевий список lookup_json = list ( "exportFo rmatVersion "= 1.3," containerVersion "= list (" variable "= array_var)) # перетворюємо список в json-рядок exportJson <- toJSON (lookup_json) # зберігаємо всі в вигляді json-файлу write (exportJson," lookup_json.json ")

До речі, id аккаунта і id контейнера можна отримати з url в GTM:

В результаті у нас повинен вийти такий файл:

{ "ExportFormatVersion": 1.3, "containerVersion": { "variable": [{ "accountId": "xxxx", "containerId": "xxxxx", "variableId": "1", "name": "lookup table" , "type": "smm", "parameter": [{ "type": "BOOLEAN", "key": "setDefaultValue", "value": "false"}, { "type": "TEMPLATE", " key ":" input "," value ":" {{product id}} "}, {" type ":" LIST "," key ":" map "," list ": [{" type ":" MAP "," map ": [{" type ":" TEMPLATE "," key ":" key "," value ":" 1408 "}, {" type ":" TEMPLATE "," key ":" value ", "value": "xxxxxxxx"}]}, { "type": "MAP", "map": [{ "type": "TEMPLATE", "key": "key", "value": "alkhimiya"} , { "type": "TEMPLATE", "key": "value", "value": "xxxx"}]}

5. Налаштовуємо Google Tag Manager

Тепер треба імпортувати json в GTM і створити один тег ремаркетингу.

5.1. Заходимо в розділ імпорту контейнера. 5.2. Завантажуємо туди наш json-файл.

У нас повинна створитися gtm-змінна «lookup table». 5.3 Створюємо тег ретаргетінга ВК. Умови активації в даному випадку - перегляд картки товару. Готово! У підсумку повинні вийти списки для всіх товарів, які заповняться користувачами, які переглянули ці товари. Аналогічно можна налаштувати списки на тих, хто скоїв якусь дію на сторінці товару, наприклад, подивився відгуки або фотографії.

висновки

Так, за допомогою базових навичок програмування можна автоматизувати рутинну роботу без допомоги дорогих фахівців. Весь алгоритм можна розбити на кілька кроків:

  1. Авторізіруем додаток ВКонтакте.
  2. Отримуємо статистику по товарах.
  3. Для кожного товару створюємо список ремаркетингу через API.
  4. Генеруємо спеціальний json-файл формату «Мінлива lookup table».
  5. Налаштовуємо Google Tag Manager.

Впровадження алгоритму займає 15 хвилин. Спробуйте самі і переконайтеся.

Думка авторів гостьового поста може не збігатися з позицією редакції і фахівців агентства Netpeak.

Com/authorize?
Image?
Com / rtrg?

Новости