Розробка функціоналу соціального доказу (social proof) 1С-Бітрікс

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

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

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

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

  • 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

Розробка функціоналу соціального доказу (social proof) 1С-Бітрікс

Картка товару без відгуків, рейтингу та реальних фото покупців конвертує гірше. Це не маркетингове припущення — це вимірювано: A/B-тести на e-commerce проєктах стабільно показують зростання конверсії на 15–30% при додаванні блоків social proof. Завдання розробника: інтегрувати ці елементи в Бітрікс-магазин так, щоб вони не гальмували сторінку і не плодили спам.

Що входить у social proof на Бітрікс

Набір блоків залежить від типу бізнесу, але типовий перелік:

  • Рейтинг і відгуки — зірковий рейтинг, текстові відгуки з фото
  • Лічильник переглядів/покупок — «Цей товар купили 127 разів»
  • Сповіщення про нещодавні покупки — спливаючий popup «Іван із Москви купив 5 хвилин тому»
  • Запитання та відповіді — Q&A розділ на картці товару
  • Користувацькі фото — UGC-галерея від покупців
  • Бейджі — «Вибір покупців», «Хіт продажів», «Новинка»

Рейтинг і відгуки: зберігання та відображення

У Бітрікс є вбудований модуль vote (голосування) та можливості через властивості інфоблока. Для повноцінної системи відгуків зазвичай будується кастомна таблиця:

CREATE TABLE b_product_reviews (
    ID          SERIAL PRIMARY KEY,
    PRODUCT_ID  INT NOT NULL,
    USER_ID     INT,
    AUTHOR_NAME VARCHAR(255),
    RATING      SMALLINT CHECK (RATING BETWEEN 1 AND 5),
    TITLE       VARCHAR(500),
    BODY        TEXT,
    PROS        TEXT,
    CONS        TEXT,
    STATUS      VARCHAR(20) DEFAULT 'pending', -- pending|approved|rejected
    DATE_CREATE TIMESTAMP DEFAULT NOW(),
    HELPFUL_YES INT DEFAULT 0,
    HELPFUL_NO  INT DEFAULT 0
);

CREATE TABLE b_review_photos (
    ID        SERIAL PRIMARY KEY,
    REVIEW_ID INT NOT NULL REFERENCES b_product_reviews(ID),
    FILE_ID   INT NOT NULL REFERENCES b_file(ID)
);

Агрегований рейтинг (середня оцінка, кількість відгуків) кешується в окремому полі інфоблока — не обчислюється при кожному запиті сторінки. Оновлюється через обробник при схваленні нового відгуку.

Модерація обов'язкова. Без неї при появі першого конкурентного або спамного відгуку репутація руйнується. У стандартній реалізації: відгук зі статусом pending не відображається, модератор схвалює через кастомний розділ у /bitrix/admin/ або через Бітрікс24.

Лічильники та сповіщення про покупки

Лічильник покупок — кількість замовлень із даним товаром із b_sale_basket. Прямий SQL-запит для кожної картки — це N+1 проблема при лістингу. Рішення: окрема таблиця-кеш, яка оновлюється при кожному оформленні замовлення:

CREATE TABLE b_product_social_counters (
    PRODUCT_ID      INT PRIMARY KEY,
    PURCHASE_COUNT  INT DEFAULT 0,
    VIEW_COUNT      INT DEFAULT 0,
    WISHLIST_COUNT  INT DEFAULT 0,
    LAST_PURCHASED  TIMESTAMP
);

Оновлення через обробник події OnSaleOrderSaved:

