Код, интерфейсы и трафик без воды
lawebbox

Почему сайт услуг не получает клики из поиска даже с высокими позициями

На Хабре разобрали типичный инцидент из прода: сайт услуг стабильно в топе, конверсии ноль.

Максим Воронцов, Хардкорный бэкендер и девопс · обновлено 29 августа 2026 г.

Почему сайт услуг не получает клики из поиска даже с высокими позициями

Менеджер объясняет по телефону то, что парсер давно должен был вытащить из разметки. SEO-подрядчик разводит руками — позиции же есть. Заказчик психует. Классика.

200 OK, ноль заявок

Позиция в выдаче ≠ клик. Это как сервер, который бодро отдаёт 200 OK, но возвращает пустую payload. Формально жив, по смыслу — труп. Сайт услуг работает так же: виден в поиске, но машина не понимает, что именно на нём лежит. Услуга — не товар. Product, Offer, price, availability — схема из коробки рассчитана на магазин. Там всё чисто: SKU, валюта, остаток, доставка. С услугой всё грязнее.

Цена «от», расчёт после замера, регион в футере, замер бесплатный только в пределах города, гарантия в соседнем разделе, пакеты — в третьем. Менеджер знает, что входит в «остекление балкона под ключ». Машина — нет. Если страницу всё равно разметили как Product и поставили price: 0, чтобы поле было, — это не микроразметка, это костыль с сюрпризом.

Что машина не угадывает

Schema.org для услуг есть, и она честно работает: Service, provider, areaServed, offers с priceSpecification, ServiceChannel. Но её не размечают — в интернете примеры в основном про товары. А ещё потому, что часть данных живёт не на странице, а в голове менеджера, в CMS, в карточках, в FAQ, в футере, в трёх соседних документах. Чтобы машина поняла страницу, эти связи надо явно протащить в JSON-LD: кто оказывает, где, что входит, какая публичная цена, какие ограничения по региону или типу объекта. Текста на странице может хватать — но если разметка кривая, сниппет в выдаче будет бедный. Пользователь пройдёт мимо.

Что делать на проде

Не трогать тексты. Лечить схему. Минимум для страницы услуги:

{
"@context": "
"@type": "Service",
"name": "Остекление балконов",
"provider": { "@type": "LocalBusiness", "name": "..." },
"areaServed": { "@type": "City", "name": "..." },
"offers": {
"@type": "Offer",
"priceSpecification": {
"@type": "PriceSpecification",
"priceCurrency": "RUB",
"price": "от 25000",
"description": "точная цена после замера"
}
}
}

Прогоните страницу через Rich Results Test и Schema Markup Validator. Если валидатор ругается — правите до зелёного, а не до «вроде работает». Перед правкой JSON-LD — бэкап шаблона, обязательно: один лишний апостроф, и сайт ляжет на полпути к конверсии. А пока чините разметку — досуг на вечер никто не отменял.