Импорт из Google Analytics 4
Два способа получить числа GA4: дневные итоги показывают охват MousePlayer, а отдельные сеансы GA4 из BigQuery — визиты, которые мы не записали.
1. Что поступает, а что нет
Оба пути читают из вашей учётной записи Google и включаются отдельно. Отвечают на разные вопросы; оба не обязательны.
| Путь | Что получает | Для чего |
|---|---|---|
| Data API | Дневные итоги: сеансы, пользователи, просмотры, вовлечённые сеансы | Вопрос охвата. GA4 считает 3 000 сеансов, MousePlayer записал 40 — без опорного числа разницу не заметить. |
| Импорт BigQuery | Отдельные сеансы GA4 с событиями | Что случилось в визите, не записанном MousePlayer. |
Импортированный сеанс нельзя воспроизвести. GA4 не хранит снимок страницы и движения мыши, поэтому строить запись не из чего. Вы получаете числа и события рядом с записями, и мы не выдаём их за большее.
Импорт хранится в отдельных таблицах и никогда не смешивается с записями. Иначе незаметно изменился бы смысл профилей поведения, оценки посетителей и анализа трения; никто не отличил бы измеренную строку от загруженной.
2. Путь 1: Data API
Нужны ID ресурса и ключ сервисного аккаунта.
ID ресурса — не ID измерения
Это самая частая ошибка, которую сообщение Google не объясняет. ID измерения имеет вид G-ABC123XYZ, находится в сниппете и виден везде. ID ресурса состоит только из цифр и есть лишь в администрировании: Администратор, Настройки ресурса. Нужен второй; первый мы отклоняем с пояснением, не доводя до 400.
Создание и авторизация сервисного аккаунта
- В Google Cloud Console создайте сервисный аккаунт и JSON-ключ.
- В том же проекте включите Google Analytics Data API.
- В GA4: Администратор, Управление доступом к ресурсу — добавьте почту сервисного аккаунта с ролью Наблюдатель. Сервисный аккаунт — отдельный пользователь; без этого Google отвечает 403 без объяснения.
Вставьте содержимое JSON. Оно хранится зашифрованным и затем показывается только сокращённо.
3. Путь 2: импорт BigQuery
Читает сырой экспорт GA4. Сначала настройте в GA4: Администратор, Связи с BigQuery. Таблицы появляются лишь на следующий день — раньше импорт ничего не находит, это не ошибка.
Что указать
- ID проекта GCP с экспортом. Это необязательно тот же проект, куда экспортируется MousePlayer.
- ID набора данных. GA4 называет его
analytics_<propertyId>. - Ключ сервисного аккаунта с ролью BigQuery Data Viewer на наборе и BigQuery Job User в проекте. Достаточно чтения, не давайте больше.
Стоимость и плательщик
BigQuery тарифицирует прочитанные байты, и платите вы. Поэтому за запуск читаются лишь несколько дней одним запросом: второй перечитал бы таблицы. Жёсткий предел прерывает запрос до больших расходов; тогда журнал доставки сообщает о слишком большом временном окне.
Частота
По умолчанию каждые шесть часов повторно за последние три дня. GA4 дополняет данные до 48 часов, а дневной экспорт появляется назавтра. Более частые запросы вернут те же числа.
4. Ключ для связи сторон
Если включить аналитический мост для GA4, MousePlayer сохраняет ID клиента из cookie _ga в каждом сеансе. Это значение экспорта BigQuery в поле user_pseudo_id.
По нему сеанс GA4 сопоставляется с записью, и видно, что GA4 посчитал в том же визите. Без моста стороны просто существуют рядом.
То же поле содержит ваш ID клиента при использовании setUserId(). Одновременно нельзя: либо Google client ID, либо ваш номер.
5. Согласие, хранение, удаление
Импортированные данные имели cookie
Импортируются только строки с user_pseudo_id . При отказе GA4 отправляет обращения без cookie через Consent Mode; поля в них нет, поэтому они исключаются автоматически. Смоделированные, то есть оценочные строки, исключены по той же причине: оценка как сеанс означала бы несуществующие визиты.
Срок хранения
По умолчанию 180 дней от даты строки, а не импорта. Иначе срок не истёк бы: каждый запуск получает те же дни снова.
Удаление
По запросу посетителя удаляются и импортированные сеансы GA4 в пределах сопоставления по ID выше. При удалении проекта — все, включая строки без связи с записями. Ежедневное удаление по срокам намеренно их не трогает: у GA4 свой срок, ваши записи истекают раньше.
6. Если ничего не поступает
Каждый запуск пишет результат в журнал доставок интеграций, включая ошибки простыми словами. Обычно там уже видно, чего не хватает.
| Сообщение | Что делать |
|---|---|
| ID ресурса должен быть числовым | Введён ID измерения. Нужное число в настройках ресурса GA4. |
| HTTP 403 от Data API | Сервисный аккаунт не наблюдатель ресурса GA4 или Data API не включён в проекте GCP. |
| Набор данных или таблицы экспорта не найдены | Нет связи BigQuery, другое имя набора или ещё не прошёл день. |
| Доступ запрещён (BigQuery) | Не хватает BigQuery Data Viewer на наборе или BigQuery Job User в проекте. |
| Запрос прочитал бы слишком много | Лимит стоимости прервал его до начисления платы. Сократите временное окно. |
| нет сеансов в окне | Не ошибка. В полученных днях не было сеанса с согласием. |