Анализ Error Sessions (сессии с ошибками JavaScript)

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Анализ Error Sessions (сессии с ошибками JavaScript)
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1358
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1251
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    957
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1188
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    929
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947

Анализ Error Sessions (сессии с ошибками JavaScript)

Представьте: пользователь кладёт товар в корзину, нажимает «Оформить заказ» — и ничего не происходит. Консоль пестрит Cannot read property 'X' of undefined, checkout завис. Вы теряете деньги, а пользователь уходит к конкурентам. Мы помогаем выявить такие ошибки и устранить их до того, как они обнулят метрики.

Error Sessions — сессии, где произошла одна или несколько JavaScript-ошибок. Наш опыт показывает: без системного анализа вы пропускаете 60–80% критических багов, которые напрямую режут конверсию. Мы фильтруем, анализируем и приоритизируем эти сессии, используя Sentry и GA4. Sentry с Replay ускоряет отладку в 5–10 раз по сравнению с простым логгированием.

Настройка перехвата JavaScript-ошибок

Перехватываем все необработанные ошибки, Promise rejection и сбои fetch/XHR. Ключевой элемент — правильная настройка source maps: Sentry автоматически деобфусцирует стек, показывая исходный код, а не минифицированные строки. Пример интеграции:

// Перехват необработанных ошибок
window.addEventListener('error', function(event) {
  const errorInfo = {
    message: event.message,
    source: event.filename?.split('/').pop(),
    line: event.lineno,
    col: event.colno,
    stack: event.error?.stack?.slice(0, 500),
    page: window.location.pathname,
    user_agent: navigator.userAgent.slice(0, 100)
  }

  // Отправить в GA4
  gtag('event', 'js_error', errorInfo)

  // Отправить в Sentry/Bugsnag
  Sentry.captureException(event.error, {
    extra: errorInfo
  })
})

// Перехват unhandled Promise rejections
window.addEventListener('unhandledrejection', function(event) {
  gtag('event', 'promise_rejection', {
    message: event.reason?.message || String(event.reason),
    page: window.location.pathname
  })
})

// Перехват ошибок в fetch/XHR
const originalFetch = window.fetch
window.fetch = async function(...args) {
  try {
    const response = await originalFetch(...args)
    if (!response.ok) {
      gtag('event', 'fetch_error', {
        url: args[0].toString().split('?')[0],
        status: response.status,
        page: window.location.pathname
      })
    }
    return response
  } catch (err) {
    gtag('event', 'fetch_exception', {
      url: args[0].toString().split('?')[0],
      message: err.message
    })
    throw err
  }
}

Более подробно о window.onerror читайте в документации MDN. Как указано в документации Sentry, интеграция с source maps и Replay ускоряет отладку в 5–10 раз по сравнению с обычным логированием.

Интеграция Sentry с Replay и Tracing

Для глубокого анализа подключаем Sentry с Replay и Tracing. Replay записывает сессию до момента ошибки, что позволяет увидеть действия пользователя. Пример конфигурации:

// sentry.init.js
import * as Sentry from '@sentry/browser'
import { BrowserTracing } from '@sentry/tracing'

Sentry.init({
  dsn: 'https://[email protected]/yyy',
  integrations: [
    new BrowserTracing(),
    new Sentry.Replay({
      maskAllText: false,
      blockAllMedia: false
    })
  ],
  tracesSampleRate: 0.1,   // 10% для performance
  replaysSessionSampleRate: 0.05,  // 5% сессий записывать
  replaysOnErrorSampleRate: 1.0,   // 100% при ошибке

  beforeSend(event) {
    // Добавить контекст пользователя
    event.user = {
      id: currentUser?.id,
      segment: currentUser?.plan
    }
    return event
  }
})

Как ошибки влияют на конверсию?

Мы строим SQL-запросы, сравнивающие CVR сессий с ошибками и без. Типичный результат: сессии с ошибками конвертируют в 3+ раза хуже. Пример кода:

