Статическое значение utm_id и несколько экспериментов импорта данных о расходах в Google Analytics 4

12 ноября, 2023

Если вы использовали функцию импорта данных в Google Analytics 4, чтобы передать статистику по рекламным кампаниям из других систем (например, Яндекс.Директа, VK Рекламы, Facebook *), то наверняка сталкивались с проблемой, при которой Google отображал в отчетах лишь часть данных, а коэффициент соответствии был равен 0%. Стоит ли обращать на него внимание и что еще можно предпринять для корректной и полной передачи данных из сторонних рекламных кабинетов в Google Analytics 4?

* Деятельность американской компании Meta (бывшая Facebook) запрещена в России, организация признана экстремистской.

Введение

Первое, что вам необходимо - это познакомиться со статьей utm_id - самая таинственная utm_метка. В ней я подробно описываю принцип работы utm_id для предыдущей версии Google Analytics. Это новая utm_метка, которая теперь обязательна в схеме данных при импорте расходов в Google Analytics 4.

Идентификатор кампании (Campaign ID) - обязательное поле при настройке импорта расходов

Второе, но не менее важное - вспомнить, какая схема данных при импорте была в Universal Analytics. Поскольку эта информация может помочь нам сравнить обязательные параметры импорта данных в двух различных версиях Google Analytics и получить дополнительное представление о связывании данных в Google Analytics 4 и загруженных извне, чтобы впоследствии избежать расхождения статистики в своем счетчике.

Обратимся к истории. В Universal Analytics для импорта данных, как с помощью ручного метода, так и с использованием автоматического способа передачи данных, все, что от вас требовалось, это указать обязательные параметры. К ним относились:

  • Date (Дата) ga:date
  • Medium (Источник) ga:medium
  • Source (Канал) ga:source

В Universal Analytics это выглядело так:

Обязательные поля для импорта расходов (Universal Analytics)

Так же вам были доступны дополнительные параметры, которые более точно характеризовали рекламный источник:

  • Кампания (Campaign) ga:campaign
  • Содержание объявления (Ad Content) ga:adContent
  • Ключевое слово (Keyword) ga:keyword
  • Конечный URL (Final URL) ga:adFinalUrl

Campaign, Ad Content, Keyword, Final URL (Universal Analytics)

Но в старой схеме данных не было никакой метки utm_id (запомнили это), и импорт данных происходил на совершенно другом уровне. Почему?

Во-первых, Google Analytics 4 новой схемой решил покончить с множеством различных импортов. Вероятно, Google не нравилось это, поэтому они решили сократить количество новых коннекторов до одного. То есть все рекламные расходы теперь должны обрабатываться одним источником и файлом, подгружаясь либо через файл .CSV локально, либо через SFTP-сервер. Теперь вы не сможете создать несколько импортов данных для различных рекламных систем - Яндекс.Директа, Facebook *, VK Рекламы и других, как это было в Universal Analytics. Раньше вы могли создать поток данных для каждого сервиса отдельно, свой собственный набор данных (dataset).

В Universal Analytics для каждого рекламного кабинета можно было создать свой набор данных

Теперь - только один тип данных Данные о расходах для всех. Все в одном файле, все в одном соединении. Именно это стало катализатором введения нового идентификатора, по которому в рамках одного источника данных GA4 определяет тот или иной трафик и связывает с ним импортированные расходы. Нужен был еще один ключ схемы, который бы характеризовал уникальную комбинацию идентификатора кампании, названия кампании, источника и канала. И таким ключом в Google Analytics 4 стал campaign_id.

А во-вторых, метка, связывающая идентификатор кампании utm_id (ga:CampaignCode) с другими данными, в функции Импорт данных предыдущей версии Google Analytics предназначалась для совершенно других задач.

utm_метки в Google Analytics 4

Если вы хотите глубоко разобраться в теме параметров UTM, с помощью которых можно переопределять источники трафика в Google Analytics 4, я рекомендую посмотреть вам мою лекцию на YouTube, а также прочитать эту статью.

