Налаштування QR-кодів для маркетингових акцій 1С-Бітрікс

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

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

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

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

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування QR-кодів для маркетингових акцій у 1С-Bitrix

QR-коди для акцій — це не просто посилання у квадратику. Маркетинговий QR розв'язує конкретну задачу: пов'язати офлайн-точку дотику (упаковка, листівка, банер, вітрина) з онлайн-дією (застосування купону, реєстрація в програмі лояльності, участь у розіграші). Ключове відмінність від товарного QR — аналітика: хто, коли, де сканував.

Архітектура маркетингових QR

Маркетинговий QR-код вказує не напрямку на сторінку акції, а на проміжний редиректор з аналітикою. Схема:

QR → https://shop.ua/promo/qr/?c=SUMMER25&src=package_tea → (traking) → /catalog/sale/

Параметри:

  • c — код акції (привязан до купону або сценарію)
  • src — джерело розміщення (упаковка, листівка, банер)
  • mid — ID конкретного матеріалу (номер партії листівок)

Такий підхід дає аналітику без змін URL фінальної сторінки.

Зберігання маркетингових QR у Bitrix

Для управління маркетинговими QR створюйте окремий інфоблок або таблицю через ORM:

class MarketingQrTable extends \Bitrix\Main\ORM\Data\DataManager {
    public static function getTableName(): string {
        return 'custom_marketing_qr';
    }

    public static function getMap(): array {
        return [
            new Fields\IntegerField('ID', ['primary' => true, 'autocomplete' => true]),
            new Fields\StringField('CODE'),          // Унікальний код QR
            new Fields\StringField('NAME'),          // Назва акції
            new Fields\StringField('TARGET_URL'),    // Куди редиректимо
            new Fields\StringField('SOURCE'),        // Тип джерела
            new Fields\DatetimeField('ACTIVE_FROM'),
            new Fields\DatetimeField('ACTIVE_TO'),
            new Fields\IntegerField('SCAN_COUNT'),   // Лічильник сканувань
            new Fields\BooleanField('IS_ACTIVE'),
        ];
    }
}

Редиректор з трекингом

Контролер обробляє перехід по QR:

class QrRedirectController extends \Bitrix\Main\Engine\Controller {

    public function trackAction(string $code, string $src = '', string $mid = ''): \Bitrix\Main\Engine\Response\Redirect {
        $qr = MarketingQrTable::getList([
            'filter' => ['=CODE' => $code, '=IS_ACTIVE' => true],
            'limit' => 1,
        ])->fetch();

        if (!$qr) {
            return new \Bitrix\Main\Engine\Response\Redirect('/404/');
        }

        // Перевіряємо період активності
        $now = new \Bitrix\Main\Type\DateTime();
        if ($qr['ACTIVE_FROM'] && $qr['ACTIVE_FROM'] > $now) {
            return new \Bitrix\Main\Engine\Response\Redirect('/promo/soon/');
        }
        if ($qr['ACTIVE_TO'] && $qr['ACTIVE_TO'] < $now) {
            return new \Bitrix\Main\Engine\Response\Redirect('/promo/expired/');
        }

        // Логуємо сканування
        QrScanLogTable::add([
            'QR_ID' => $qr['ID'],
            'SOURCE' => $src,
            'MATERIAL_ID' => $mid,
            'IP' => $_SERVER['REMOTE_ADDR'],
            'USER_AGENT' => $_SERVER['HTTP_USER_AGENT'],
            'SCANNED_AT' => $now,
            'USER_ID' => $GLOBALS['USER']->GetID() ?: null,
        ]);

        // Інкремент лічильника
        MarketingQrTable::update($qr['ID'], [
            'SCAN_COUNT' => $qr['SCAN_COUNT'] + 1,
        ]);

        // Якщо є купон — застосовуємо до сесії
        if (!empty($qr['COUPON_CODE'])) {
            \Bitrix\Main\Application::getInstance()->getSession()->set('QR_COUPON', $qr['COUPON_CODE']);
        }

        return new \Bitrix\Main\Engine\Response\Redirect($qr['TARGET_URL']);
    }
}

Інтеграція з купонами Bitrix

Потужний сценарій: користувач сканує QR з упаковки → потрапляє в магазин → купон застосовується автоматично. Купон попередньо створюється в модулі «Маркетинг» Bitrix (sale.discount):

// Застосування купону з сесії при відкритті кошику
AddEventHandler('sale', 'OnSaleBasketBeforeSaved', function(&$params) {
    $session = \Bitrix\Main\Application::getInstance()->getSession();
    $qrCoupon = $session->get('QR_COUPON');

    if ($qrCoupon) {
        \CSaleDiscount::ApplyCoupon($qrCoupon);
        $session->remove('QR_COUPON');
    }
});

Генерація партії QR для друку

Для офлайн-матеріалів генеруйте пакет QR-кодів:

function generateQrBatch(string $campaignCode, string $source, int $count): string {
    $zipPath = '/tmp/qr-' . $campaignCode . '.zip';
    $zip = new ZipArchive();
    $zip->open($zipPath, ZipArchive::CREATE);

    for ($i = 1; $i <= $count; $i++) {
        $mid = str_pad($i, 5, '0', STR_PAD_LEFT);
        $url = 'https://' . SITE_SERVER_NAME . '/promo/qr/?c=' . $campaignCode . '&src=' . $source . '&mid=' . $mid;

        $result = \Endroid\QrCode\Builder\Builder::create()
            ->data($url)
            ->size(600)
            ->build();

        $zip->addFromString('qr-' . $mid . '.png', $result->getString());
    }

    $zip->close();
    return $zipPath;
}

Аналітика в адміністративній частині

З логу сканувань будуються звіти:

  • Кількість сканувань по джерелам (який носій працює краще)
  • Конверсія з скану в покупку
  • Час дня і день тижня активності
  • Геоспрямування (по IP)

Дані виводяться в custom-звіт в адміністративній частині або виконуються до Google Data Studio.

Сроки виконання

Обсяг робіт Строк
Редиректор + трекинг + базова генерація 1–2 дні
Інтеграція з купонами + сесійна логіка +1 день
Пакетна генерація + аналітика +1–2 дні

Маркетинговий QR без трекингу — гроші на вітер. З трекингом — керований інструмент з вимірюваним ROI.