Статистика по Турбо-страницам из Яндекс.Метрики в сторонних отчетах

Роман Любимцев
Head of Analytics&Marketplace, MediaGuru

Турбо-страницы появились два года назад и за это время стали популярны. Особенно среди проектов, где есть проблемы с мобильной версией сайта; или в сфере услуг, где важно получать лиды.

Статистику по заявкам с турбо-страниц можно посмотреть только в Яндекс.Метрике вплоть до разреза ключевой фразы. Но многим клиентам не подходит предоставленная статистика эффективности в интерфейсе системы аналитики: отчет должен содержать статистику по затратам не только с Яндекс.Директа. Поэтому нужно искать решение для сбора статистики и агрегации её во вне.

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

1 этап: получение авторизационного токена

Для получения автоматизированного отчета есть два подхода: 

  1. Воспользоваться сторонним решением, например renta.im.
  2. Написать собственный скрипт подключения к API Метрики. 

Разберем второй вариант подробнее, т.к. он более полный, а общий смысл не отличается.

Для написания скрипта будем использовать Python 3, так как интерпретатор языка уже есть в Ubuntu, которая используется в качестве операционной системы почти на всех серверах.

Первым делом нам нужно получить авторизационный токен. Если нужен доступ к одному счетчику Метрики под вашим логином, воспользуйтесь «отладочным токеном». Его достаточно.

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

2 этап: пишем модуль для получения статистики из Яндекс.Метрики

Импортируем нужные библиотеки:

import requests

import pandas as pd

from io import StringIO

from time import sleep

Объявим класс, который назовем Metrika. При вызове мы будем помещать в него наш токен.

class Metrika(object):

     def __init__(self, token = None):

     super(Metrika, self).__init__()

     self.token = token

Затем внутри класса создадим метод GetStat, который и будет отвечать за скачивание статистики.

def GetStat(self, counter_id = None, date_from = None, date_to = None,

               dimensions = None, metrics = None, filters = None, attribution = None):

Расшифровка:

  • counter_id – номер счетчика.
  • date_from – дата, с которой нужно получить статистику.
  • date_to – дата, по которую нужно получить статистику (включительно).
  • dimensions – параметры (группировки).
  • metrics – метрики.
  • filters – фильтры, если требуются.
  • attribution – модель атрибуции.

Теперь само тело метода:

stats_api = ‘https://api-metrika.yandex.ru/stat/v1/data.csv’

     token = self.token

     df = pd.DataFrame()

     check = True

     offset = 1

     try:

         while check:

             params = {  «date1»:date_from,

                            «date2»:date_to,

                            «dimensions»:’,’.join(dimensions),

                            «metrics»:’,’.join(metrics),

                            «ids»:counter_id,

                            «accuracy»:1,

                            «attribution»:attribution,

                            «group»:»day»,

                            «filters»:filters,

                         «offset»: offset,

                        «limit»:10000}

             headers = {«Authorization» : «OAuth » + token}

             r = requests.get(stats_api, params=params, headers = headers)

             tmp = pd.read_csv(StringIO(r.text), sep = ‘,’)

             df = df.append(tmp, sort = False)

             if len(tmp) == 0:

                 check = False

             offset += 10000

         return df

     except:

         print(‘Metrika: Error’)

         raise

Статистика будет отдаваться в csv, такой формат удобнее использовать при работе с pandas.

Используется get – запрос с параметрами и настройками, которые мы хотим получить из Метрики.

Мы задаем offset – отступ, т.е. с какой строки отбирать результат. Через цикл while мы проверяем данные, и, как только данные приходят пустые, выходим из цикла.

Этап 3: Создаем новый файл, на который будет ссылаться модуль

Импортируем модуль, а также модули работы с датой:

import metrika

from datetime import datetime as dt

from datetime import timedelta as td

Объявляем токен и номер счетчика:

token = ‘AQAAAAAh-AQAAAAAh-AQAAAAAh’

counter_id = ‘11111111’

Выбираем период дат. Чтобы статистика скачивалась за вчерашний день, используем такой вызов:

date_from = dt.now()-td(days = 2)

date_to = dt.now()-td(days = 1)

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

Для среза по кампании и условию показа нужны такие ключи:

dimensions =[‘ym:s:date’,’ym:s:lastsignDirectClickOrder’,   ‘ym:s:lastsignDirectPhraseOrCond’]

Указываем номера целей вместо XXXXXXX. Вместо количества достижений цели используем целевые визиты:

metrics = [‘ym:s:goalXXXXXXXvisits’,’ym:s:goalXXXXXXXvisits’]

Создаем экземпляр нашего класса:

mk = metrika.Metrika(token)

И получаем отчет:

df = mk.GetStat(counter_id = counter_id, date_from = date_from, date_to = date_to,

             dimensions = dimensions, metrics = metrics, attribution = ‘lastsign’)

На выходе получим подобную таблицу:

Теперь полученный DataFrame можно импортировать в таблицы SpreadSheets, xlsx или в базу данных. Остается сопоставить его со статистикой из Директа, используя Функции ВПР или Join для баз данных.

Если нужно получить статистику из Метрики по другим конверсиям для разных источников, стоит использовать UTM-метки в качестве параметров. Полный список всех параметров можно найти здесь

Оцените статью

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

Поделитесь в соцсетях

Похожие публикации

Digital-дайджест. Выпуск 2/26

К концу третьей недели января собрали главное в digital — новости платформ, свежие исследования и ключевые тренды рынка. Telegram стал главным источником новостей для предпринимателей МСБ, количество ПВЗ в России выросло на 44,7% за год, а ИИ разрушает традиционную маркетинговую воронку — об этом и не только в свежем выпуске.      Яндекс представил ecom-дайджест […]

Digital-дайджест. Выпуск 1/26

К концу первой рабочей недели в новом году собрали главное в digital за последнее время — новости рынка, свежие исследования и ключевые тренды. Как маркетплейсы и ритейл развивают собственные экосистемы, почему брендам приходится переосмысливать лояльность и что ждет программатик и онлайн-торговлю в 2026 году — об этом и не только в свежем выпуске.     […]

Digital-дайджест. Выпуск 97 (188)

В еженедельном дайджесте делимся диджитал-новостями. Рассказываем про развитие нейросетей, изменения на рынке ритейла и поведение пользователей. Яндекс обновил интерфейс отчетов Метрики, Telegram установил рекорд по месячному охвату в России, а россияне 55+ активнее заказывают продукты онлайн — об этом и не только в новом выпуске.      1) Кейс EKONIKA & MediaGuru: как снизить стоимость […]