Проблема расхождения данных

Однако даже если вы создаете один поток данных для одной рекламной системы (например, Яндекс.Директа), вы все равно можете получить недостоверные или неполные данные. В одном из своих материалов, посвященных импорту данных на примере статистики Яндекс.Директа, я показал, как можно это сделать и дал определенные рекомендации по отслеживанию полных данных, чтобы избежать:

  • меньшего % импортированных данных;
  • неполного коэффициента соответствия.

Процент импорта и коэффициент соответствия (Google Analytics 4)

Именно % импортированных данных и коэффициент соответствия являются причиной расхождения данных в вашем рекламном кабинете и Google Analytics 4. Определения этих двух метрик звучат так:

  • % импортировано - количество успешно импортированных строк, разделенное на количество строк в файле импорта;
  • Коэффициент соответствия - соотношение ключей в файле импорта, которые можно найти в вашем объекте за последние 90 дней.
% импортировано

Пример импортированного количества строк

100% означает, что все строки успешно импортированы. Это самый лучший вариант и вам нужно стараться всегда иметь именно такой показатель. Если он не будет равен 100%, вероятно, какие-то данные из импортированного файла будут утеряны. А это означает, что данные в Google Analytics 4 и рекламном кабинете, из которого вы выгрузили данные, будут отличаться. Одна из самых распространенных причин - дубли строк. Подробнее про такой эксперимент я расскажу чуть ниже.

Коэффициент соответствия

Match rate - это показатель соответствия данных из импортированного файла данным в вашем счетчике GA4 в течение последних 90 дней. 100% означает, что все данные из импортированного файла были успешно сопоставлены с существующими данными в Google Analytics 4.

Пример сопоставления количества строк

Как можно его высчитать практически? Формула коэффициента соответствия очень простая:

Коэффициент соответствия (Match rate) = (Количество сопоставленных данных / Общее количество данных в вашем ресурсе Google Analytics 4) * 100

На примере выше коэффициент соответствия равен 84,08% ~ 2490 / 2970 * 100%. Это означает, что с файлом импорта и комбинацией идентификатора кампании (utm_id), источника (utm_source), канала (utm_medium) и названия кампании (utm_campaign) в ресурсе Google Analytics 4 удалось сопоставить ~ 2490 строк. А всего в отчетах GA4 с таким набором параметров данных на 2970 записей за последние 90 дней.

Так как же найти эти 2970 записей в своем ресурсе? Очень просто! Перейдите в Исследование и создайте отчет с обязательными параметрами из схемы импорта данных. То есть задействуйте:

  • Идентификатор кампании сеанса;
  • Источник сеанса;
  • Канал сеанса;
  • Кампания, связанная с сеансом.

Выберите диапазон дат - последние 90 дней. Если отчет будет содержать много строчек, перейдите к самой последней, используя опцию начальной строки. На холсте в самом низу будет отображаться порядковой номер последней записи:

Пример Исследования с обязательными параметрами импорта

Это и есть общее количество ключей в вашем ресурсе Google Analytics 4 и оно прям очень схоже с тем, что в примере выше (2965 и округленно 2.97К). Причем этот отчет будет содержать все комбинации идентификатора кампании, источника, канала и названия кампании, а не только те, которые вы импортируете. А вот когда вы импортируете, данные из файла как бы наслаиваются на данные в ресурсе GA4 и сопоставляются между собой. И, конечно же, не все данные из файла импорта будут сопоставлены с теми данными, что уже есть в GA4. Таким образом и получается коэффициент соответствия.

Если у вас было импортировано 100% строк, но при этом коэффициент соответствия этих данных равен или близок к 0%, вы можете не увидеть статистики в отчетах Google Analytics 4 по расходам. В таком случае вам необходимо правильно сопоставить те данные, которые у вас есть в GA4 с теми, которые вы загружаете через файл CSV. Низкий коэффициент соответствия не обязательно означает, что импорт был неудачным. Однако это может указывать на то, что некоторые данные могут быть не такими полезными или релевантными, как могли бы быть. Но и 100% вы вряд ли получите.