AddEventHandler('sale', 'OnSaleOrderSaved', function($event) {
    $order = $event->getParameter('ENTITY');
    foreach ($order->getBasket() as $item) {
        $productId = $item->getField('PRODUCT_ID');
        $db->query("UPDATE b_product_social_counters SET purchase_count = purchase_count + 1,
                    last_purchased = NOW() WHERE product_id = $productId");
    }
});

Спливаючі сповіщення про покупки — AJAX-запит до контролера, який повертає останні N покупок товару (з назвою міста з b_sale_order_props, без персональних даних). На фронтенді — показ popup із затримкою та обмеженням частоти:

async function showRecentPurchaseNotification(productId) {
    const data = await fetch(`/local/api/social-proof/recent/?product=${productId}`).then(r => r.json());
    if (data.length === 0) return;
    const purchase = data[Math.floor(Math.random() * data.length)];
    showNotification(`${purchase.city}: куплено ${purchase.time_ago} тому`);
}

Для сповіщень важлива реальність даних: показувати вигадані покупки не можна. Якщо реальних даних мало (новий товар), блок не відображається.

UGC-галерея покупців

Фото від реальних покупців — найсильніший social proof для fashion, меблів, техніки. Технічно: до форми відгуку додається поле завантаження зображень (через CFile::SaveFile()), завантажені фото проходять модерацію, схвалені виводяться в галереї під основними фото товару.

Ресайз зображень, що завантажуються користувачами, обов'язковий — без нього склад /upload/ за рік заповнюється гігабайтами сміття:

// При збереженні фото відгуку
$resized = CFile::ResizeImageGet($fileId, ['width' => 800, 'height' => 800], BX_RESIZE_IMAGE_PROPORTIONAL);

Schema.org розмітка для відгуків

Відгуки з правильною розміткою виводяться у пошуковій видачі як зірковий рейтинг. Розмітка Product + AggregateRating + Review:

$schema = [
    '@context' => 'https://schema.org',
    '@type'    => 'Product',
    'name'     => $arResult['NAME'],
    'aggregateRating' => [
        '@type'       => 'AggregateRating',
        'ratingValue' => $arResult['RATING'],
        'reviewCount' => $arResult['REVIEW_COUNT'],
        'bestRating'  => 5,
    ],
    'review' => array_map(fn($r) => [
        '@type'        => 'Review',
        'reviewRating' => ['@type' => 'Rating', 'ratingValue' => $r['RATING']],
        'author'       => ['@type' => 'Person', 'name' => $r['AUTHOR_NAME']],
        'reviewBody'   => $r['BODY'],
    ], $reviews),
];
echo '<script type="application/ld+json">' . json_encode($schema, JSON_UNESCAPED_UNICODE) . '</script>';

Бейджі на картках товару

«Хіт продажів», «Вибір покупців», «Тільки тут» — статуси, що обчислюються за даними або проставляються вручну:

  • Хіт продажів — якщо purchase_count у топ-5% каталогу (обчислюється агентом раз на добу)
  • Високий рейтинг — якщо середній рейтинг ≥ 4.5 і кількість відгуків ≥ 10
  • Закінчується — якщо залишок товару ≤ 5 одиниць

Бейджі зберігаються у властивості інфоблока типу «Список» (множинне). Агент оновлює їх за розкладом, не навантажуючи кожен запит сторінки.

Захист від накрутки

Без захисту накручують і рейтинг, і лічильники покупок. Базові заходи:

  • Відгук лише від зареєстрованих користувачів, які купили цей товар (перевірка за b_sale_basket)
  • Обмеження: один відгук на товар від одного користувача
  • Rate limiting на API лічильника переглядів: один інкремент на сесію
  • CAPTCHA або приховане поле honeypot на формі відгуку

Терміни

Блок Що входить Термін
Рейтинг + відгуки БД, форма, модерація, Schema.org 2–3 тижні
Лічильники + сповіщення Таблиця-кеш, агенти, popup 1–2 тижні
UGC-галерея Завантаження, ресайз, модерація, вивід 1–2 тижні
Бейджі Агент обчислення, вивід у лістингу 3–5 днів

Social proof — це не прикраса, а частина конверсійної воронки. Інвестиції в правильну реалізацію окупаються зростанням конверсії картки товару, яке легко вимірюється через A/B-тест.