Налаштування A/B тестування на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування A/B тестування на 1С-Бітрікс
Простий
~1 день
Часті запитання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1288
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    881
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    631
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    781
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    681
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1010

Налаштування A/B тестування на 1С-Bitrix

Редизайн карточки товара, нова кнопка «Купити», змінений порядок блоків на лендингу — без A/B тесту це гадання. Інтуїція підводить: варіант, який «подобається директору», часто програє по конверсії. 1С-Bitrix має вбудований механізм A/B тестування в модулі abtest, але мало хто його використовує — документація скупа, а обмеження неочевидні. Розглянемо і штатний механізм, і альтернативи.

Штатний модуль abtest

Модуль abtest доступний у редакціях «Бізнес» та «Ентерпрайз». Розміщений у Маркетинг → A/B тестування. Механіка:

  1. Створюєте тест з назвою й описом.
  2. Указуєте відсоток трафіку для варіанту B (зазвичай 50%).
  3. Вибираєте тип тесту: шаблон сайту, шаблон компонента, включаємська область або довільний PHP-код.
  4. Bitrix при першому відвідуванні призначає користувачу групу (A або B) через cookie BITRIX_SM_ABTEST_{ID}. Cookie живе до закінчення тесту.
  5. Залежно від групи підставляється відповідний варіант.

Створення тесту через API:

\Bitrix\ABTest\ABTestManager::addTest([
    'NAME' => 'Кнопка купити: червона vs зелена',
    'SITE_ID' => 's1',
    'DURATION' => 14,  // днів
    'PORTION' => 50,   // відсоток трафіку на варіант B
    'TEST_DATA' => [
        'type' => 'template',
        'original' => '/local/templates/main/',
        'modified' => '/local/templates/main_test/',
    ],
]);

Для тесту шаблону компонента: указуєте оригінальний й тестовий шаблон, Bitrix підміняє параметр TEMPLATE_NAME при виклику $APPLICATION->IncludeComponent().

Обмеження штатного модуля

  • Немає інтеграції з аналітикою. Модуль лічить конверсію по цілям Яндекс.Метрики або Google Analytics, але зв'язка ненадійна — дані розходяться, атрибуція неточна.
  • Немає сегментації. Не можна запустити тест лише для мобільних, лише для Москви або лише для нових користувачів.
  • Немає мультиваріантних тестів. Тільки A vs B, без варіантів C, D.
  • Кешування. Якщо компонент кешує результат — обидва варіанти отримають один й той самий HTML. Потрібно або відключити кеш для тестованого компонента, або кешувати окремо за групою тесту.

Проблема з кешем вирішується додаванням cookie BITRIX_SM_ABTEST_{ID} в ключ кешування компонента:

$this->setResultCacheKeys(['AB_GROUP']);
$cacheDir = '/catalog/element/' . $arParams['ELEMENT_ID'] . '/' . $_COOKIE['BITRIX_SM_ABTEST_1'];

Google Optimize як альтернатива (client-side)

Google Optimize закрився в 2023, але підхід client-side A/B тестування живе в інших інструментах: VWO, Optimizely, ABTasty. Принцип: JavaScript-сніппет підміняє DOM на клієнті. Bitrix відає однаковий HTML, скрипт модифікує елементи.

Плюси: не потрібно торкатися серверного коду. Мінуси: мерехтіння (FOUC — оригінал з'являється на долю секунди до підміни), не працює для серверної логіки (різні ціни, алгоритми сортування).

Server-side A/B через кастомний код

Для серйозних тестів (різна логіка розрахунку скидки, інший алгоритм рекомендацій) потрібен серверний підхід:

function getABGroup(string $testName, int $percentB = 50): string
{
    $cookieName = 'ab_' . md5($testName);
    if (isset($_COOKIE[$cookieName])) {
        return $_COOKIE[$cookieName];
    }
    $group = (mt_rand(1, 100) <= $percentB) ? 'B' : 'A';
    setcookie($cookieName, $group, time() + 86400 * 30, '/');
    return $group;
}

// Використання
if (getABGroup('discount_algorithm') === 'B') {
    // Новий алгоритм скидки
} else {
    // Поточний алгоритм
}

Для відслідковування результатів — передаємо групу в dataLayer:

dataLayer.push({
    'ab_test': 'discount_algorithm',
    'ab_group': '<?= getABGroup("discount_algorithm") ?>'
});

У Яндекс.Метриці або GA4 створюємо користувацький параметр, будуємо звіт по конверсії з розбивкою за групами.

Статистична значимість

Типова помилка — припинити тест через 2 дні, побачивши різницю в 0.5%. Для достовірного результату потрібен обсяг вибірки. Груба оцінка: при базовій конверсії 2% та бажаному мінімально детектованому ефекті 20% (відносно) потрібно близько 20 000 відвідувань на кожен варіант. На сайті з 1000 відвідувань на день — тест триває 40 днів.

Не зупиняйте тест, поки p-value не опуститься нижче 0.05. Калькулятори: Evan Miller's AB Test Calculator, ABTestGuide.

Що налаштовуємо за один день

  1. Штатний модуль abtest — створення тесту з підміною шаблону компонента.
  2. Рішення проблеми кешування (окремий кеш за групою).
  3. Передача групи тесту в dataLayer для аналітики.
  4. Налаштування звіту в Метриці/GA4 з розбивкою за групами A/B.
  5. Розрахунок необхідного обсягу трафіку й тривалості тесту.