Когда я загружал данные из Яндекс.Директа в Google Analytics 4, то столкнулся с проблемой соответствия импортированных данных и их полнотой. Хоть они и были загружены до конца, их коэффициент соответствия составлял не 100%. В процессе наблюдения я пришел к следующим выводам:

  1. поскольку данные загружаемого вами файла CSV и статистики GA4 сопоставляются по параметру Идентификатор кампании сеанса (по campaign_id), который извлекается из метки utm_id, то он обязательно должен присутствовать в счетчике аналитики в этот день, то есть заход должен быть зарегистрирован самим Analytics. Если Google Analytics 4 сам не зафиксировал этот переход по каким-либо причинам (самая распространенная - блокировка счетчика на уровне браузера), то данные не будут сопоставлены. Яндекс.Директ или другая рекламная система точно отследит этот переход и отобразит его в Мастере отчетов, а Google Analytics 4 нет ;
  2. данные не импортируются в Google Analytics 4 из файла CSV, если в строке не было кликов и расхода. Это следствие первого вывода - если переход не зарегистрировал сам Google Analytics 4, значит Идентификатор кампании сеанса не появился в отчетах. А раз его нет в самом GA4, то сопоставить пустые строки с нулевыми кликами и нулевыми расходами, даже если у этой кампании были показы - невозможно. Нет идентификатора сеанса кампании - нет данных.

Как вы уже знаете, идентификатор кампании (utm_id) является обязательным параметром в сведениях об источнике данных:

Идентификатор кампании (utm_id) - обязательный параметр

Без него вы обойтись не сможете, поскольку при импорте данных нужно обязательно указать это поле и выбрать данные. Например, для Яндекс.Директа я рекомендовал его добавлять в параметрах URL рекламной кампании:

utm_id={campaign_id} в параметрах URL

Google тоже в своей справке советует по возможности использовать функции автозаполнения и передавать динамически значение идентификатора кампании в utm_id. Если такое невозможно, тогда в метку подставлять статическое значение. Важно то, что параметры Идентификатор кампании (utm_id), Кампания (utm_campaign), Источник (utm_source) и Канал (utm_medium) являются обязательными. Таким образом GA4 сможет связать параметры отслеживания кампании с сеансом и объединить собственные данные с данными о расходах из вашего внешнего источника.

И так было в Universal Analytics. Google при импорте расходов из разных рекламных систем объединял статистику, собранную в счетчике, с теми данными, которые вы отправляли с помощью настроенной функции импорта, только через параметры даты (date), источника (source) и канала (medium). Никаких других обязательных полей в схеме импорта не было. Склейка по идентификатору сеанса кампании (campaign_id) не проводилась.

utm_id с динамическим значением {campaign_id}, в которое подставляется идентификатор кампании в момент перехода пользователя с рекламного объявления - это хорошо, но далеко не единственное решение для Google Analytics 4. Тем более, что идентификатор кампании {campaign_id} интернет-маркетологи, как правило, добавляют в метку utm_campaign или utm_content, наряду с идентификатором группы объявлений {gbid}, идентификатором объявления {ad_id} или {banner_id} и т.д. (примеры для Яндекс.Директа).

Вам достаточно придумать статический идентификатор кампании для каждого рекламного источника (Яндекс.Директа, VK Рекламы, Facebook и других) и передавать его в CSV файле или с помощью SFTP. Например, для Яндекс.Директа не добавлять в ссылке utm_id={campaign_id}, а просто в самом файле при его генерации добавить к campaign_id и всем строкам одно и то же значение, например yandex_direct:

Статичное значение utm_id (campaign_id), которое вы придумали

