Сравнение товаров, вишлисты и аналоги по бренду: три фичи для роста среднего чека
Три функции, которые есть у каждого маркетплейса, но отсутствуют в WooCommerce из коробки: сравнение товаров бок-о-бок, списки желаний с шеринг-ссылкой и автоматические страницы аналогов по бренду. Разбираем, как они увеличивают средний чек.
COS / KNOWLEDGE BASE
На прошлой неделе мне написал владелец оптового магазина автохимии — из тех, кто уже перерос Битрикс и мигрировал на WooCommerce, но столкнулся с неприятным открытием. «Олег, — говорит, — у меня каталог на шестнадцать тысяч позиций, клиенты звонят и спрашивают: чем ваше масло Shell Tellus S4 VX 32 отличается от Лукойл Гейзер ЛТ 32? А я их на сайт отправить не могу, потому что сравнения товаров просто нет. На Озоне есть, на Вайлдберриз есть, даже на Леруа есть, а у меня — нет. Вишлиста тоже нет. Менеджеры ведут списки клиентов в Экселе, представляешь?» Представляю. И я слышу эту историю примерно раз в две недели от разных людей. Меняются только названия масел и имена владельцев.
Вот в чём штука: WooCommerce из коробки — это гениально спроектированный движок электронной коммерции, который при этом не умеет трёх базовых вещей, без которых ни один маркетплейс не живёт. Сравнение товаров бок-о-бок, списки желаний с возможностью поделиться ссылкой и автоматические страницы аналогов конкурентных брендов. Три функции, которые покупатель считает само собой разумеющимися, потому что он привык к ним на каждом крупном маркетплейсе. Когда он заходит на ваш сайт и не находит кнопку «Сравнить» — он не думает, что у вас плагин не установлен. Он думает, что вы несерьёзный магазин. И вот это восприятие — «несерьёзный» — стоит вам денег. Каждый день, каждый потерянный заказ, каждый клиент, который ушёл на маркетплейс, потому что там «удобнее».
Я занимаюсь развитием и маркетингом интернет-магазинов на WooCommerce уже достаточно давно, чтобы видеть, как менялся ландшафт. Пять лет назад никому не нужны были вишлисты — люди покупали сразу или не покупали вовсе. Три года назад без сравнения можно было обойтись, если у вас узкая ниша и менеджер готов консультировать по телефону. Сегодня это гигиена. Если у вас B2B-магазин с каталогом на тысячи SKU и вы не предоставляете инструменты для самостоятельного выбора — вы теряете деньги. Причём не на тех клиентах, которые уходят к конкурентам (хотя и на них тоже), а на тех, которые остаются, но покупают меньше, чем могли бы. Средний чек — вот что страдает в первую очередь. Потому что без инструментов сравнения покупатель берёт первый попавшийся товар вместо того, чтобы осознанно выбрать более дорогой и качественный. Без вишлиста он забывает о товарах, которые хотел заказать позже. Без страниц аналогов он уходит гуглить и попадает к конкуренту.
И я сегодня хочу подробно рассказать, как три модуля в нашем плагине COS WP Woo решают эту проблему. Не теоретически — «а вот если бы вы внедрили сравнение, было бы хорошо». А конкретно — как устроен каждый модуль, какие технические решения мы приняли и почему, как это выглядит для покупателя на фронтенде, и главное — как это влияет на ваши деньги. Без костылей, без зоопарка плагинов и без ежегодных лицензий по сто долларов за каждую функцию.
Когда таблица сравнения продаёт лучше менеджера
Давайте начнём с самого очевидного — сравнения товаров. Идея проста до неприличия: покупатель выбирает два-три-четыре товара, нажимает кнопку и видит таблицу, где все характеристики выстроены друг напротив друга. Цена, наличие, SKU, описание, а главное — технические атрибуты. Вязкость, температура застывания, температура вспышки, плотность, ГОСТ — всё это выводится строка за строкой, и покупатель видит разницу мгновенно. Не нужно открывать три вкладки браузера и прыгать между ними глазами, пытаясь удержать в голове числа. Не нужно звонить менеджеру и ждать, пока тот сам откроет три карточки товара и начнёт читать характеристики вслух, путаясь в цифрах.
Когда мы проектировали модуль сравнения в COS WP Woo, я специально изучил, как это делают крупные игроки. Wildberries строит таблицу вертикально — товары в столбцах, характеристики в строках. Ozon делает примерно так же, но добавляет подсветку различий — то, что отличается, выделяется цветом. Мы пошли классическим путём, который хорошо работает для промышленных каталогов: горизонтальная прокручиваемая таблица, где слева — название характеристики, а справа — значения для каждого товара. Это работает отлично на десктопе, а на мобильных устройствах таблица горизонтально скроллится, и это абсолютно ожидаемое поведение для любого пользователя смартфона — мы все привыкли свайпать таблицы вбок. Над таблицей — заголовок и кнопка «Сохранить как PDF». Под заголовком каждого товара — крестик для удаления из сравнения. Всё минималистично и функционально.
Но дьявол, как всегда, в деталях. И я хочу пройтись по пяти ключевым деталям, которые делают наше сравнение не просто работающим, а по-настоящему полезным для покупателя и для вашего бизнеса.
Первая деталь — динамические атрибуты. Когда вы сравниваете два гидравлических масла, вам важны одни характеристики: вязкость при разных температурах, индекс вязкости, температура застывания. Когда сравниваете два комплекта фильтров — совершенно другие: размеры, резьба, давление. Наш модуль автоматически собирает объединение всех атрибутов сравниваемых товаров и выводит их в таблицу. Это значит, что таблица адаптируется под конкретный набор товаров: если вы сравниваете масла — в таблице будут атрибуты масел, если фильтры — атрибуты фильтров. Если у одного товара есть атрибут «Вязкость при 40°C», а у другого нет — напротив второго товара в этой строке будет стоять прочерк. Покупатель сразу видит: ага, у этого товара характеристика не указана, может, стоит уточнить. Или может, это значит, что товар не протестирован по этому параметру. В любом случае — информация для принятия решения. Опция auto_attributes включена по умолчанию, и я настоятельно рекомендую её не выключать.
Вторая деталь — cookie-based хранение списка сравнения. Мы сознательно не стали привязывать сравнение к аккаунту пользователя. Почему? Потому что по нашим данным, семьдесят-восемьдесят процентов посетителей интернет-магазина — незарегистрированные гости. Они зашли из Google, из Яндекса, по ссылке от коллеги — и у них нет аккаунта на вашем сайте. Если для сравнения нужна регистрация, вы теряете основную аудиторию. Список сравниваемых товаров хранится в cookie с именем yith_woocompare_list — и да, мы специально используем то же имя cookie, что и YITH WooCommerce Compare. Это сделано не из лени, а для бесшовной миграции: если вы переходите с YITH на наш плагин, списки сравнения ваших текущих пользователей не теряются. Человек, который вчера добавил три товара в сравнение через YITH, сегодня откроет ту же страницу с нашим плагином — и увидит те же три товара. Cookie живёт тридцать дней, и если покупатель вернётся через неделю — его список на месте.
Третья деталь — AJAX-добавление без перезагрузки страницы. Покупатель листает каталог, видит интересный товар, нажимает кнопку «Сравнить» — и кнопка мгновенно меняет состояние на «Добавлено», без перезагрузки страницы, без спиннеров, без потери позиции скролла. Внизу экрана появляется плавающая панель сравнения с количеством выбранных товаров и кнопкой «Посмотреть сравнение». Это тот самый паттерн микровзаимодействия, который отличает профессиональный интернет-магазин от самоделки. И это именно тот UX, к которому привыкли пользователи маркетплейсов: нажал — добавилось — продолжаю выбирать — перехожу к сравнению когда готов. Никаких прерываний в процессе выбора, никаких потерь контекста.
Четвёртая деталь — шорткод и отдельная страница. Таблица сравнения выводится через шорткод yith_woocompare_table (совместимость с YITH) и может быть размещена на любой странице WordPress. Но есть два режима работы, и каждый из них служит своей цели. Динамический режим — шорткод без параметров, берёт список товаров из cookie. Это та самая «живая» таблица, которая меняется при каждом добавлении или удалении товара. Статический режим — шорткод с явно указанными ID товаров, например [yith_woocompare_table products="123,456,789"]. Статический режим идеален для посадочных страниц и контент-маркетинга. Я видел, как один из наших клиентов создал лендинг «Сравнение гидравлических масел для строительной техники» с таблицей на восемь товаров — и эта страница стабильно приносит поисковый трафик, потому что отвечает на конкретный пользовательский запрос. Google любит структурированный контент, и таблица сравнения — это идеальный структурированный контент.
Пятая деталь — экспорт в PDF. Кнопка «Сохранить как PDF» прямо над таблицей сравнения. Для B2B-клиентов это не просто удобство — это рабочий инструмент. Менеджер по закупкам сравнил три масла, сохранил PDF, отправил его руководителю на согласование или в тендерный комитет. Никаких скриншотов, никаких «а давайте я вам в письме перечислю характеристики». Чистая, красиво оформленная таблица с ценами и техническими данными. Несколько наших клиентов отмечали, что после добавления PDF-экспорта количество оформленных заявок выросло — и это логично: чем проще покупателю собрать и передать информацию внутри своей компании, тем быстрее проходит процедура согласования и тем быстрее оформляется заказ.
Отдельно стоит сказать про настройку полей таблицы. По умолчанию выводятся изображение, название, цена, кнопка «В корзину», описание, артикул и наличие. Но в админке вы можете сконфигурировать, какие именно поля показывать и в каком порядке. Для промышленного B2B-магазина, например, описание товара может быть не нужно в таблице сравнения — важнее артикул, наличие на складе и технические характеристики. Для розничного магазина одежды, наоборот, важно изображение крупным планом и цена, а SKU можно спрятать. Для магазина электроники — характеристики в первую очередь, а описание — в конец. Эта гибкость — не декоративная, она реально влияет на конверсию, потому что покупатель видит именно ту информацию, которая релевантна для принятия решения в вашей конкретной нише. Один клиент убрал описание из таблицы и добавил вес и габариты — и говорит, что запросов на уточнение стало заметно меньше, потому что логисты сразу видят габаритные данные.
Списки желаний — не для желаний, а для денег
Честно говоря, когда я только начинал работать с e-commerce, я считал вишлисты декоративной функцией. Ну добавил человек товар в «Избранное» — и что? Он же всё равно не купит, если прямо сейчас не готов. Это же не корзина, а какой-то промежуточный буфер, который ни к чему не ведёт. Я ошибался, и мне понадобилось несколько лет и много данных, чтобы это признать. Вишлист — это не про «хочу когда-нибудь потом, может быть». Вишлист — это отложенный спрос, который конвертируется в реальную покупку при правильном триггере. Снизилась цена — триггер. Товар вернулся в наличие — триггер. Приближается конец квартала и нужно освоить бюджет на расходники — триггер. Каждый из этих моментов — точка конверсии, и вишлист делает её возможной, потому что сохраняет связь между покупателем и товаром на протяжении недель и месяцев.
Модуль вишлистов в COS WP Woo устроен серьёзнее, чем может показаться на первый взгляд. Это не просто массив product_id, записанный в user meta. У нас две отдельные таблицы в базе данных: wpaic_wishlists хранит сами списки (да, их может быть несколько у одного пользователя — об этом расскажу подробнее), а wpaic_wishlist хранит товары внутри списков с полями user_id, product_id, wishlist_id, sort_order и added_price. Последнее поле — ключевое для всей модели монетизации вишлиста. Мы запоминаем цену товара на момент добавления в избранное. Зачем? Чтобы потом сравнить с текущей ценой и отправить покупателю уведомление о снижении. Но об уведомлениях будет отдельный разговор — они заслуживают подробного объяснения.
Множественные списки — это функция, которую я подсмотрел у Amazon и адаптировал для B2B-контекста. На Amazon можно создать список «Для дома», «Для дачи», «Подарки на Новый год» и так далее. В B2B-среде это работает ещё мощнее: «Расходники на апрель», «Масла для нового станка», «Запчасти для планового ТО», «Для тендера номер 47». Каждый список имеет собственное название, настройку приватности и уникальный share_token длиной двадцать четыре символа для безопасного шеринга. Да, покупатель может создать список, наполнить его товарами, настроить приватность и отправить ссылку коллеге или закупщику. Тот откроет ссылку и увидит все товары без необходимости регистрации — если список публичный или «доступен по ссылке». Для оптовых закупок это фантастически удобно: инженер на производстве сидит за компьютером, составляет список нужных расходников, потом отправляет ссылку в бухгалтерию, бухгалтер открывает и оформляет заказ. Никаких переписок «а пришли мне артикулы», никаких таблиц в Excel.
Приватность списков работает на трёх уровнях, и каждый имеет свой сценарий использования. Private — виден только владельцу, это личные заметки, «хочу, но пока не решил». Shared — виден по уникальной ссылке с токеном, идеален для шеринга внутри компании или семьи. Public — виден всем пользователям сайта, если вы решите реализовать галерею публичных списков. Для розничного магазина публичные списки — это подарочные wishlist'ы: «что подарить Марии на день рождения, вот её список». Для B2B — это инструмент коммуникации между подразделениями. Я знаю случай, когда покупатели дистрибьютора смазочных материалов начали создавать shared-списки и пересылать ссылки по электронной почте вместо стандартных заявок в Excel. Они фактически использовали вишлист как бланк заказа, и это без какой-либо специальной настройки или обучения — люди сами нашли способ использовать инструмент так, как им удобнее. Это лучшее доказательство того, что функция действительно нужна.
На фронтенде вишлист реализован через кнопку-сердечко, которая появляется на карточке товара в каталоге и на странице товара. Нажал — товар добавлен, сердечко заполнилось цветом, на кнопке появился класс wpaic-wishlist-btn--active. Нажал ещё раз — товар удалён, сердечко вернулось в исходное состояние. Весь процесс через AJAX, без перезагрузки, через wp_ajax и wp_ajax_nopriv с проверкой nonce. Для авторизованных пользователей данные сразу пишутся в базу данных. Для гостей товары хранятся в localStorage или cookie — и вот тут самый важный момент: когда гость регистрируется или входит в аккаунт, его гостевой вишлист автоматически мержится с существующим. Метод merge_guest_items берёт все товары из гостевого хранилища и добавляет их в дефолтный список пользователя через INSERT IGNORE — то есть если товар уже был в вишлисте, дубликат не создаётся. Это бесшовный опыт: покупатель бродил по каталогу неавторизованным, добавлял товары в избранное, потом решил зарегистрироваться — и всё на месте, ничего не потерялось. Очень многие конкурирующие плагины этого не делают, и покупатель теряет свой список при регистрации — представьте разочарование.
В личном кабинете WooCommerce появляется отдельная вкладка «Избранное» — это реальный WooCommerce endpoint, зарегистрированный через add_rewrite_endpoint. Двенадцать товаров на страницу с пагинацией, возможность удаления, переход на страницу товара одним кликом. Порядок товаров настраивается через drag-and-drop: покупатель может перетащить товары в нужном порядке, и порядок сохранится через метод update_sort_order, который принимает массив product_id и обновляет поле sort_order в базе. Мелочь? Для розницы — может быть. Но когда у закупщика крупного предприятия в списке сорок-пятьдесят позиций, возможность отсортировать их по приоритету или по группам — это реальная экономия времени и снижение риска ошибки при оформлении заказа.
Теперь про аналитику вишлистов, и это моя любимая часть. В админке плагина есть раздел, который показывает самые популярные товары — те, которые чаще всего добавляют в избранное. Метод get_analytics возвращает топ-20 самых «вишлистимых» товаров с количеством добавлений, текущей ценой и фотографией. Плюс общая статистика: сколько уникальных пользователей используют вишлисты, сколько товаров в общей сложности добавлено. Эта информация бесценна для маркетолога и категорийного менеджера. Если товар часто добавляют в вишлист, но редко покупают — это чёткий сигнал о барьере. Цена слишком высокая? Нет в наличии? Описание не убеждает? Доставка слишком дорогая? В любом случае, это конкретный товар с конкретной проблемой, на которую нужно реагировать. Сделайте точечную акцию на этот товар, снизьте цену на пять процентов, добавьте отзывы — и вы конвертируете отложенный спрос в живые продажи. Без аналитики вишлистов вы бы даже не узнали, что спрос на этот товар существует.
Письма, которые продают за вас
Я долго думал, стоит ли выделять уведомления в отдельный раздел или рассказать о них в контексте вишлистов. Решил выделить, потому что это самостоятельная и очень мощная механика, которая заслуживает отдельного разбора. Модуль WishlistNotificationService отвечает за два типа автоматических email-уведомлений: снижение цены и возврат товара в наличие. Оба работают полностью автономно — без участия человека, без настройки email-рассылок в Mailchimp или Sendinblue, без каких-либо внешних сервисов и подписок. Всё внутри WordPress и WooCommerce, через стандартный wp_mail и WP Cron.
Снижение цены работает через ежедневную крон-задачу. Хук wpaic_wishlist_price_check срабатывает раз в сутки и прогоняет все товары из вишлистов, сравнивая текущую цену с ценой на момент добавления — тем самым полем added_price, о котором я упоминал ранее. Если цена снизилась на пять или более процентов — покупатель получает аккуратное HTML-письмо с таблицей: название товара, старая цена зачёркнутая, новая цена выделенная зелёным жирным шрифтом, процент скидки красным. Письмо адаптировано под мобильные устройства, шрифты читаемые, кнопка «Перейти к товару» — крупная и заметная. Порог в пять процентов настраивается через опцию wpaic_wishlist_min_price_drop_pct — можно сделать десять для магазинов с крупными ценами, можно три для FMCG. Смысл порога в том, чтобы не спамить письмами при незначительных колебаниях. Если цена снизилась на полпроцента из-за курсовой разницы или пересчёта НДС — это не повод беспокоить покупателя. А вот пятнадцать процентов — это уже событие, о котором стоит рассказать.
Возврат в наличие работает принципиально иначе — это событийный триггер, а не расписание. Как только WooCommerce меняет статус товара на instock через стандартный хук woocommerce_product_set_stock_status, наш модуль моментально находит всех пользователей, у которых этот товар в вишлисте, и отправляет каждому персональное письмо. «Масло Shell Helix HX8 5W-30 снова в наличии!» — с фотографией товара, актуальной ценой и CTA-кнопкой «Перейти к товару». Моментально — это значит в течение минуты после смены статуса, а не на следующий день по крону. Дедупликация реализована через WordPress transient с ключом, включающим user_id и product_id: один пользователь получает уведомление о конкретном товаре не чаще раза в семь дней. Если товар мигает между instock и outofstock каждый день из-за проблем с синхронизацией 1С — покупатель не будет завален письмами, он получит только первое.
Знаете, что самое интересное? Эти триггерные письма имеют конверсию в разы выше, чем обычные маркетинговые рассылки. И это логично, если задуматься: письмо приходит не абстрактному подписчику с абстрактным оффером «у нас скидки на всё», а конкретному человеку, который конкретным действием (добавлением в вишлист) сказал «мне интересен этот товар». Это не спам, это сервис. Покупатель добавил масло в избранное, потому что сейчас ему дорого, или нет бюджета до конца месяца, или товара нет на складе. Через месяц цена упала на пятнадцать процентов — и ему приходит письмо. Он не думает «опять спам, отписаться», он думает «о, отлично, как раз хотел заказать, спасибо за напоминание». Это триггерный маркетинг в чистом виде, встроенный в плагин без каких-либо внешних интеграций и ежемесячных платежей за email-платформу.
Для B2B-сегмента уведомление о возврате в наличие особенно критично, и я хочу объяснить почему на конкретном примере. Промышленные масла, специализированные смазки для редукторов, гидравлические жидкости с допуском конкретного производителя оборудования — это товары, которые регулярно бывают в дефиците. Поставки приходят раз в месяц-два, и весь объём разбирают за неделю. Закупщик завода зашёл на ваш сайт, увидел «Нет в наличии», расстроился, добавил в избранное и переключился на другие задачи. Через три недели товар пришёл на ваш склад, 1С обновила остатки, WooCommerce поменял статус — и закупщик получил письмо раньше, чем ваш менеджер успел обзвонить клиентскую базу. Заказ оформлен за пять минут, деньги на вашем счёте, все довольны. Без менеджера, без звонков, без «а когда будет, запишите мой номер». И если учесть, что уведомление отправляется всем пользователям, у которых этот товар в вишлисте одновременно — вы получаете эффект мультипликации: одна поставка товара может сгенерировать десять-двадцать заказов автоматически в течение часа.
Аналоги по бренду: как забрать трафик конкурентов
А теперь давайте поговорим о функции, которую мало кто реализует на WooCommerce, но которая приносит фантастический SEO-результат при минимальных затратах — автоматические страницы аналогов по бренду. Идея простая и красивая: если вы продаёте отечественные масла и смазки, но ваши клиенты привыкли к Shell, Mobil, Castrol, Total — вам нужны страницы типа «Аналоги масел Shell», «Аналоги смазок Mobil» и так далее. Это страницы, которые перехватывают поисковый трафик по запросам вроде «аналог Shell Tellus S4 VX 32 российский», «чем заменить Mobil DTE 25», «замена Castrol Hyspin AWS 32 отечественная». Эти запросы существуют, их ищут тысячи людей каждый месяц (особенно после ухода западных брендов с российского рынка), и если у вас есть страницы с релевантным, структурированным контентом — вы получаете этот трафик бесплатно.
Модуль BrandAnalogService работает с деревом страниц WordPress — и это принципиальное архитектурное решение. Вы создаёте корневую страницу «Аналоги масел и смазок», под ней — дочерние страницы по каждому бренду: «Аналоги масел и смазок Shell», «Аналоги масел и смазок Mobil», «Аналоги масел и смазок Total» и так далее. Под каждой брендовой страницей — страницы конкретных продуктов: «Аналог Shell Tellus S4 VX 32», «Аналог Shell Omala S4 GX 320», «Аналог Shell Corena S4 R 46». Каждая из этих страниц — полноценная страница WordPress с собственным URL, мета-данными, контентом, и каждая индексируется поисковыми системами как отдельный документ. Модуль автоматически сканирует это дерево, парсит названия страниц, извлекает название бренда из заголовка (убирая префикс «Аналоги масел и смазок»), а затем сопоставляет каждую страницу продукта с реальным товаром в WooCommerce.
Алгоритм сопоставления трёхступенчатый, и я хочу объяснить каждый шаг, потому что это критически важно для понимания того, как модуль работает с вашим каталогом. Первый шаг — точное совпадение по имени товара. Если страница называется «Shell Tellus S4 VX 32» и в WooCommerce есть товар с таким же именем — мэтч. Но в реальности точное совпадение бывает редко, потому что товары в WC обычно называются длиннее: «Масло гидравлическое Shell Tellus S4 VX 32 (20 л.)». Поэтому второй шаг — поиск по подстроке: если извлечённое имя является частью названия товара WC, это считается совпадением. Причём из нескольких совпавших товаров выбирается тот, чьё название короче — более специфичный мэтч. И наконец, третий шаг — нечёткое сравнение через функцию similar_text с порогом в пятьдесят процентов. Это fallback для случаев, когда названия немного различаются — опечатки, разные транслитерации, другой порядок слов. Трёхступенчатый подход обеспечивает высокий процент автоматического сопоставления: по нашему опыту, восемьдесят-девяносто процентов страниц сопоставляются без ручного вмешательства.
После сканирования вы получаете структурированные данные: для каждого бренда — список найденных продуктов, сгруппированных по категориям WooCommerce. Гидравлические масла, трансмиссионные масла, индустриальные масла, пластичные смазки — каждая категория отдельно, с техническими характеристиками каждого товара. Данные кешируются в wp_options через метод scan_brand, чтобы не запрашивать базу данных при каждом открытии страницы. Обновление кеша — по запросу из админки, кнопка «Пересканировать» для каждого бренда отдельно или для всех сразу. На фронтенде всё выводится через шорткод [wpaic_brand_analogs brand="Shell"] — стильная карусель карточек с табами по категориям. Нажимаете таб «Гидравлические масла» — видите все аналоги Shell в этой категории с ключевыми характеристиками и ссылками на отдельные страницы аналогов, где можно прочитать подробное сравнение.
Вот почему это работает для SEO, и почему я считаю страницы аналогов одним из самых эффективных инструментов контент-маркетинга для e-commerce. Каждая страница аналога — это отдельный URL с уникальным контентом, оптимизированный под конкретный длиннохвостовый поисковый запрос. «Аналог Shell Tellus S4 VX 32» — это запрос с высочайшим коммерческим намерением. Человек, который его вводит в Google, уже знает, что ему нужно, уже работал с этим маслом, и ищет, где купить аналог — дешевле, быстрее, без проблем с поставками. Это горячий трафик, готовый к покупке. И если ваша страница содержит таблицу сравнения характеристик с оригиналом (вязкость, температуры, допуски), подробное описание аналога и кнопку «Добавить в корзину» — вы получаете конверсию в разы выше, чем со стандартной рекламы в Директе. На проекте одного маслосмазочного дистрибьютора сто двадцать страниц аналогов, созданных по этой методике, за полгода стали заметным источником органического трафика и заказов.
Отдельно хочу остановиться на атрибутивном маппировании, потому что это та деталь, которая отличает автоматическую генерацию карточек от ручной работы. Разные категории товаров имеют разные ключевые характеристики, и на карточке аналога нужно показывать именно те, которые важны для выбора. Для гидравлических масел это вязкость при 40°C и при 100°C, индекс вязкости, температура застывания и вспышки. Для пластичных смазок — диапазон рабочих температур, NLGI-класс, тип загустителя, каплепадение. Для компрессорных масел — совместимость с хладагентами, класс вязкости ISO. Модуль позволяет настроить маппинг атрибутов по категориям WooCommerce: для каждой категории указываете список атрибутов (таксономий), которые отображать на карточках аналогов. Если маппинг не настроен для конкретной категории — модуль автоматически подтянет первые пять непустых атрибутов товара, отфильтровав заведомо нерелевантные: «Производитель» (зачем показывать производителя на странице, где и так речь о конкретном бренде?), «Происхождение» и атрибуты с URL-encoded слагами, которые обычно являются техническим мусором.
Практический совет для тех, кто решит внедрить страницы аналогов: не пытайтесь покрыть все бренды одновременно. Начните с пяти-десяти ключевых конкурентных брендов, которые чаще всего упоминают ваши клиенты и которые чаще всего ищут в вашей нише. Создайте дерево страниц, заполните контентом — можно вручную для самых важных, можно с помощью нашего AI-генератора контента для массового создания. Запустите сканирование через админку, убедитесь, что сопоставление прошло корректно (в отчёте будет видно, сколько страниц успешно привязаны к товарам и сколько не привязаны). Через пару недель проверьте Google Search Console — вы увидите, как новые страницы начинают получать показы по запросам, которые раньше вы никогда не ловили. А потом постепенно расширяйте: новые бренды, новые продукты. Каждая новая страница — это ещё один рыболовный крючок в океане поискового трафика, и чем больше крючков — тем больше рыбы.
Почему мы построили это вместо YITH
Я уверен, что прямо сейчас кто-то из читателей думает: «А зачем изобретать велосипед? Есть же YITH WooCommerce Wishlist и YITH WooCommerce Compare — проверенные плагины, работают годами, тысячи установок.» И это справедливый вопрос, на который у меня есть развёрнутый ответ, основанный не на теории, а на реальном опыте работы с обоими плагинами на нескольких проектах.
YITH Wishlist Premium стоит 99 долларов в год. YITH Compare Premium — 79 долларов в год. Итого 178 долларов ежегодно за два плагина, за две функции. Для одного сайта. Если у вас три магазина — умножайте на три. Пятьсот с лишним долларов каждый год. За пять лет — это почти три тысячи долларов. За функции, которые на маркетплейсах работают из коробки и считаются базовыми. Но знаете что? Стоимость — это даже не главная проблема. Деньги можно заработать. Главная проблема — это конфликты с темой, избыточное потребление ресурсов, зависимость от стороннего кода и невозможность нормально кастомизировать.
Мы работали с клиентом, у которого стоял YITH Wishlist Premium на сайте с шестнадцатью тысячами товаров и темой dt-the7. Плагин хранил данные вишлистов в собственных таблицах, генерировал свои стили и скрипты, тянул за собой YITH Plugin Framework — это общий PHP-фреймворк для всех плагинов YITH, который подключается один раз, но весит заметно и добавляет свои хуки на каждую страницу. На каждую загрузку страницы грузились CSS и JS файлы вишлиста, даже если на странице не было ни одного товара — например, на странице «О компании» или «Контакты». Модуль сравнения от YITH открывал таблицу в отдельном popup-окне, которое в мобильном браузере выглядело ужасно — маленькое окно поверх страницы, не адаптированное под тач-интерфейс, которое нельзя было нормально прокрутить. Попытки кастомизировать внешний вид упирались в минифицированные стили с комментариями «do not edit» и в шаблоны, переопределение которых требовало копирования в тему и ручной правки PHP-кода.
Когда мы начали проектировать замену в рамках COS WP Woo, мы поставили несколько принципиальных условий, из которых не отступили. Полная обратная совместимость: шорткод yith_woocompare_table, cookie yith_woocompare_list — всё остаётся тем же самым, чтобы миграция была абсолютно безболезненной для посетителей сайта. Покупатель, который вчера добавил товары в сравнение через YITH, сегодня видит их в нашем модуле — без каких-либо действий со своей стороны. Автоматический импорт настроек: метод migrate_from_yith считывает все опции YITH Compare из wp_options и конвертирует их в наш формат — набор полей таблицы, ID страницы сравнения, лимит товаров, текст кнопки, заголовок таблицы. Один клик в админке — и все настройки перенесены. Никаких потерянных данных, никаких сломанных страниц, никакой ручной перенастройки.
Производительность — отдельная важная тема. YITH грузит свой фреймворк и ассеты глобально, на каждой странице сайта. Мы загружаем CSS и JS только там, где они нужны. Метод should_load_assets в нашем CompareFrontend проверяет текущую страницу: это WooCommerce-каталог, карточка товара, корзина, страница сравнения или страница с шорткодом? Если да — грузим. Если нет — не грузим. Для плавающей панели сравнения мы в итоге решили грузить скрипт глобально — но это один минимальный JS-файл весом в несколько килобайт, а не целый фреймворк. Разница в скорости загрузки ощутима, особенно на мобильных устройствах с ограниченной пропускной способностью и на сайтах, где каждая миллисекунда Page Speed влияет на позиции в поиске.
И последний, но не менее важный аргумент — единая экосистема. YITH Wishlist и YITH Compare — это два абсолютно независимых плагина, которые друг о друге ничего не знают. Кнопка сравнения и кнопка вишлиста живут в разных плагинах, стилизуются отдельно, конфликтуют с темой по-разному, обновляются в разное время и иногда после обновления одного ломается другой. В COS WP Woo все три модуля — Compare, Wishlist и Brand Analogs — часть одного плагина, одной архитектуры, одного релизного цикла. Они используют одну систему переводов, один стилевой подход, одну архитектуру AJAX-обработчиков с проверкой nonce. Кнопки сравнения и вишлиста на карточке товара стоят рядом и выглядят как единое целое, потому что они спроектированы как единое целое. Шорткод аналогов бренда может содержать кнопки сравнения и добавления в вишлист, потому что все модули осведомлены друг о друге. Это не зоопарк из десяти плагинов от десяти авторов, каждый из которых тянет свой фреймворк и конфликтует с соседом — это одна продуманная, протестированная система.
А что если посмотреть на всё это с другой стороны? Давайте поговорим о среднем чеке — ради чего, собственно, всё и затевается. Я утверждаю, что три описанные функции увеличивают средний чек интернет-магазина, и вот мой аргумент по каждой из них.
Сравнение товаров подталкивает покупателя к более дорогому варианту. Когда человек видит два масла рядом в одной таблице — одно за две тысячи рублей с тремя техническими характеристиками, другое за три с половиной тысячи с семью характеристиками, более широким температурным диапазоном и допуском от производителя оборудования — он интуитивно понимает, что дорогое лучше подходит для его задачи. Без таблицы сравнения он бы выбрал дешёвое, потому что не видел разницы и не хотел тратить время на изучение двух карточек товара по отдельности. С таблицей сравнения он выбирает осознанно — и часто выбирает более дорогой и маржинальный для вас товар, потому что теперь понимает, за что платит. Это апсейл через информацию, а не через давление менеджера. И это тот апсейл, за который покупатель вас благодарит, а не раздражается.
Вишлист работает на средний чек через механизм накопления. Покупатель добавляет товары в избранное в течение недели, двух недель, месяца, квартала. Когда приходит момент покупки — будь то приход бюджета, конец отчётного периода или просто уведомление о снижении цены — он оформляет заказ не на один товар, а на пять, десять, двадцать. Я видел это в аналитике нескольких магазинов: средний заказ пользователей, которые активно используют вишлист, в два-три раза больше по сумме, чем у тех, кто покупает импульсивно «с налёта». Логика простая: если человек собирал список, значит, он думал, планировал, готовил бюджет. Его заказ — продуманный и крупный. Вишлист превращает импульсивного покупателя, который берёт одну банку масла, в планирующего закупщика, который оформляет заказ на всю линейку расходников.
Аналоги по бренду увеличивают средний чек через расширение видимого ассортимента. Человек пришёл из Google за аналогом одного конкретного масла — а увидел на вашем сайте, что у вас есть аналоги целой линейки. Shell Tellus S4 VX 32, Shell Tellus S4 ME 46, Shell Omala S4 GX 320, Shell Corena S4 R 46 — и для каждого есть российский аналог с подробной таблицей характеристик. Покупатель, который пришёл за одной канистрой, уходит с заказом на пять. Потому что он увидел, что ваш магазин — это полноценная, системная альтернатива импортным брендам по всей линейке, а не случайная находка по одному запросу в Google. Вы перестали быть «сайтом, где я случайно нашёл один аналог» и стали «магазином, где есть аналоги всего, что мне нужно». Это колоссальная разница в восприятии и в размере заказа.
Хочу коснуться нескольких технических моментов, которые важны для тех, кто будет внедрять эти модули на своём WooCommerce-сайте. Работа с гостевыми пользователями — принципиальный вопрос для любого интернет-магазина, где регистрация не обязательна. Сравнение хранит список в cookie yith_woocompare_list с временем жизни тридцать дней, что покрывает даже длинный цикл принятия решения в B2B. Вишлист для гостей использует клиентское хранилище, а при авторизации бесшовно мержит накопленные данные в базу через INSERT IGNORE. Аналоги — полностью серверный рендеринг через шорткод, не зависят от состояния аутентификации вообще. Это значит, что неавторизованный посетитель может полноценно пользоваться сравнением и добавлять товары в избранное, не создавая аккаунт. Регистрация становится нужна только для долгосрочного хранения вишлиста и получения email-уведомлений — и это правильный, ненасильственный стимул к регистрации: «зарегистрируйтесь, чтобы не потерять избранное и получать уведомления о снижении цен», а не «зарегистрируйтесь, чтобы продолжить пользоваться сайтом».
AJAX-обработка заслуживает отдельного упоминания, потому что от неё напрямую зависит пользовательский опыт. Все действия — добавление в сравнение, удаление из сравнения, toggle вишлиста — работают через wp_ajax и wp_ajax_nopriv с обязательной проверкой nonce для защиты от CSRF-атак. Это безопасно и быстро: пользователь нажимает кнопку — AJAX-запрос уходит на сервер — ответ возвращается за пятьдесят-сто миллисекунд — интерфейс обновляется мгновенно. Никаких перезагрузок страницы, никаких белых экранов, никаких потерь позиции скролла. Покупатель остаётся ровно в том месте каталога, где был, и продолжает выбирать. Это кажется самоочевидным, пока вы не сталкиваетесь с плагинами, которые при каждом добавлении в вишлист делают полную перезагрузку страницы и выбрасывают покупателя в начало каталога. На мобильном устройстве, где человек пролистал двести товаров, нажал сердечко и внезапно оказался наверху — это гарантированная потеря конверсии и раздражение пользователя.
Shareable URL для сравнения — функция, которую мы добавили по конкретным просьбам B2B-клиентов. Формат предельно простой: ваш-сайт.ru/сравнение/?wpaic_compare=123,456,789. Покупатель или менеджер может скопировать эту ссылку и отправить кому угодно — другу, коллеге, менеджеру по закупкам, руководителю, в корпоративный чат. Получатель откроет ссылку — и увидит ту же таблицу сравнения с теми же товарами, даже если сам никогда не был на этом сайте и ничего не добавлял. Для B2B это стандартный повседневный сценарий: инженер на производстве сравнил три варианта смазки, отправил ссылку закупщику, закупщик посмотрел, согласовал с главным инженером (отправив ту же ссылку дальше) и оформил заказ. Цепочка принятия решения — три человека, один URL, одна таблица. Без регистрации, без cookie, без пересказывания характеристик по телефону — чистый URL с параметром, который работает у всех одинаково.
Я иногда слышу от коллег-маркетологов, что все эти функции — сравнение, вишлисты, аналоги — это «nice to have», а не «must have». Что сначала нужно настроить рекламу, SEO, воронку продаж, CRM, и только потом уже думать об UX-улучшениях. Я с этим категорически не согласен, и вот почему. Реклама в Директе приводит трафик на сайт. SEO приводит органический трафик на сайт. Но если на сайте нет инструментов для осознанного, комфортного выбора — трафик утекает, как вода через решето. Вы платите за каждый клик в рекламе, за каждую позицию в выдаче, а покупатель уходит, потому что не может нормально сравнить два похожих товара и выбрать подходящий. Или забывает о вашем магазине через неделю, потому что нет вишлиста и нет уведомлений, которые вернули бы его обратно. Или ищет аналог импортного масла в Google и попадает к конкуренту, потому что у вас нет страницы аналогов, а у конкурента — есть.
COS WP Woo закрывает все три потребности одним плагином, одной установкой, одной лицензией. Модуль сравнения с AJAX-добавлением, динамическими атрибутами, PDF-экспортом, шареабельными URL и полной обратной совместимостью с YITH Compare. Модуль вишлистов с множественными списками, тремя уровнями приватности, шерингом по уникальной ссылке, автоматическим мержем гостевых данных, drag-and-drop сортировкой и аналитикой самых популярных товаров. Модуль аналогов по бренду с автоматическим сканированием дерева страниц WordPress, трёхступенчатым алгоритмом сопоставления товаров, атрибутивным маппированием по категориям и SEO-оптимизированными шорткодами с каруселью и табами. И поверх всего этого — автоматические email-уведомления о снижении цены и возврате в наличие, которые конвертируют отложенный спрос в реальные продажи без участия менеджера, без внешних сервисов и без ежемесячных платежей за email-платформу.
Если вы сейчас используете YITH Wishlist и YITH Compare — миграция займёт пять минут. Деактивируете YITH, активируете COS WP Woo, нажимаете кнопку импорта настроек — готово. Шорткоды совместимы, cookie совместимы, данные не теряются. Если вы вообще не используете ни сравнение, ни вишлисты, ни страницы аналогов — самое время начать, потому что каждый день без этих инструментов — это упущенные заказы, более низкий средний чек и потерянный SEO-трафик на запросах аналогов, который забирают ваши конкуренты. А если вам нужна помощь с настройкой, с созданием дерева страниц аналогов или с нестандартным маппингом атрибутов под ваш каталог — напишите нам. Мы разработали этот плагин, мы знаем его до последней строчки кода, и мы заинтересованы в том, чтобы он работал на вашем сайте так же эффективно, как на наших собственных проектах. Попробуйте COS WP Woo — и пусть ваш средний чек наконец-то начнёт расти так, как вы того заслуживаете.