def analyze_error_impact(analytics_db):
    # Сравнить конверсию сессий с ошибками vs без
    result = analytics_db.query("""
        WITH session_errors AS (
            SELECT
                session_id,
                COUNT(*) as error_count,
                MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) as converted
            FROM events
            WHERE date >= CURRENT_DATE - INTERVAL '7 days'
            AND event_name IN ('js_error', 'purchase')
            GROUP BY session_id
        ),
        all_sessions AS (
            SELECT session_id,
                   MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) as converted
            FROM events
            WHERE date >= CURRENT_DATE - INTERVAL '7 days'
            GROUP BY session_id
        )
        SELECT
            'with_errors' AS segment,
            COUNT(*) AS sessions,
            SUM(converted) AS conversions,
            ROUND(AVG(converted::float) * 100, 2) AS cvr
        FROM session_errors WHERE error_count > 0

        UNION ALL

        SELECT
            'without_errors',
            COUNT(*),
            SUM(a.converted),
            ROUND(AVG(a.converted::float) * 100, 2)
        FROM all_sessions a
        LEFT JOIN session_errors se ON a.session_id = se.session_id
        WHERE se.session_id IS NULL
    """)
    return result

# Типичный результат:
# with_errors:    1.2% CVR
# without_errors: 3.8% CVR
# Ошибки снижают конверсию в 3+ раза
Сегмент Сессии Конверсии CVR
С ошибками 12450 149 1.2%
Без ошибок 112050 4258 3.8%

Разница — в 3.2 раза. Если ваш средний чек 3000 ₽, потери за неделю составляют более 1.2 млн ₽.

Сравнение инструментов мониторинга

Инструмент Source maps Replay Интеграция с GA4 Цена
Sentry Да Да Через API Бесплатно до 5k событий/мес
Bugsnag Да Нет Через API От $29/мес
LogRocket Да Да Нет От $39/мес
GA4 Нет Нет Встроено Бесплатно

Sentry — оптимальный выбор для глубокого анализа: он сочетает source maps, Replay и гибкую интеграцию с GA4. По сравнению с GA4, Sentry лучше подходит для отладки, поскольку предоставляет полный стек и Replay, что сокращает время поиска причины в 5–10 раз.

Как приоритизировать исправление ошибок?

Мы используем метрику affected_users × conversion_impact. Ошибки в модулях checkout/payment получают вес 3, остальные — 1. Пример:

def prioritize_errors(sentry_api, project_slug):
    """Приоритет = affected_users × conversion_impact"""
    issues = sentry_api.get_issues(project_slug, limit=50)

    for issue in issues:
        affected_users = issue['userCount']
        # Ошибки в checkout/payment — высокий приоритет
        is_critical = any(p in issue['culprit'] for p in
                         ['checkout', 'payment', 'cart', 'form'])
        issue['priority_score'] = affected_users * (3 if is_critical else 1)

    return sorted(issues, key=lambda x: x['priority_score'], reverse=True)

Типичные критические ошибки

  • Cannot read property 'X' of undefined — race condition при асинхронной загрузке
  • Network Error в fetch — API недоступен, нет retry логики
  • PaymentRequestUpdateEvent — ошибки Payment Request API на iOS Safari
  • ChunkLoadError — устаревший кэш после деплоя (решается: window.location.reload())
Кейс из практики: как подняли CVR на 25%

На одном проекте (интернет-магазин электроники) после деплоя новой версии checkout-модуля конверсия упала с 3.5% до 1.1%. Выяснилось, что в 40% сессий возникала ошибка Cannot read property 'price' of undefined из-за изменения формата ответа API. Sentry показал, что ошибка затрагивает 15k пользователей в день. После фикса и повторного деплоя CVR вернулась к 3.5% через 2 дня. Потери за 3 дня составили ~900 заказов.

Что входит в услугу

  • Настройка перехвата всех JS-ошибок (включая source maps)
  • Интеграция Sentry с Replay и Tracing
  • Создание событий в GA4 для конверсионного анализа
  • Дашборды влияния ошибок на CVR и выручку
  • Приоритизированный список багов с рекомендациями
  • Документация по интеграции и доступ к дашбордам
  • Поддержка в течение месяца после внедрения