Для Facebook это может быть facebook_ads, для VK Рекламы - vk_ads и т.д. Но к этому примеру мы вернемся чуть позже в статье.

Примечание: в вашем файле названия столбцов могут быть другими. Например, вместо campaign_id, source, medium, date, campaign, impressions, clicks и cost вы можете задать campaign_id_field, source_field, medium_field, date_field, campaign_field, impressions_field, clicks_field и cost_field. Это никак не повлияет на работу вашего импорта данных, поскольку при сопоставлении данных в схеме GA4 вам все равно нужно будет вручную выбрать поле Google Analytics 4 и задать ему соответствующий столбец из файла импорта.

Я провел несколько экспериментов и у меня получились интересные результаты, о которых я хотел бы с вами поделиться.

Эксперимент №1. Отправка данных в пустой счетчик

В первый раз я решил импортировать данные в новый ресурс Google Analytics 4, в котором нет никакой статистики по пользователям и сеансам, и проверить как в этом случае будет вести себя счетчик. Схема данных и сопоставление полей получились вот такими:

Пример схемы данных для импорта расходов

Идентификатор кампании у всех одинаковый. Нажав на кнопку Импортировать, мой файл стал обрабатываться. Никаких ошибок на данном этапе я не получил. Было импортировано 100% данных за сентябрь 2023 года (за 30 дней). Но поскольку аккаунт новый, коэффициент соответствия был равен 0%.

Результат импорта в новом ресурсе Google Analytics 4

Таким образом, в отчете Расходы вне Google (Non Google cost) статистика по сентябрю не подгрузилась, так как Google не смог эти данные сопоставить, поскольку их просто нет за предыдущий период.

Нет импортированных данных за прошлый период (новый ресурс)

Вывод: при отсутствии данных в ресурсе Google Analytics 4 Google не сможет сопоставить вашу статистику из файла, поэтому в отчетах он ничего отображать не будет.

Эксперимент №2. Отправка данных тогда, когда нет идентификатора кампании

Вполне вероятно, что вы хотите узнать, получится ли вам импортировать расходы в Google Analytics 4, если вы не размечали ранее свои рекламные кампании меткой utm_id. То есть все остальные utm_метки в рекламных кампаниях у вас присутствуют, а вот идентификатора кампании нет.

Отсутствие идентификатора кампании сеанса в статистике Google Analytics 4

В отчетах отсутствие идентификатора кампании сеанса будет отображаться со значением (not set). Можно ли в схеме данных использовать такое значение, передавая в качестве campaign_id значение (not set)? Давайте проверим.

Я добавил его в файл импорта. В результате у меня получились такие данные:

(not set) в campaign_id

Сопоставить поля данных в самом импорте так же удалось:

Сопоставление полей в источнике данных

Нажав на кнопку Импортировать, мой файл стал обрабатываться. Никаких ошибок на данном этапе я не получил. Было импортировано 100% данных за 1 ноября 2023 года, однако коэффициент соответствия по-прежнему был равен 0:

Результат импорта с (not set)

Таким образом, используя (not set) вместо реального значения campaign_id, Google не смог сопоставить уже собранные данные с импортированными, даже при том, что они уже есть в ресурсе Google Analytics 4:

Нет импортированных данных за прошлый период (новый ресурс)

Вывод: если вы не прометили свои рекламные кампании меткой utm_id, а решили попробовать использовать значение (not set) для идентификатора кампании, Google не сможет сопоставить вашу статистику из импортированного файла, поэтому в отчетах данные по кликам, показам и расходу напротив ваших рекламных кампаний отображаться не будет.

Эксперимент №3. Передавать в utm_id статические данные

Да, в utm_id вы можете передавать статические данные, не utm_id={campaign_id} для Яндекс.Директа, а, например utm_id=yandex_direct:

Статический параметр utm_id в настройках РК Яндекс.Директа

