# Google Ads: как работает коннектор

В этой статье вы узнаете, как коннектор Google Ads выгружает данные в хранилище ROMI center: какие отчёты доступны, с какой периодичностью идёт выгрузка и откуда берутся UTM-метки. Полный список полей — в статье [Google Ads: описание выгружаемых полей](https://help-ru.romi.center/google-ads-opisanie-vygruzhaemyh-polej).

## Четыре отчёта — главная особенность

Одно подключение Google Ads может собирать до четырёх независимых отчётов, каждый в свою таблицу. Отчёты отличаются уровнем детализации: чем ниже уровень, тем больше строк и тем дороже выгрузка.

| Отчёт | Суффикс таблицы | По умолчанию | Что даёт |
| --- | --- | --- | --- |
| Целевые страницы | без суффикса | включён | исторический отчёт: строка на посадочную страницу, UTM берутся прямо из адреса |
| Кампании | `_campaign` | выключен | строка на кампанию — самый компактный |
| Объявления | `_ads` | выключен | строка на объявление, с полями группы и кампании |
| Группы объявлений | `_adgroups` | выключен | строка на группу, с полями кампании |

Три новых отчёта доступны только для хранилища ROMI center — на других приёмниках их нельзя включить.

> **Важно**
> Отчёт по целевым страницам завышает показы: одна и та же реклама попадает в несколько строк с разными посадочными. Замер на боевом аккаунте показал разницу в показах +7,6% между отчётом по целевым страницам и тремя остальными при одинаковом расходе. Для сверки метрик между собой используйте кампании, объявления или группы, а не целевые страницы.

Каждый включённый отчёт — отдельное задание на каждый день. При всех четырёх включённых отчётах ночной прогон создаёт 7 дней × 4 = 28 заданий на подключение. Если выключены все четыре — заданий не создаётся вовсе, выгрузка молча не идёт.

## Периодичность

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

## Как сохраняет данные

*   **Куда:** хранилище ROMI center на движке ClickHouse.
*   **Имена таблиц:** целевые страницы — `google_ads_<клиентский аккаунт>_<id подключения>`; остальные отчёты — `google_ads_<клиентский аккаунт>_<id подключения>_<суффикс>` (например `google_ads_1414428795_57_campaign`).
*   **Структура таблицы:** движок `MergeTree`, сортировка по `stats_day`, разбиение на партиции по дню статистики.
*   **Порядок колонок:** общие поля (`stats_day`, `utm_*`, `cost`) → колонки конвертации валют → выбранные поля отчёта → метрики → служебные `rc_import_id`, `rc_created_at`.
*   **Структура догоняется, а не пересоздаётся.** Недостающие колонки добавляются при очередной выгрузке, существующие не удаляются. Выключение поля или целого отчёта таблицу не трогает — она просто перестаёт наполняться.

## Перезапись за 7 дней

Google Ads уточняет статистику задним числом, поэтому каждую ночь перезагружаются последние 7 завершённых дней. Каждый день каждого отчёта — отдельное задание: если данных нет, день пропускается и прежние строки сохраняются; если данные есть, весь день удаляется и записывается заново в своей таблице. Отчёты между собой не связаны: сбой одного не мешает остальным, и перезалив одного не трогает данные других.

Ручная перезагрузка за произвольный период доступна в кабинете и ставит такие же посуточные задания по всем включённым отчётам. При включённой опции «удалить данные» таблицы включённых отчётов сносятся целиком и создаются заново первой же выгрузкой; таблицы выключенных отчётов остаются нетронутыми.

## Дополнительные настройки

| Настройка | Что делает |
| --- | --- |
| Профиль и клиентский аккаунт | Профиль — вход через Google (в том числе управляющий аккаунт MCC); клиентский аккаунт — конкретный рекламный кабинет под ним. Клиентский аккаунт входит в имена таблиц. Доступ проверяется отдельно к обоим уровням. |
| Набор отчётов | Четыре независимых переключателя. Целевые страницы включены по умолчанию, остальные три — выключены. Каждый включённый отчёт увеличивает число заданий и нагрузку на API. |
| Выбор полей | Свой для каждого отчёта: задаёт набор колонок конкретной таблицы. Обязательные поля выгружаются всегда. |
| НДС | Расходы приходят из Google Ads без НДС; при включённой настройке ROMI center добавляет его по указанной ставке. Схема одна для всех подключений — в отличие от Яндекс Директа, где у старых подключений расчёт обратный. |
| Конвертация валют | На каждую выбранную валюту добавляется колонка `cost_converted_<валюта>` — расход, пересчитанный по курсу на дату строки. Исходная валюта — валюта рекламного аккаунта Google Ads; если её не удалось получить, коннектор считает её рублёвой. |
| UTM-метки для всех кампаний | Подменяет `utm_source`, `utm_medium`, `utm_campaign` заданными значениями во всех строках. |
| UTM-метки для выбранных кампаний | То же, но покампанийно; индивидуальное значение приоритетнее общего. |
| Пауза коннектора | Останавливает создание новых заданий. |

> **Примечание**
> Настройка «Фильтр кампаний» осталась от старого интерфейса: новый визард её не задаёт и при каждом сохранении обнуляет — после правки подключения через визард выгружаются все кампании аккаунта.

Отозванный доступ к профилю, к клиентскому аккаунту или к аккаунту под управляющим профилем переводит подключение в состояние ошибки с уведомлением; до починки выгрузка не идёт.

## Откуда берутся UTM-метки

Механика разная в разных отчётах — это важно при сверке таблиц между собой.

**Отчёт по целевым страницам.** Метки читаются прямо из развёрнутого адреса посадочной страницы — то есть из того, что реально увидел пользователь.

**Три остальных отчёта.** Посадочной страницы на этих уровнях нет, поэтому адрес восстанавливается по правилам склейки Google: собственный адрес объявления → хвост шаблона отслеживания после `{lpurl}` → суффикс финального URL. Каждая часть ищется по каскаду уровней — объявление → группа → кампания → аккаунт (для отчёта по группам — группа → кампания → аккаунт, для отчёта по кампаниям — кампания → аккаунт), побеждает нижний непустой. Всё, что в шаблоне отслеживания стоит до `{lpurl}`, принадлежит трекеру и до сайта не доходит.

Значения по умолчанию для меток, которых не нашлось: `rc-google_ads` (`utm_source`), `rc-cpc` (`utm_medium`), название кампании (`utm_campaign`), `term` (`utm_term`), `content` (`utm_content`).

Шаблонные параметры ValueTrack (`{campaignid}`, `{campaign}`, `{adgroupid}`, `{adgroup}`, `{creative}`, `{device}`, `{network}`, `{keyword}`, `{matchtype}`) раскрываются значениями из отчёта — но только если соответствующее поле есть в отчёте: например, `{creative}` в отчётах групп и кампаний не раскрывается, там нет идентификатора объявления.

Строки, где меток не нашлось или где остался нераскрытый шаблон, помечают подключение признаком «метки собрались не полностью».

> **Примечание**
> У Google Ads нет метки `utm_id` — в отличие от Яндекс Директа, коннектор её не хранит.

## Технические поля

В таблице каждого отчёта создаются два служебных поля:

| Поле | Тип | Что означает |
| --- | --- | --- |
| `rc_import_id` | Целое число | Идентификатор прогона выгрузки, которым записана строка. |
| `rc_created_at` | Дата и время | Момент записи строки в хранилище (не время события). При перезаписи дня обновляется у всех строк дня этого отчёта. |

В таблицах Google Ads нет `rc_updated_at` и `rc_datasource` — строки не обновляются точечно, а у каждого отчёта каждого подключения своя таблица.
