Промо

Автоматизируем ремаркетинг ВКонтакте с помощью R и Google Tag Manager

ВКонтакте, в отличие от Facebook, не предоставляет возможность динамического ремаркетинга, позволяющего подставлять данные о товаре в объявление и показывать пользователям только те товары, которыми они интересовались. Конечно, этот обидный факт не раз огорчал создателей кампаний в ВК. Но в новом гостевом посте веб-аналитик Николай Глушков описал простой способ создания десятков, а то и сотен списков ремаркетинга в ВКонтакте с помощью языка R и Google Tag Manager.

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

Страницей товара у нас в данном случае будет страница квеста

В статье не будет рассказано, как установить R, Google Tag Manager и начать работать с этими инструментами.

Вы можете самостоятельно освоить эти материалы в посте «Как оценить потерянный доход в Google Ads с помощью языка R».

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

1. Авторизируем приложение ВКонтакте

1.1. Переходим по ссылке.

1.2. Регистрируем Standalone-приложение.

1.3. Переходим в настройки — понадобится id-приложения. Переходим в настройки, нам понадобится 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") #для работы с jsonlibrary("RGA") #для работы с API Google Analytics

Получаем токен для доступа в Google Analytics:

#авторизируемся в Googlega_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 пикселя  rtg_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)}

Что мы сделали:

  • cоздали пустой массив 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(  "exportFormatVersion" = 1.3,  "containerVersion" =list( "variable" = array_var  ))#преобразовываем список в json-строкуexportJson <- toJSON(lookup_json)#сохраняем все в виде json-файлаwrite(exportJson, "lookup_json.json")

Кстати, id аккаунта и id контейнера можно получить из url в GTM: 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-файл. Загружаем туда наш json-файл Подтверждаем импорт

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

Выводы

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

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

Внедрение алгоритма занимает 15 минут. Попробуйте сами и убедитесь.

Читайте продолжение статьи об автоматическом создании объявлений для списков ретаргетинга ВКонтакте.


Мнение авторов гостевого поста может не совпадать с позицией редакции и специалистов агентства Netpeak.

74
33
0
Обнаружили ошибку? Выделите ее и нажмите Ctrl + Enter.

Комментарии (8)

Последние комментарии

    Чтобы оставить комментарий, нужно войти

    Чтобы оставлять комментарии, переключитесь на профиль читателя

    Подписаться

    на самую полезную рассылку по интернет-маркетингу
    Cookies policy
    Просматривая этот сайт, вы соглашаетесь с нашей политикой конфиденциальности — Ok