Именно она должна присутствовать в отчетах Google Analytics 4 вместе с другими метками:

  • Источник сеанса - из метки utm_source;
  • Канал сеанса - из метки utm_medium;
  • Кампания, связанная с сеансом - из метки utm_campaign;
  • Идентификатор кампании сеанса - из метки utm_id, но статическое значение (в моем примере - yandex_direct).

Пример файла для импорта со статическим значением campaign_id (идентификатора кампании)

В utm_id вы можете использовать и другие статические значения для ваших рекламных каналов (например, просто передавать цифру для каждого источника - для Яндекс.Директа utm_id=1, для Facebook utm_id=2, для VK Рекламы utm_id=3 и т.д.). Более того, реализация, когда utm_id для всех рекламных кабинетов одинакова, тоже будет работать:

  • для VK Рекламы utm_id=1
  • для Яндекс.Директа utm_id=1
  • для Facebook utm_id=1
  • и так далее.

Общая статическая метка utm_id (Идентификатор кампании) для всех рекламных источников

Загрузив файл со статическим идентификатором кампании, Google принял его без каких-либо проблем:

Сопоставление данных в источнике

А через некоторое время и вовсе выдал, что % импортированных данных составил 100%. Правда коэффициент соответствия все так же был равен 0:

Результат импорта со статическим идентификатором кампании

Но это не помешало Google Analytics 4 правильно сопоставить свои данные с моими загруженными и в отчете Расходы вне Google отобразить полную 100% статистику по расходу Яндекс.Директа за нужные даты:

Данные в Мастере отчетов Яндекс.Директа и отчете Google Analytics 4

Вывод: прометив utm_id статическим значением в своих рекламных объявлениях (например, utm_id=1 или utm_id=yandex_direct), Google так же будет корректно сопоставлять собранные в счетчике данные с вашим файлом импорта. Конструкция utm_id={campaign_id} приветствуется, но далеко не единственный способ объединения данных.

Эксперимент №4. Дубли строк в файле импорта

Еще интересный момент, который я заметил при тестировании - если в вашем файле будут одинаковые строки с комбинацией идентификатора кампании (utm_id), источника (utm_source), канала (utm_medium) и названия кампании (utm_campaign), то при импорте данных Google будет ориентироваться на одну из них (просто идущую последней записью в файле), а другие он просто проигнорирует.

При загрузке такого файла:

Одинаковые строки со всеми ключами

Google импортирует не все строки, а лишь одну из них:

При дублях происходит импорт одной строки, вероятно - последней

В отчетах он отображает данные так:

Отображение данных только последней записи файла импорта

Поэтому перед тем, как загружать данные в Google Analytics 4 вручную или с помощью SFTP, вы должны позаботиться о том, чтобы комбинация полей GA4 из идентификатора кампании, источникам кампании, канала кампании, названия кампании и даты была уникальной для каждой записи/строки в файле импорта или же предварительно произвести агрегацию данных. Иначе Google импортирует только одну последнюю строку и проигнорирует все остальные. Из-за этого будут расхождения данных в отчетах.

Эксперимент №5. Разные валюты в рекламном кабинете и в настройках ресурса

Получится ли импортировать данные, если валюта в рекламном кабинете указана одна (в рублях), а в Google Analytics 4 другая (в долларах)? Как в этом случае счетчик обработает данные?

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

Расходы на рекламу в файле импорта в российских рублях

Валюта ресурса при этом был установлена доллар США ($):

Валюта ресурса - доллар США

Загрузив данные о расходах, Google корректно импортировал все строки, и вот в отчете Расходы вне Google отобразил точно такие же значения, как и в файле импорта:

Данные в отчете Google Analytics 4

Вывод: Google Analytics 4 не конвертирует расходы исходя из курса валют. То есть он их передаст как есть из рекламной системы в GA4, несмотря на то, что валюты отличаются. Если у вас нет возможности установить другую валюту в ресурсе, то на этапе загрузки данных в файле импорта вам необходимо самостоятельно конвертировать расходы по текущему курсу.

