Диагноз подтверждён данными трёх независимых источников (Google Ads API, GA4 API, данные Altegio). Кратко:
google/cpc в свойстве бронирования 375389843 упали с 3 025 (сен 2025) до 2 285 (апр 2026, −25%), а сессии odessa-mama.cz / referral выросли с 2 660 до 3 628 (+36%) — математически инверсированные кривые, суммарный поток стабилен ~5 700–5 900 сессий/мес._gl-параметр линкера GA4 теряется при переходе odessa-mama.cz → n.alteg.io (iframe). Бронирование регистрируется в alteg.io-свойстве как referral, а не cpc.Восемь независимых углов расследования / устранения. Каждый самодостаточен — их можно распределить между членами команды и выполнять параллельно (рекомендации по параллелизации — в разделе «Порядок действий»).
| Угол | Владелец | Приоритет |
|---|---|---|
| 1. GTM/GA4 кросс-доменный линкер на odessa-mama.cz | Разработчик + GTM-специалист | P0 |
| 2. iframe-граница n.alteg.io (ограничение третьей стороны) | Разработчик | P0 |
| 3. Авто-теггинг Google Ads и путь GCLID | Менеджер Google Ads | P0 |
| 4. Consent Mode V2 / CMP | Разработчик + GTM-специалист | P0 |
| 5. Фрагментация GA4-свойств | GTM/GA4-специалист | P1 |
| 6. Конверсионное действие 6555949568: конфигурация | Менеджер Google Ads | P0 |
| 7. Резервный путь: офлайн-импорт конверсий | Разработчик + Менеджер Google Ads | P1 |
| 8. Харнес верификации и измерения восстановления | GTM/GA4-специалист | P0 (сопровождает всё) |
Тег GA4 на odessa-mama.cz не сконфигурирован для кросс-доменного отслеживания с доменами alteg.io / n.alteg.io. Из-за этого при переходе на iframe бронирования браузер не получает параметр _gl, который содержит идентификатор сессии/клика, и свойство 375389843 начинает новую сессию с источником odessa-mama.cz / referral.
G-XXXXXXX для свойства 389989873).linker.domains.alteg.io и n.alteg.io. Если поле пустое или список не содержит этих доменов — линкер не настроен.n.alteg.io. Проверить URL первого запроса к n.alteg.io: должен содержать параметр _gl=. Если _gl= отсутствует — линкер не работает.Вариант A — конфигурация в GTM (рекомендуется, без правки кода):
alteg.io и n.alteg.io.Если используется gtag.js без GTM:
<script>
gtag('config', 'G-XXXXXXXXXX', {
linker: {
domains: ['alteg.io', 'n.alteg.io'],
accept_incoming: true
}
});
</script>
accept_incoming: true — обязателен для того, чтобы свойство 375389843 на стороне Altegio принимало входящий _gl и восстанавливало сессию. Если у команды нет доступа к GTM Altegio — этот флаг не поможет (см. Угол 2).
Вариант B — объединение свойств (надёжнее долгосрочно):
Перевести оба домена в единое GA4-свойство. Это требует:
_gl= (значение длинное, вида _gl=1*xyz...).session_source = google / cpc для тестового перехода из платного объявления.Даже при корректно настроенном линкере на стороне odessa-mama.cz (Угол 1) параметр _gl должен быть принят и обработан Altegio-виджетом на n.alteg.io. Если Altegio использует <iframe> с атрибутом sandbox или иным ограничением — браузер может блокировать передачу куки сессии. Альтернативный сценарий: _gl присутствует в URL iframe, но SPA Altegio его игнорирует и не передаёт в GA4.
Шаг 1 — проверить атрибуты iframe:
В исходном коде страницы odessa-mama.cz (View Source или DevTools → Elements) найти элемент <iframe>, ведущий на n.alteg.io. Проверить атрибуты:
sandbox без allow-same-origin — блокирует куки.allow-same-origin отсутствует в списке sandbox значений.referrerpolicy="no-referrer" — обрежет referer.Шаг 2 — проверить URL iframe при загрузке:
DevTools → Network → отфильтровать n.alteg.io:
| Состояние | Как выглядит URL первого запроса к n.alteg.io |
|---|---|
| Линкер работает | https://n.alteg.io/...?_gl=1*abc123*... |
| Линкер не передаётся | https://n.alteg.io/... (без _gl=) |
Если _gl= присутствует в URL — линкер на стороне odessa-mama.cz работает. Следующий вопрос: читает ли Altegio SPA этот параметр и передаёт ли в GA4?
Шаг 3 — проверить gtag на стороне n.alteg.io:
В DevTools → Sources найти загруженные JS-файлы n.alteg.io. Проверить, инициализирован ли там gtag('config', 'G-...') и есть ли параметр accept_incoming: true в конфигурации. Если у команды нет доступа к коду Altegio — этот шаг требует запроса к поддержке Altegio.
Шаг 4 — проверить GA4 DebugView свойства 375389843 во время тест-бронирования:
После нажатия «Забронировать» в DebugView должно появиться событие session_start. Проверить параметр session_source:
google / cpc → линкер работает конец-в-конец.odessa-mama.cz / referral → линкер передаётся, но Altegio не принимает _gl.(direct) / (none) → _gl вообще не передаётся.Сценарий A: iframe src не содержит _gl= — решается через Угол 1 (настройка линкера на odessa-mama.cz).
Сценарий B: _gl= присутствует в URL iframe, но Altegio не обрабатывает:
Это ограничение третьей стороны — код Altegio вне контроля команды. Действия:
https://n.alteg.io/.... Мы используем Google Analytics 4 cross-domain tracking. Параметр _gl присутствует в URL iframe при загрузке (проверено в DevTools). Необходимо подтвердить: (1) обрабатывает ли ваш SPA параметр _gl в URL при инициализации? (2) настроен ли ваш тег GA4 с accept_incoming: true для домена odessa-mama.cz? Если нет — возможно ли включить это в конфигурации виджета или через настройки аккаунта Altegio?»
Сценарий C: iframe sandbox блокирует куки:
Убрать ограничительные атрибуты или добавить allow-same-origin в значение sandbox.
URL первого запроса к n.alteg.io содержит _gl= AND в GA4 DebugView свойства 375389843 событие session_start атрибутируется как google / cpc (а не referral).
Авто-теггинг Google Ads добавляет параметр gclid к URL целевой страницы после клика по объявлению. Если авто-теггинг отключён или параметр gclid теряется на промежуточных редиректах — GA4 не может восстановить атрибуцию даже при работающем линкере.
customer.auto_tagging_enabled = TRUE — авто-теггинг включён. Эта часть в порядке.
Проверка выживаемости gclid до кнопки бронирования:
?gclid=testvalue к URL landing page для проверки механики без траты бюджета).?gclid= (или &gclid=)._gl=....Если gclid есть в landing URL но _gl= нет в iframe URL — проблема в линкере (Угол 1).
Если gclid отсутствует в landing URL — проверить Tracking Template и редиректы.
Проверка Tracking Template:
Google Ads → выбрать кампанию → Settings → Additional settings → URL options → Tracking Template. Если установлен tracking template с промежуточным редиректом на сторонний click-tracker — убедиться, что этот tracker пробрасывает {gclid} на финальный URL. Если нет — GCLID теряется до попадания пользователя на сайт.
Проверка Parallel Tracking:
Google Ads → Account Settings → Parallel Tracking. Если включён с кастомным click measurement URL — аналогичная проверка пробрасывания gclid.
{gclid} как явный ValueTrack параметр в URL.gclid на {lpurl}.После клика на объявление: URL целевой страницы содержит gclid=. GA4 DebugView на odessa-mama.cz показывает page_location с gclid= в параметрах.
Чехия входит в ЕС. Без корректной реализации Consent Mode V2 пользователи, отклонившие cookies, полностью выпадают из атрибуции и не дают даже смоделированных конверсий. Google начал принудительно применять это требование с января 2026 — что совпадает с началом обвала конверсий. По данным отраслевых исследований, 30–70% пользователей в ЕС отклоняют cookies.
Шаг 1 — наличие consent defaults в коде сайта:
В исходном коде odessa-mama.cz (View Source) или в GTM Preview проверить — вызывается ли до загрузки GA4-тега:
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied'
});
Если этого вызова нет до инициализации GA4 — CM V2 не реализован. Признак в GTM: тег типа «Consent Initialization» с триггером «Consent Initialization - All Pages».
Шаг 2 — проверить наличие CMP:
Открыть odessa-mama.cz в новом инкогнито-окне. Должен появиться GDPR-баннер с возможностью выбора «Принять» / «Отклонить». Если баннера нет — CMP отсутствует.
Шаг 3 — проверить смоделированные конверсии в GA4:
GA4 Admin → Data Settings → Data Collection → Modeling. Если раздел недоступен или показывает «Not eligible» — CM V2 не настроен.
Шаг 4 — проверить Enhanced Conversions в Google Ads:
Google Ads → Tools → Conversions → Settings → Enhanced Conversions for Web. Если не включено — смоделированные конверсии для пользователей с ad_storage: denied не активированы.
Шаг A — установить consent defaults в GTM:
Создать тег типа Custom HTML с триггером Consent Initialization - All Pages (или All Pages с высоким приоритетом срабатывания — до GA4 Config). Содержимое тега:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'wait_for_update': 500
});
</script>
Этот тег должен срабатывать до тега GA4 Configuration. Проверить порядок в GTM Tag Sequencing.
Шаг B — интегрировать CMP:
Подключить CookieBot, Usercentrics, Didomi или аналогичный GDPR-совместимый CMP. CMP при принятии cookies должен вызывать:
gtag('consent', 'update', {
'ad_storage': 'granted',
'analytics_storage': 'granted',
'ad_user_data': 'granted',
'ad_personalization': 'granted'
});
Большинство CMP имеют готовую интеграцию с GTM через Consent Mode API.
Шаг C — включить Enhanced Conversions в Google Ads:
Google Ads → Tools → Conversions → Settings → Enhanced Conversions for Web: включить.
_ga и _gcl_aw не должны устанавливаться.Текущая архитектура: два отдельных GA4-свойства для двух доменов одного бизнеса — 389989873 (odessa-mama.cz) и 375389843 (alteg.io). Конверсионное действие 6555949568 привязано к свойству 375389843. Ни одно из свойств, вероятно, не сконфигурировано с указанием доменов другого — что создаёт структурную точку сбоя.
Проверить конфигурацию cross-domain в свойстве 375389843:
GA4 Admin → Data Streams → выбрать Web-поток → Configure tag settings → Configure your domains. Проверить: есть ли в списке домен odessa-mama.cz? Если нет — свойство не настроено принимать линкер от odessa-mama.cz.
Проверить конфигурацию cross-domain в свойстве 389989873:
Аналогично: должны присутствовать alteg.io и n.alteg.io.
Проверить связку GA4 → Google Ads:
GA4 Admin → свойство 375389843 → Product Links → Google Ads Links. Должна быть активная связка с аккаунтом 9667368025. Это обязательное условие для импорта конверсионного действия 6555949568.
Краткосрочное решение (параллельно с Углом 1):
odessa-mama.cz.alteg.io и n.alteg.io.Это позволяет обоим свойствам обрабатывать cross-domain _gl-параметр корректно.
Долгосрочное решение (рекомендуется, снижает риск повторного разрыва):
Объединить оба домена в единое GA4-свойство:
odessa-mama.cz и n.alteg.io.booked из объединённого свойства.После настройки: в GA4 DebugView тест-бронирования сессия в свойстве 375389843 показывает session_source = google / cpc.
Конверсионное действие «odessa-mama.cz -alteg.io - GA4 (web) booked» активно и является первичной целью Smart Bidding. Большинство технических параметров (окно атрибуции 90 дней, MANY_PER_CLICK) — рабочие. Модель атрибуции требует проверки в UI (API возвращает UNKNOWN). Главная проблема: аккаунт перегружен шумовыми первичными целями (8 действий вместо рекомендуемых 2–3), что деградирует сигнал для алгоритма.
Конфигурация конверсионного действия 6555949568:
| Параметр | Значение API | Расшифровка |
|---|---|---|
status |
2 | ENABLED — активен |
primary_for_goal |
TRUE | Первичная цель Smart Bidding |
attribution_model |
1 | UNKNOWN — API не возвращает читаемую модель; фактическая модель требует проверки в UI |
click_through_lookback_window_days |
90 | Окно атрибуции по кликам: 90 дней |
view_through_lookback_window_days |
1 | Окно по показам: 1 день |
counting_type |
3 | MANY_PER_CLICK — каждый клик может порождать несколько конверсий |
Справка по enum attribution_model (Google Ads API v21, ресурс ConversionAction):
| Значение | Константа | Значение |
|---|---|---|
| 0 | UNSPECIFIED | Не задан |
| 1 | UNKNOWN | API не может вернуть значение (≠ Data-Driven) |
| 100 | EXTERNAL | Внешняя атрибуция |
| 101 | GOOGLE_ADS_LAST_CLICK | Last Click |
| 102 | FIRST_CLICK | First Click |
| 103 | LINEAR | Linear |
| 104 | TIME_DECAY | Time Decay |
| 105 | POSITION_BASED | Position-Based |
| 106 | DATA_DRIVEN | Управляемая данными |
attribution_model_settings.attribution_model = 1 означает UNKNOWN — это технический артефакт API, не признак Data-Driven модели. DATA_DRIVEN соответствует значению 106. Фактическую модель атрибуции для действия 6555949568 необходимо проверить вручную в UI:
90-дневное окно и MANY_PER_CLICK — подходящие настройки для сервисного бизнеса с повторными визитами. Модель атрибуции требует верификации.
Проблема: перегруженность Smart Bidding шумовыми первичными целями.
Полный список ENABLED конверсионных действий с primary_for_goal = TRUE (из live API, session 2039):
| ID | Название | attribution_model | lookback (клик) | Рекомендация |
|---|---|---|---|---|
| 6555949568 | odessa-mama.cz -alteg.io - GA4 (web) booked | UNKNOWN (1) — проверить UI | 90 дней | Оставить PRIMARY |
| 883097740 | Calls from ads | LAST_CLICK (101) | 30 дней | Оставить PRIMARY |
| 816780702 | Clicks to call | LAST_CLICK (101) | 30 дней | Перевести в SECONDARY |
| 804194344 | Local actions - Directions | LAST_CLICK (101) | 30 дней | Перевести в SECONDARY |
| 804306621 | Local actions - Other engagements | LAST_CLICK (101) | 30 дней | Перевести в SECONDARY |
| 887101386 | Store visits | UNKNOWN (1)* | 30 дней | Перевести в SECONDARY |
| 7456294537 | YouTube follow-on views | LAST_CLICK (101) | 30 дней | Перевести в SECONDARY |
| 807483557 | Звонок с обьявления | LAST_CLICK (101) | 30 дней | Перевести в SECONDARY или REMOVED (дублирует 883097740) |
*Store visits (887101386): attribution_model=1 — значение UNKNOWN по API v21 enum. Store Visits используют собственную методологию Google; фактическая модель атрибуции через этот API-field не читается.
Итого PRIMARY: 8 действий. Цель — 2 (booked + Calls from ads).
В Google Ads UI: Tools & Settings → Conversions → выбрать каждое из 6 шумовых действий → Edit → Goal and action optimization → Secondary action (не Primary).
Порядок изменений: сначала перевести шумовые в Secondary, подождать 24 часа, убедиться что алгоритм не показал аномального поведения, затем продолжать с другими.
Google Ads → Tools → Conversions: в столбце «Goal» только booked и Calls from ads имеют статус Primary.
Если Altegio — закрытая система, которая не может передавать _gl-параметр (ограничение iframe или политика провайдера) — cross-domain атрибуция через GA4 физически невозможна. В этом случае единственный надёжный путь — Google Ads Click Conversion (Offline Conversion Import): фиксировать gclid на стороне odessa-mama.cz в момент перехода к бронированию, хранить его, а подтверждённое бронирование загружать в Google Ads как офлайн-конверсию.
[Клик на рекламу]
|
v
[Landing page odessa-mama.cz]
URL: ?gclid=CjwK...
|
v
[JavaScript capture_gclid.js]
gclid = new URLSearchParams(location.search).get('gclid');
if (gclid) {
localStorage.setItem('gclid', gclid);
localStorage.setItem('gclid_ts', Date.now());
// TTL: 90 дней (соответствует lookback window)
document.cookie = `gclid=${gclid}; max-age=7776000; path=/; SameSite=Lax`;
}
|
v
[Нажатие кнопки "Забронировать"]
gclid = localStorage.getItem('gclid') || getCookie('gclid');
// Проверить TTL: Date.now() - gclid_ts < 90*24*3600*1000
// Если Altegio поддерживает кастомные URL-параметры:
iframe.src = `https://n.alteg.io/...?ref_gclid=${gclid}`;
|
v
[Altegio: бронирование подтверждено]
Webhook / API callback при событии booking.confirmed.
Если Altegio возвращает ref_gclid в payload — отлично.
Если нет — postMessage из iframe при завершении бронирования.
|
v
[Backend / Google Sheets / Webhook processor]
Хранение: gclid, conversion_time, booking_id, value (опционально).
|
v
[Google Ads: Offline Conversion Import]
Ежедневная загрузка через CSV или API.
| Поле | Источник | Пример |
|---|---|---|
gclid |
localStorage / cookie odessa-mama.cz | CjwKCAiA... |
conversion_action |
Resource name действия в Google Ads | customers/9667368025/conversionActions/6555949568 |
conversion_date_time |
Altegio webhook timestamp | 2026-05-19 14:30:00+02:00 |
conversion_value |
Опционально | 450 (CZK) |
currency_code |
CZK |
Окно импорта: Google Ads принимает офлайн-конверсии в течение 90 дней от клика. Это соответствует текущему click_through_lookback_window_days = 90 действия 6555949568 (подтверждено live API, session 2039).
При обращении в техподдержку Altegio запросить:
?ref_gclid=)?booking.confirmed кастомные параметры, переданные при инициализации виджета?Вариант 1 — CSV загрузка (самый простой):
Google Ads → Tools → Conversions → Uploads → Upload file.
Формат файла:
Parameters:TimeZone=+0200
Google Click ID,Conversion Name,Conversion Time,Conversion Value,Conversion Currency
CjwK...,odessa-mama.cz -alteg.io - GA4 (web) booked,"2026-05-19 14:30:00+02:00",450,CZK
Загружать ежедневно. Можно автоматизировать через Google Sheets → Apps Script.
Вариант 2 — Google Ads API (производственный):
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_dict(credentials)
service = client.get_service("ConversionUploadService")
click_conversion = client.get_type("ClickConversion")
click_conversion.gclid = "CjwK..."
click_conversion.conversion_action = (
"customers/9667368025/conversionActions/6555949568"
)
click_conversion.conversion_date_time = "2026-05-19 14:30:00+02:00"
click_conversion.currency_code = "CZK"
click_conversion.conversion_value = 450.0
request = client.get_type("UploadClickConversionsRequest")
request.customer_id = "9667368025"
request.conversions.append(click_conversion)
request.partial_failure = True
response = service.upload_click_conversions(request)
Резервный путь активируется если после выполнения Углов 1–2 GA4 DebugView по-прежнему показывает session_source = odessa-mama.cz / referral — т.е. Altegio физически не принимает _gl.
Офлайн-импорт можно развернуть параллельно с GA4 линкером как страховку — это не конфликт, это дополнительный слой атрибуции.
Google Ads → Tools → Conversions → Uploads: статус загрузки Successful без ошибок. Через 3–5 дней после первой загрузки: в отчёте кампаний в столбце All Conversions появятся конверсии, атрибутированные к реальным кликам.
Без структурированного тест-протокола невозможно определить, какое из исправлений сработало, и убедиться что атрибуция восстановилась полностью. Этот харнес выполняется после каждого существенного изменения из Углов 1–6.
Шаг 1 — подготовка:
Открыть Chrome в режиме инкогнито (чистые куки). Включить GA4 DebugView для обоих свойств.
Шаг 2 — симуляция платного клика:
Вариант A: кликнуть на реальное платное объявление Google Ads (URL будет содержать gclid=).
Вариант B (без траты бюджета): открыть страницу с параметрами:
https://odessa-mama.cz/?gclid=testvalue123&utm_source=google&utm_medium=cpc
Примечание: ручной gclid не создаст реальную конверсию в Google Ads, но позволяет проверить работу линкера и GA4 без расхода бюджета.
Шаг 3 — контрольные точки на главном сайте:
| Что проверить | Ожидаемый результат (исправлено) |
|---|---|
| URL landing page | Содержит gclid= |
| Application → Cookies → odessa-mama.cz | Присутствует _ga и _gcl_aw |
| GA4 DebugView 389989873 | page_view, session_source = google / cpc |
| Tag Assistant | Тег GA4 Config срабатывает, linker.domains содержит alteg.io |
Шаг 4 — переход к бронированию:
n.alteg.io.| Состояние | URL запроса к n.alteg.io |
|---|---|
| Линкер работает (цель) | https://n.alteg.io/...?_gl=1*abc... |
| Линкер не передаётся (текущий баг) | https://n.alteg.io/... (без _gl=) |
Шаг 5 — контрольные точки в iframe / свойстве бронирования:
| Что проверить | Ожидаемый результат (исправлено) | Текущий симптом (сломано) |
|---|---|---|
GA4 DebugView 375389843: session_start |
session_source = google / cpc |
session_source = odessa-mama.cz / referral |
| Атрибуты iframe в DevTools → Elements | Нет sandbox без allow-same-origin |
Возможно присутствие ограничений |
Шаг 6 — завершить бронирование:
Дойти до финального шага бронирования (события booked в GA4 375389843).
| Что проверить | Ожидаемый результат |
|---|---|
GA4 DebugView 375389843: событие booked |
session_source = google / cpc |
session_id параметр |
Совпадает с сессией на odessa-mama.cz |
Шаг 7 — проверить Google Ads Conversion Diagnostics:
Google Ads → Tools → Conversions → выбрать действие 6555949568 → Diagnostics. Через 24–48 часов после тест-бронирования должно появиться событие со статусом Received без ошибок.
| Угол | Критерий успеха |
|---|---|
| 1 (линкер GTM) | URL iframe содержит _gl= при переходе на n.alteg.io |
| 2 (Altegio iframe) | GA4 DebugView 375389843: session_source = google / cpc |
| 3 (GCLID) | URL landing page содержит gclid= после клика на объявление |
| 4 (CM V2) | Consent defaults срабатывают до GA4; через 14 дней — Modeled conversions в Google Ads |
| 5 (GA4 свойства) | В обоих свойствах настроен список cross-domain доменов |
| 6 (конв. действие) | В Google Ads Conversions: PRIMARY только booked и Calls from ads |
| 7 (офлайн) | Upload статус Successful; конверсии в отчётах через 3–5 дней |
Сравнивать с baseline апреля 2026. Все данные ниже — из live API-запросов session 2038–2039.
| Метрика | Baseline апрель 2026 | Ориентир через 14 дней |
|---|---|---|
| Конверсии Google Ads (действие 6555949568) | 96/мес | ≥400/мес (уровень до деградации) |
google/cpc сессии в свойстве 375389843 |
2 285/мес | ≥3 000/мес |
odessa-mama.cz / referral в 375389843 |
3 628/мес | ≤2 000/мес (снизятся по мере восстановления атрибуции) |
| Сумма обоих источников | ~5 913/мес | ~5 900/мес (трафик не должен измениться — только перераспределение атрибуции) |
| Реальные бронирования (Altegio) | ~1 929/мес | Без изменений (атрибуция не влияет на реальный спрос) |
Следующие углы независимы и не блокируют друг друга:
Результат DebugView определяет приоритет следующего шага:
session_source = google / cpc в свойстве 375389843:session_source = odessa-mama.cz / referral (после успешного Угла 1):_gl= передаётся в URL iframe, но Altegio не принимает. Параллельно: отправить запрос в Altegio (Угол 2) + начать разработку офлайн-импорта (Угол 7). Срок реализации Угла 7 — 1 неделя.
Углы 1, 2, 3, 4, 6 не зависят друг от друга и могут выполняться в один день разными специалистами. Угол 8 — сквозной, запускается после каждого изменения. Угол 5 — административная предпосылка для Угла 1 (добавить домены в GA4 Admin до публикации GTM).