GA4 и аналитика
Страница фиксирует рабочую схему аналитики ShopStory и правила доступа для операторов. Не храните private key, service account JSON или полный ~/.codex/config.toml в этом репозитории.
Текущая GA4 property
Актуально на 2026-06-15.
| Параметр | Значение |
|---|---|
| GA4 property | properties/294769093 |
| Account | accounts/180274175 |
| Display name | Shopstory.live (Только Сайт) - GA4 |
| Time zone | Europe/Moscow |
| Currency | RUB |
| Service level | GOOGLE_ANALYTICS_STANDARD |
MCP-доступ
Codex использует read-only MCP server mcp-server-google-analytics. Он читает данные через Google Analytics Data API и не настраивает события, конверсии или пользователей GA4.
Локальная схема конфигурации:
[mcp_servers.google-analytics]
command = "/usr/local/bin/npx"
args = ["-y", "mcp-server-google-analytics"]
[mcp_servers.google-analytics.env]
GA_PROPERTY_ID = "294769093"
GOOGLE_CLIENT_EMAIL = "<service-account>@<project>.iam.gserviceaccount.com"
GOOGLE_PRIVATE_KEY = """
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
"""
Правила:
GOOGLE_PRIVATE_KEYдолжен быть PKCS8 private key с сохраненными переносами строк.- Файл
~/.codex/config.tomlдолжен быть доступен только локальному пользователю:chmod 600 ~/.codex/config.toml. - Service account key JSON не должен оставаться в Downloads, репозитории или issue/PR-комментариях.
- Service account должен иметь минимальный доступ к GA4 property: Viewer для чтения отчетов.
- После изменения
~/.codex/config.tomlперезапускайте Codex, иначе текущий MCP transport может держать старый env.
Проверка работоспособности
После перезапуска Codex выполните минимальный read-smoke через MCP:
getEvents({
startDate: "2026-05-19",
endDate: "2026-06-15"
})
getPageViews({
startDate: "2026-05-19",
endDate: "2026-06-15",
dimensions: ["pagePath"]
})
getActiveUsers({
startDate: "2026-05-19",
endDate: "2026-06-15"
})
Ожидаемый результат: JSON-ответы с rowCount, dimensionHeaders, metricHeaders и строками данных. Ошибок DECODER routines::unsupported, ECONNREFUSED 0.0.0.0:443 и Transport closed быть не должно.
Контрольная проверка от 2026-06-15:
| MCP tool | Результат |
|---|---|
getEvents | rowCount: 81 |
getPageViews | rowCount: 21 |
getActiveUsers | rowCount: 13 |
Топ страниц за 2026-05-19 - 2026-06-15:
| Page path | Page views |
|---|---|
/product-card-ai-video | 35 |
/blog/category/cases | 12 |
/streams | 11 |
/ | 9 |
/ai-social-video | 8 |
/for-marketplaces-sellers | 7 |
/blog | 6 |
/pricing | 6 |
События
События, уже видимые в GA4 на 2026-06-15:
page_viewscroll_depthuser_engagementsession_startfirst_visitform_viewform_startheader_ai_waitlist_clickheader_live_lead_clickhero_ai_product_page_clickintegration_tab_select
Целевой набор key events для growth-аналитики:
| Событие | Назначение |
|---|---|
form_submit | Отправка формы лида |
pricing_click | Переход к тарифам или явный клик по pricing CTA |
demo_request | Запрос демо |
contact_email_click | Клик по email |
contact_telegram_click | Клик по Telegram |
contact_whatsapp_click | Клик по WhatsApp |
calendar_booking | Бронирование слота в календаре |
case_cta_click | CTA внутри кейсов |
Если событие должно считаться конверсией, настройте его как key event в GA4 UI или через Google Analytics Admin API. Текущий mcp-server-google-analytics этого не делает.
Диагностика
| Симптом | Причина | Действие |
|---|---|---|
connect ECONNREFUSED 0.0.0.0:443 | DNS/VPN/AdGuard подменяет Google API на 0.0.0.0 | Отключите VPN/DNS-фильтр или разрешите analyticsdata.googleapis.com; проверьте dscacheutil -q host -a name analyticsdata.googleapis.com |
DECODER routines::unsupported | Невалидный GOOGLE_PRIVATE_KEY | Выпустите новый service account key, сохраните многострочный PKCS8 key, проверьте через openssl pkey -in <key-file> -noout |
PERMISSION_DENIED | Service account не добавлен в GA4 property или указан неверный GA_PROPERTY_ID | Проверьте GA_PROPERTY_ID = "294769093" и доступ service account в GA4 Access Management |
Transport closed сразу после правки config | Codex держит старый MCP process/transport | Перезапустите Codex, затем повторите MCP smoke-check |
| Пустые отчеты без ошибки | Неверный date range, property или фильтр dimension/metric | Проверьте период и выполните сначала getPageViews без дополнительных фильтров |
DNS и API endpoints
Для MCP нужны исходящие HTTPS-запросы к:
analyticsdata.googleapis.comanalyticsadmin.googleapis.comтолько для Admin API-проверок и управления доступомoauth2.googleapis.comдля service-account JWT token exchange
Для клиентского GA4-трекинга на сайте дополнительно нужны CSP-разрешения для Google Tag Manager и Google Analytics. См. CSP Headers.