Процесс работы

  1. Аудит текущего мониторинга: проверяем, какие ошибки уже перехватываются.
  2. Настройка инструментов: устанавливаем Sentry, дорабатываем GA4 events.
  3. Сбор данных: 7 дней накопления статистики по Error Sessions.
  4. Анализ и приоритизация: строим SQL-отчёты, вычисляем влияние на конверсию.
  5. Отчёт и исправление: передаём вам список багов с указанием критичности, помогаем с правками.
  6. Контроль: после исправлений повторяем анализ, чтобы убедиться в росте CVR.

Сроки и результаты

Первые результаты — уже через 2 рабочих дня: вы видите дашборд с Error Sessions и их влиянием. Полный цикл анализа и приоритизации — от 5 до 7 дней. Конкретная стоимость зависит от объёма проекта (количество страниц, интеграций), поэтому мы рассчитываем её индивидуально. Свяжитесь — оценим ваш проект бесплатно.

Почему выбирают нас

Наш опыт — более 10 лет в frontend-разработке и мониторинге. Мы работали с проектами, где CVR выросла на 25% только за счёт устранения JS-ошибок. Используем только проверенные инструменты: Sentry, GA4, Grafana. Даём гарантию на корректную работу интеграций. Закажите аудит — получите консультацию с детальным разбором ваших Error Sessions. Свяжитесь с нами — мы подготовим индивидуальное предложение.

Настройка веб-аналитики: GA4, GTM, Яндекс.Метрика и Amplitude

Мы часто видим: конверсия 1.2 %, трафик растёт, а конверсия стоит. Маркетолог смотрит в Google Analytics и говорит: «пользователи уходят с шага 2 оформления заказа». Разработчик открывает тот же шаг — ошибок нет, в Sentry тишина. Значит, дело не в JS-баге, а в UX или в кривых данных, которые показывает аналитика. Аналитика ломается незаметно: событие перестало трекаться после редеплоя — никто не заметил; GTM-тег стреляет дважды — данные задвоились; фильтр GA4 исключает бота, который на самом деле — реальный трафик с корпоративного прокси. Закажите аудит текущих тегов — мы найдём причину за неделю.

После правильной настройки экономия рекламного бюджета может достигать 150 000 ₽ в месяц — это реальный кейс интернет-магазина с 50 000 сессий в день, где дедупликация purchase вернула 20 % неверно приписанных конверсий.

Почему события GA4 дублируются и как это исправить?

Universal Analytics закрыт, его место заняла событийная модель GA4. В ней нет фиксированных хитов страниц и транзакций — только события с параметрами. Это гибче, но требует правильного дизайна событий.

Автоматические события GA4 собирает сам: page_view, scroll, click, session_start. Рекомендуемые события нужно реализовать самостоятельно: purchase, add_to_cart, begin_checkout, view_item. Google ожидает конкретную схему параметров — если передать product_id вместо item_id, данные попадут в GA4, но не в стандартные отчёты e-commerce. Кастомные события для специфики проекта: filter_applied, video_progress, form_step_completed. Кастомные параметры необходимо зарегистрировать в GA4 Admin → Custom definitions, иначе они не будут доступны в отчётах.

Частая ошибка — событие purchase с дублями. Причина: тег срабатывает на странице /thank-you, пользователь обновляет страницу — второй purchase уходит в GA4. Решение: на бэкенде генерируем уникальный transaction_id и передаём в событие. GA4 de-duplicates по нему (в теории — проверяйте через DebugView). Правильная атрибуция экономит до 20 % рекламного бюджета, который раньше уходил на неверно приписанные конверсии.

Как настроить data layer, чтобы не потерять данные?

GTM — инструмент для управления тегами без деплоя кода. Но «без кода» не значит «без архитектуры». Data Layer — основа всего. Передаём данные из приложения в GTM через dataLayer.push(). Структура: event + контекстные данные. Для e-commerce: перед открытием страницы продукта — push с данными товара. GTM-тег читает из dataLayer, не из DOM.