Итого

Импорт данных в Google Analytics 4 не так прост, как кажется на первый взгляд. Особенно данных о расходах. Только в моем блоге уже опубликовано три руководства на данную тему. И думаю, что это не последнее. Проведя несколько экспериментов с импортом расходов и разобравшись в подсчете коэффициента соответствия, я бы хотел резюмировать то, что мы узнали:

  • вам нужно следить за тем, чтобы процент импортированных данных (количество строк) был равен 100%, иначе какие-то данные из импортированного файла будут утеряны. А это означает, что данные в Google Analytics 4 и рекламном кабинете, из которого вы выгрузили статистику, будут отличаться;
  • коэффициент соответствия можно посчитать самому по формуле и найти все ключи, построив Исследование с соответствующим наборов обязательных параметров схемы данных. Низкий коэффициент соответствия не обязательно означает, что импорт был неудачным. Однако это может указывать на то, что некоторые данные могут быть не такими полезными или релевантными, как могли бы быть. Но и 100% вы вряд ли получите. Ориентируйтесь на него, но не гонитесь за идеалом;
  • поскольку данные загружаемого вами файла CSV и статистики GA4 сопоставляются по параметру Идентификатор кампании сеанса (по campaign_id), который извлекается из метки utm_id, то он обязательно должен присутствовать в счетчике аналитики в этот день, то есть заход должен быть зарегистрирован самим Analytics. Если Google Analytics 4 сам не зафиксировал этот переход по каким-либо причинам (самая распространенная - блокировка счетчика на уровне браузера), то данные не будут сопоставлены. Яндекс.Директ или другая рекламная система точно отследит этот переход и отобразит его в Мастере отчетов, а Google Analytics 4 нет;
  • данные не импортируются в Google Analytics 4 из файла CSV, если в строке не было кликов и расхода. Это следствие первого вывода - если переход не зарегистрировал сам Google Analytics 4, значит Идентификатор кампании сеанса не появился в отчетах. А раз его нет в самом GA4, то сопоставить пустые строки с нулевыми кликами и нулевыми расходами, даже если у этой кампании были показы - невозможно. Нет идентификатора сеанса кампании - нет данных;
  • при отсутствии данных в ресурсе Google Analytics 4 Google не сможет сопоставить вашу статистику из файла, поэтому в отчетах он ничего отображать не будет;
  • если вы не прометили свои рекламные кампании меткой utm_id, а решили попробовать использовать значение (not set) для идентификатора кампании, Google не сможет сопоставить вашу статистику из импортированного файла, поэтому в отчетах данные по кликам, показам и расходу напротив ваших рекламных кампаний отображаться не будет;
  • прометив utm_id статическим значением в своих рекламных объявлениях (например, utm_id=1 или utm_id=yandex_direct), Google так же будет корректно сопоставлять собранные в счетчике данные с вашим файлом импорта. Конструкция utm_id={campaign_id} приветствуется, но далеко не единственный способ объединения данных. Вы можете даже использовать общий идентификатор кампаний для всех рекламных источников (utm_id=1 для Яндекс.Директа, Facebook, VK Рекламы и других систем);
  • если в вашем файле будут одинаковые строки с комбинацией идентификатора кампании (utm_id), источника (utm_source), канала (utm_medium) и названия кампании (utm_campaign), то при импорте данных Google будет ориентироваться на одну из них (просто идущую последней записью в файле), а другие он просто проигнорирует;
  • если в вашем ресурсе Google Analytics 4 и рекламном кабинете, из которого вы выгружаете статистику, отличаются валюты, Google автоматически не сконвертирует расходы исходя из курса валют. То есть он их передаст как есть из рекламной системы в GA4. Если у вас нет возможности установить другую валюту в ресурсе, то на этапе загрузки данных в файле импорта вам необходимо самостоятельно конвертировать расходы по текущему курсу.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике