Экспорт оффлайн-конверсий в Я.Метрику. Зачем это и как?

Head of Analytics&Marketplace, MediaGuru

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

Чтобы передать данные о совершенной сделке, можно:

  • использовать загрузку оффлайн-конверсий;
  • передавать данные из оффлайн-магазина. 

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

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

Оффлайн-конверсии или модуль сквозной аналитики

Недавно Яндекс.Метрика выпустила инструмент, который позволяет загружать данные о заказах и клиентах из CRM для более полноценной статистики. Разумеется, если есть возможность, стоит обратить на него внимание. Объясняю, почему добавил оговорку «если…». В некоторых компаниях нет возможности сделать подобный импорт, или им нужно передавать дополнительные конверсии, не относящиеся к заказам/сделкам.

Как загрузить данные в метрику?

Рассмотрим случай, когда есть коллтрекинг и для звонков проставляются теги. Разрез по тегам можно получить в отчете по звонкам. Но если есть необходимость использовать звонок с определенным тегом как цель (например, для Директа), то с этим есть проблема. Здесь и поможет импорт конверсий.

Разберем передачу звонков с нужным тегом как конверсию (цель) в Метрику при помощи языка Python. Сделаем это на примере CallTouch. Последовательность действий должна быть такой:

  1. Скачать данные из CallTouch.
  2. Привести данные к нужному формату.
  3. Загрузить данные в Метрику.

Загрузка данных из CallTouch

Заходим в личный кабинет CallTouch и получаем токен. Также понадобится ID кабинета.

Напишем функцию для загрузки звонков из CallTouch.

import requests


def get_calls(token, site_id, date_from, date_to,
              attribution=1, bind_to='call', tags=True):
  '''
  Функиция возвращает журнал звонков.

    Параметры:
    	token: str, токен из ЛК
    	site_id: str: id ЛК
    	date_from: str, дата начала периода в формате dd/mm/yyyy
    	date_to: str, дата окончания периода в формате dd/mm/yyyy
    	attribution: int, атрибуция (0 - последнее взаимодействие,
    				                 1 - последний непрямой)
        bind_to: str, флаг привязвки звонка
        	call: по дате звонков
            session: по дате сессий)
      tags: выгрузка тегов звонков
      	True: выгружaть
      	False: не выгружать
    '''

    calls = []
    page, limit, pages  = 1, 500, 1
    url = f'http://api.calltouch.ru/calls-service/RestAPI/{site_id}/calls-diary/calls'
    params = {'clientApiId':token,
              'dateFrom': date_from,
              'dateTo': date_to,
              'page': page,
              'limit': limit,
              'attribution': attribution,
              'bindTo': bind_to}
    if tags: params.update(withCallTags='true')
    while page <= pages:
        r = requests.get(url, params=params)
        pages = int(r.json()['pageTotal'])
        page += 1
        params.update(page=page)
        calls += [x for x in r.json()['records']]
    return calls

Преобразование данных

Чтобы загрузить данные в Метрику, они должны соответствовать формату. Метрика принимает файлы в CSV с разделителем в виде запятой. В качестве обязательного параметра — clientID или yaclid (только для импорта конверсий Я.Директа), идентификатор цели и временная метка. 

Напишем две простые функции (их скрин ниже).

  • Первая будет вынимать из объекта со звонками нужные нам значения, а именно timestamp (временная метка в UNIX формате) и yaClientId (clientID Я.Метрики).
  • Вторая будет проверять наличие нужного тега в звонке.
def extract_params(params, element):
    result = []
    for p in params:
        result.append(element.get(p))
    return result


def check_tags(tag, element):
    result = False
    for el in element['callTags']:
        if tag in el['names']: result = True
    return result

Для примера возьмём тег, который автоматически определяет CallTouch — гендерную принадлежность «Женщина».

params = ('timestamp', 'yaClientId')
tag = 'Женщина'
export_data = []
for d in data:
    if check_tags(tag, d):
        export_data.append(extract_params(params, d))

В некоторых строках вместо clientID стоит значение None. Это звонки без сессии, их нужно отфильтровать.

Фильтруем:

export_data = [x for x in export_data if x[1] is not None]

Теперь сохраним в CSV-файл полученные данные и добавим идентификатор конверсии.

with open('export.csv', 'w', encoding='utf-8') as f:
    f.write('DateTime,ClientID,Target\n')
    for row in export_data:
        row = [str(x) for x in row]
        row.append('women_call')
        f.write(','.join(row) +  '\n')
f.close()

Посмотрим что получилось:

Перейдем к Метрике.

Подготовка для работы с API Метрики

Первым делом идем в настройки счетчика в раздел «Загрузка данных». Включаем «Оффлайн-конверсии» или убеждаемся, что функция включена.

Для работы с API Метрики нужно создать OAuth приложение.

Указываем название. В платформе выбираем «Веб-сервисы», а в Callback URI указываем этот URL: https://oauth.yandex.ru/verification_code

В доступах находим Яндекс.Метрику и ставим галочки.

Жмем «Создать приложение».

В созданном приложении потребуется ID, чтобы получить отладочный токен.

Чтобы получить токен переходим по адресу: https://oauth.yandex.ru/authorize?response_type=token&client_id=358934bf12d246b78dc57deac012f4c4 , где client_id — это ID вашего приложения.

Авторизируемся под логином, у которого есть доступ к счетчику с возможностью редактирования. Получаем токен. Его нужно сохранить в файлик и никому не показывать! Тут мы будем использовать отладочный токен при переносе на постоянную работу. Лучше получать токен с обменом на код. Срок жизни отладочного токена 180 дней.

Загрузка данных в Метрику

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

def upload_convertions(file_path, token, counter):
    '''
    Функция загружает файл CSV с конверсиями в Метрику

    Параметры:
        file_path: str, путь до файла
        token: str, токен
        counter: str, номер счетчика
    '''
    file = open(file_path, "r").read()
    id_type = "CLIENT_ID"
    url = f"https://api-metrika.yandex.net/management/v1/counter/{counter}/offline_conversions/upload?client_id_type={id_type}"
    headers = {
        "Authorization": "OAuth {}".format(token)
    }
    r = requests.post(url, headers=headers, files={"file":file})
    print(r.json())

И вызвать функцию:

upload_convertions(file_path, token, counter)

Готово!

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

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

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

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

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

Экспорт оффлайн-конверсий в Я.Метрику. Зачем это и как?

Чтобы оценивать эффективность разных каналов, в Яндекс.Метрике настраивают отслеживание целей и внедряют передачу данных электронной коммерции. Но эти способы подразумевают регистрацию лида, который может не закрыться в сделку.  Чтобы передать данные о совершенной сделке, можно: использовать загрузку оффлайн-конверсий; передавать данные из оффлайн-магазина.  Это два потенциальных сценария, которые могут быть применены на практике, с целью как […]

Топ-5 самых заметных новинок осени в веб-аналитике

Для PPC-специалиста важно следить за новинками и оперативно тестировать их. Руководитель отдела автоматизации и аналитики в MediaGuru Роман Любимцев составил рейтинг самых значимых обновлений в Метрике и Google Analytics за эту осень. В материале найдете подробное описание каждой новинки и узнаете, как с ними работать. Часто специалистам приходится тратить время на выполнение рутинных задач, чтобы оптимизировать рабочие процессы в рекламных, аналитических системах или в бизнесе. Например, вручную выгружать данные или интегрировать […]

Яндекс продолжает упрощать жизнь специалистам по контексту: настройка цели на отправку формы без разработчиков

На днях Яндекс анонсировал новый тип цели “Отправка формы”. В теории, она должна облегчить жизнь специалистам по контекстной рекламе. Давайте разберемся, так ли это на самом деле. Сразу стоит уточнить, что данная настройка подойдет только для случаев, когда формы на сайте размечены элементом form и некоторыми параметрами формы: идентификатора (id), имени (name) или пути к […]