window.dataLayer = window.dataLayer || [];
dataLayer.push({
  event: 'view_item',
  ecommerce: {
    items: [{
      item_id: 'SKU-12345',
      item_name: 'Название товара',
      price: 1990.00,
      currency: 'RUB'
    }]
  }
});

Плохая практика: GTM-тег парсит DOM — ищет цену в span.price, название в h1. Это ломается при любом изменении верстки. Хорошая практика: всегда dataLayer. Используем Preview Mode для отладки и GTM Server-Side для чувствительных данных — отправка с сервера, не с браузера, обходит блокировщики рекламы, не теряет данные.

Как Яндекс.Метрика дополняет веб-аналитику?

Для российской аудитории Метрика обязательна — особенно Вебвизор. Запись сессии пользователя, который бросил корзину, часто даёт ответ быстрее, чем неделя анализа воронки. Цели в Метрике: событийные (через ym(COUNTER_ID, 'reachGoal', 'GOAL_NAME')) или автоматические (клик по кнопке, посещение страницы). Связка с CRM через Метрика Плюс — передача офлайн-конверсий. Наш опыт: в 8 из 10 проектов после настройки Метрики находили скрытые баги в UX, которые не показывали другие системы.

Что даёт product analytics в Amplitude?

Amplitude — продуктовый инструмент, в отличие от маркетинговых GA4 и Метрики. Он заточен под анализ поведения пользователей внутри продукта: воронки, ретеншн, user paths. Amplitude подходит для SaaS-продуктов, мобильных приложений и любых сервисов с зарегистрированными пользователями, где важно понять, как проходят онбординг, на каком шаге уходят, какие фичи используют чаще. Ключевые концепции: identify (связать анонимного пользователя с userId после авторизации), group (аккаунт в B2B SaaS), когорты для удержания. Amplitude Chart — воронка шагов за последние 30 дней с разбивкой по источнику.

Мониторинг качества данных

Аналитика без мониторинга — чёрный ящик. Настраиваем:

  • GA4 Realtime — проверяем после каждого деплоя, что ключевые события приходят
  • Alerting в GA4 — аномалия в количестве событий purchase (резкое падение = что-то сломалось)
  • GTM Preview в staging-окружении перед продакшеном
  • Ручные тесты воронок раз в неделю — просто пройти путь покупателя и проверить, что всё трекается

Что проверяем после каждого деплоя

  • Все ли рекомендуемые события присутствуют в DebugView
  • Нет ли задвоений (считаем количество purchase на 100 сессий)
  • Не изменилась ли структура dataLayer после обновления фронтенда

Что входит в работу

Компонент Описание
Аудит текущих тегов Проверка существующих GTM-тегов, dataLayer, дублей и ошибок
Дизайн событийной схемы Документация: список событий, параметры, триггеры
Настройка GA4 + GTM Создание конфигурации, тегов, Custom definitions
Яндекс.Метрика Установка счётчика, создание целей, настройка Вебвизора
Amplitude (опционально) Настройка клиентского и серверного SDK, когорты
QA и мониторинг Тестирование в Preview Mode, Alerting
Обучение и передача Доступы, инструкция по добавлению новых событий, консоль

Процесс и сроки

  1. Аудит текущих тегов и данных (2 дня)
  2. Дизайн событийной схемы (2 дня)
  3. Разработка Data Layer и настройка тегов (3–5 дней)
  4. QA в Preview Mode и на staging (2 дня)
  5. Деплой и настройка дашбордов (1 день)
Сценарий Срок
Базовая настройка GA4 + GTM 1 неделя
Полный e-commerce tracking + Метрика 2–3 недели
Server-side GTM + Amplitude 3–5 недель

Стоимость рассчитывается индивидуально. Получите консультацию по настройке веб-аналитики для вашего проекта — мы оценим объём работ за один день. Свяжитесь с нами, чтобы начать.

Wikipedia: Веб-аналитика — подробнее о методах и метриках. Официальная документация по событийной модели GA4 доступна в Google Analytics 4.