Разработка интернет-магазина зоотоваров упирается в две вещи: одна и та же формула корма живет в нескольких весах, а покупатель приходит за ней каждые две-три недели. Поэтому каркас строим вокруг веса как варианта карты и повтора заказа в один шаг, а не вокруг количества страниц каталога. Мы сняли показатели с трех живых магазинов с каталогом того же масштаба: первый ответ сервера 235,0, 402,9 и 494,7 мс при весе HTML от 143,6 до 502,3 КБ. Срок – 25–45 рабочих дней от утверждения ТС. Цены здесь нет намеренно: сначала бесплатный аудит.
от 143,6 до 502,3 КБ – разброс в семь раз на одной платформе
Показатели сняты нашим замером на живых сайтах соответствующего масштаба.
после бесплатного аудита
Стоимость
30
Гарантия
дней после подписания акта
25–45
Срок разработки
рабочих дней от утверждения ТС
3 с
Магазинов с каталогом такого масштаба померили
айта, измерение 31.07–01.08.2026
235,0 мс
Первый ответ сервера
, 402,9 мс и 494,7 мс
от 143,6 до 502,3 КБ – разброс в семь раз на одной платформе
Вес HTML главной
/sitemap.xml отдает HTTP 200 с телом на 0 байт
Типичная находка
бесплатный аудит, 2–4 рабочих дня
Перед сметой
Кому подходит
Ситуации, в которых эта услуга даёт результат
Сценарий 1 из 5
Офлайн-зоомагазин, в котором заказ принимают по телефону
Постоянный покупатель каждый раз диктует то же название и тот же вес, продавец каждый раз проверяет остаток. Сайт снимает этот повтор: история заказов уже содержит позицию, кнопка повтора переносит ее в корзину, менеджер видит оформленный заказ вместо переписки.
Разберём вашу ситуацию на бесплатном аудите
Сценарий 2 из 5
Ветклиника или груминг-салон с полкой кормов
Товар продается уже пришедшим и не продается никому другому. Магазин расширяет полку в каталог, а рекомендацию врача к ссылке на конкретную позицию с нормой кормления в карточке. Клиент клиники после авторизации видит свою цену и второй сайт для этого не нужен.
Сценарий 3 из 5
Заводчик или питомник, берущий мешками
Здесь решает не конструкция, а кратность и остаток. Такие покупатели приходят реже, но в больших объёмах, и им нужна своя цена, кратность упаковки и счёт. Все это находится в одном каталоге в группе покупателей — отдельный B2B-кабинет имеет смысл только тогда, когда оптовая торговля — ваше основное направление.
Сценарий 4 из 5
Магазин уже есть, но каждый вес заведен отдельной карточкой
Самое частое состояние, с которым приходят. Один корм в трех фасовках дает три почти одинаковые страницы, конкурирующие между собой в выдаче. Переводим весы в варианты одной карты с canonical по основному адресу. Количество страниц падает – это нормальный ход событий, а не потеря.
Сценарий 5 из 5
Продажи уходят с маркетплейса, и комиссия съедает наценку на кормах.
Корм — товар с тонкой маржой и высокой частотой покупки, поэтому процент площадки здесь более ощутим, чем на разовом товаре. Свой магазин площадка не заменяет: каталог выгружается в ФИД из одного источника цен и остатков. Чего фид не делает – не делает вашу цену конкурентной.
Что входит
Полный перечень работ и того, что вы получаете на выходе
Каталог по виду животного, типу товара и бренду с фильтром по возрасту, весу животного и особым потребностям — покупатель доходит до нужного корма без менеджера
Весы и фасовка как варианты одной карты с canonical по основному адресу — покупатель переключает вес, поисковик видит одну страницу вместо трех
Карта с составом, нормой кормления и весом упаковки отдельными полями – вопросы о дозировке закрываются в корзину
Повторный заказ в один шаг по истории покупок — постоянный покупатель не ищет ту же позицию заново
Группы покупателей для заводчиков и ветклиник: своя цена и кратность после авторизации, без второго сайта
Оплата: LiqPay, WayForPay, Privat24, monobank, наложенный платеж — человек платит обычным способом, а не тем, который остался
Доставка: Новая Почта с выбором отделения прямо в чекате, Укрпочта, курьер по городу, самовывоз; порог бесплатной доставки от суммы
Техническое SEO: ЧПУ, canonical, уникальные title и карта сайта, которую мы открываем и меряем в байтах ответа
Микроразметка JSON-LD: Store, Product, Offer, BreadcrumbList — цена и наличие отдаются машинным форматом
Аналитика: GTM, GA4, события корзины, покупки и повторного заказа — часть повторов видна цифрой, а не на слух
Передача: доступ, письменная инструкция под ваши процессы, проход админки с менеджером на живом заказе
Условия: предоплата 50%, два раунда правок на этапе дизайна, гарантийный срок 30 календарных дней после приемки
Когда эта услуга не подходит
Что не входит в работу — чтобы не было сюрпризов на сдаче
Описание состава кормов и рекомендаций по кормлению – эти данные дает производитель
Ветеринарные консультации на сайте как услуга
Оборот ветпрепаратов, требующих отдельного разрешения
Реклама после запуска
Хостинг, домен, эквайринг
Вместо ценовой вилки – бесплатный аудит зоомагазина.
Зоомагазин живет на повторных покупках: тот же корм берут каждые две-три недели. Аудит показывает, насколько ваш сайт к этому приспособлен и сколько работы прячется в фасовках. Без этих двух ответов любая названная сумма будет выдумкой.
Что мы измеряем
Весы и фасовкаСколько позиций прайса – это одна формула корма в нескольких упаковках. От этой цифры зависит, будут ли весы вариантами карты или отдельными товарами, и сколько адресов в конечном счете даст каталог.
Механика повторного заказаМожет ли покупатель повторить предварительный заказ в один шаг и сохраняется ли история вообще. В нише с циклом покупки в две-три недели это главное после наличия.
Фильтр по животному и возрастуЕсть ли у данных вид животного, возраст, вес и особые потребности отдельными полями. Если эти признаки лежат в названии товара текстом, то фильтр не соберется, пока прайс не разберут.
Скорость и вес страницыПервый ответ на сервер и вес разметки. Измерены ориентиры по магазинам с каталогом того же масштаба: от 235,0 мс при 143,6 КБ до 494,7 мс при 502,3 КБ. Отдельно меряем страницу категории: в магазине полива категория на 100 позиций весит 554 КБ против 143,6 КБ на главной.
Состояние карты сайтаНе «настроена», а сколько байтов она отдает. В двух из трех измеренных магазинов /sitemap.xml возвращает HTTP 200 с телом на ноль байт, а строка Sitemap в robots.txt закомментирована из дефолтного шаблона OpenCart.
Группы покупателейЕсть ли в прайсе отдельная цена для заводчиков и клиник и привязана ли она к кратности. Это определяет, обойдемся ли мы группами покупателей или понадобится отдельный вход.
АналитикаЧто стоит и собирает ли это данные. В двух из трех измеренных магазинов не нашлось ни одного счетчика – ни GA4, ни GTM, ни пикселя. Подсчитать повторные покупки в таком состоянии нечем.
Что вы получаете
Документ по текущему сайту с цифрами: первый ответ сервера, вес HTML, сколько байтов отдает карта сайта, список оплат и доставок, состояние аналитики.
Оценку работ по весам и фасовкам: варианты или отдельные карточки, сколько это даст адрес и что делать с уже в индексе.
Предложение по механике повторного заказа с оценкой объема – от кнопки в истории до напоминаний почтовым сервисом.
Разговор на 30–40 минут по документу, где отвечаем по пунктам.
Срок: 2–4 рабочих дня с момента, когда мы получили адрес сайта или выгрузку прайса
Почему это бесплатно
Ибо в зоотоварах деньги приносит не первая продажа, а вторая и десятая, и смета должна учитывать механику возврата покупателя. Увидеть текущее состояние быстрее, чем обсуждать абстрактную вилку. Документ остается вашим, даже если магазин будем делать не мы.
Что дальше
После аудита мы называем сумму и срок по этапам с календарными датами, далее договор, счет, акт. Если из цифр станет видно, что магазин вам сейчас не нужен, мы так и скажем – случаи, перечисленные ниже на этой странице.
Короткая форма: контакт и адрес сайта
Договор, акт и гарантия 30 дней
На каждый проект письменный договор: объём, сроки, сумма, порядок приёмки. После сдачи — акт и счёт, затем 30 календарных дней гарантии.
ФОП и безналичный расчёт
Исполнитель — зарегистрированный ФОП. Оплата на счёт с закрывающими документами.
Права и доступы — ваши
Код, дизайн и материалы переходят к вам после полной оплаты. Домен, хостинг, репозиторий оформляем на вас.
Портал клиента вместо переписки
Во время работы вы получаете доступ к порталу: договоры, счета, акты и статус проекта в одном месте.
Заказчики из Европы
Среди работ — проекты для Норвегии, Болгарии, Молдовы и Испании.
Цифры, которые можно проверить
Каждый кейс в портфолио — со ссылкой на живой сайт и техническим замером.
Сначала аудит, потом сумма
Прайса на сайте нет намеренно: объём одной и той же работы у двух клиентов отличается кратно.
Говорим «нет», когда не уверены
Если задача не наша или срок нереальный — скажем сразу.
Что влияет на стоимость
Почему две одинаковые на вид задачи считаются по-разному
Весы и фасовкаПрайс, где вес вынесен отдельным полем, собирается в варианты автоматически. Прайс, где вес сидит в конце названия товара строчкой, приходится разбирать правилами и проверять руками — и это самое частое из тех, что мы видели.
Механика повторного заказаКнопка «повторить» в истории заказов – это несколько дней. Регулярные поставки с расписанием, напоминанием по дате и пересчету остатка – отдельная логика поверх магазина, и считается она отдельно.
Глубина фильтраВид животного и бренд – базовый набор. Возраст, вес животного, особые потребности, тип корма, наличие зерновых — каждый признак должен быть в данных, иначе его надо туда внести. Работа здесь не в настройке фильтра, а в приведении прайса в подходящий вид.
Группы покупателейСвоя цена для заводчика или клиники – настройка. Кратность упаковки, персональные скидки по объему и счет для ФЛП добавляют шаги в чекате и проверку на каждом из них.
Ветеринарная группа товаровОтдельные поля, предупреждения в карте и ограничения на продажу части позиций – это не строчка в прайсе, а отдельная ветвь каталога со своими правилами. Что именно вы вправе продавать онлайн, решается до сборки, а не после.
Состояние контентаФото упаковок от производителя и заполненные характеристики экономят недели. Каталог, где состав и норма кормления лежат в PDF картинкой, приходится набирать – это отдельная строка сметы и отдельный срок.
Этапы работы
Прозрачные этапы с согласованием на каждом шагу
Общий срок:25–45 дней
1
Аудит и бриф
3–5 рабочих дней
Меряем текущий сайт, если он есть, и разбираем прайс: сколько формул, сколько расфасовок, какие признаки есть у данных, а каких нет. На выходе - ТС, по которому считается смета и принимается работа.
2
Структура каталога и карта корма
3–5 рабочих дней
Дерево по виду животного и типу товара, набор признаков для фильтра, поля карты под склад, норму кормления и вес упаковки, правило выбора веса в карте. Согласны к дизайну: переделывать это после верстки дорого.
3
Дизайн
5–8 рабочих дней
Главная, категория, карта с переключателем веса, корзина, чекаут, кабинет с историей заказов. Здесь же фиксируем целевой вес страницы — и главной, и тяжелой категории, потому что разница между ними бывает в несколько раз.
4
Сборник магазина
8–13 рабочих дней
Верстка темы, каталог и фильтр, варианты веса из canonical по основному адресу, корзина и чекаут, группы покупателей, роли в админке, страницы оплаты, доставки и возврата.
5
Прайс, повтор заказа, аналитика
4–9 рабочих дней
Мапинг полей прайса и тестовая заливка, сверка количества карточек двумя независимыми методами, кабинет с историей и кнопкой повтора, GTM и GA4 с событиями корзины, покупки и повтора, JSON-LD, карта сайта с проверкой размера ответа.
6
Тестирование, передача, запуск
2–5 рабочих дней
Сквозной прогон заказа от корзины до ТТН, отдельно прогон повторного заказа старым покупателем, замеры первого ответа и веса HTML, проход админки с вашим менеджером, передача доступов.
Не нашли свой случай?
Опишите, как это устроено у вас, — ответим, подходит ли «Разработка интернет-магазина зоотоваров» и что это значит в вашей ситуации. Без брифа и без звонка: один вопрос, один ответ.
Технологии и интеграции
На чём строим и с чем это соединяется
Стек
OpenCart 4.x – базовая версия; часть украинских модулей под нее до сих пор не собрана
OpenCart 3.x – когда нужен модуль без сборки под 4.x; ветвь уже не развивают
PHP в поддерживаемой версии – в двух из трех измеренных магазинов стояла 7.3, без поддержки с 2021 года
MySQL - каталог зоотоваров средний, отдельный поисковый двигатель здесь лишний
nginx + HTTP/2 — держит первый ответ в пределах 235–500 мс; далее упирается в тему, не в сервер
Сжатие brotli – в измеренном магазине полива 143,6 КБ разметки едут по сети как 22,5 КБ
OCFilter – фильтр по признакам карты; комбинации приходится закрывать каноникалами и robots
Варианты товара из canonical – убирают дубли весов, но сокращают количество адресов в карте сайта
Модуль истории заказов и повтора – дает кнопку, не дает спроса
Интеграции
LiqPay
WayForPay
Privat24
monobank
наложенный платеж
Новая Почта
Укрпочта
курьерская доставка по городу
самовывоз
Google Tag Manager
GA4
Google Ads
Meta Pixel
eSputnik
Telegram
Viber
Свой магазин зоотоваров против заказов в мессенджере и маркетплейсе
Чем этот вариант отличается от альтернативы
Мессенджер / маркетплейсНаш подход
Повторная покупкамессенджер: покупатель диктует название заново; маркетплейс: история есть, но она площадкикнопка в истории заказов: корм и вес уже выбраны
Вес и фасовкамессенджер: уточняется в переписке; маркетплейс: каждый вес - отдельная карточка по правилам площадкиварианты одной карты, canonical по основному адресу
Цена для заводчика и клиникимессенджер: прайс файлом в чате; маркетплейс: одна цена для всехгруппа покупателя, цена и кратность после авторизации
Комиссия по каждой продажемессенджер: нет; маркетплейс: процент по каждому заказу, и на кормах он ощутимнет – хостинг, домен и эквайринг
База постоянных покупателеймессенджер: список в переписке; маркетплейс: контакты остаются у площадкиистория заказов ваша, выгружается вместе с контактами
Кейсы
Задачи и результат в цифрах — все показатели сняты нашим замером
магазин систем автоматического и капельного полива с ландшафтными услугами
Задача
Собрать технический ассортимент, где номенклатура мелкая и визуально одинаковая: колени, муфты и тройники отличаются диаметром и резьбой. Задача той же природы, что корм в одной формуле и в нескольких фасовках.
Решение
OpenCart 3 по nginx с HTTP/2 и сжатием brotli. Каталог на четыре уровня вложенности в категориях OCFilter. В чекате Новая Почта с отделением, курьером и почтоматом и Укрпочта; оплата при доставке, перевод и LiqPay.
Результат
Измерение 01.08.2026: 300 товаров в 40 категориях на четырех уровнях, цифра подтверждена двумя независимыми методами с расхождением 0%. Первый ответ сервера 235 мс, вес HTML главной 143,6 КБ, у brotli – 22,5 КБ; страница категории со 100 позициями весит 554 КБ. Найденные дефекты: /sitemap.xml отдает 200 и нуль байт, JSON-LD нет ни одного блока, аналитики не установлены вообще.
интернет-магазин доставки сладостей, снеков и подарочных наборов
Задача
Продавать товар, который берут повторно и преимущественно по телефону: каталог с фильтрами по типу и назначению, корзина с выбором доставки, онлайн-оплата.
Решение
OpenCart 3.x по nginx с HTTP/2. Пять способов онлайн-оплаты и четыре способа доставки; бесплатная доставка в отделение Новой Почты от 2 500 грн. вынесена баннером на главную.
Результат
Измерение 31.07.2026: первый ответ сервера 402,9 мс, полная загрузка HTML 532,4 мс при весе 303,4 КБ. Найденные дефекты: объем каталога извне сосчитать не удалось - /sitemap.xml отдает HTTP 200 с телом на ноль байт, а фид карты сайта 404; ни одного счетчика аналитики на сайте нет.
специализированный магазин товаров с ограничениями на продажу
Задача
Продавать узкую группу товаров, где в карте должна стоять не только характеристика, но и правовая информация об использовании, чтобы покупатель выбрал без консультации.
Решение
OpenCart 3.x по nginx с HTTP/2, две языковые версии, карточка с правовым блоком и сравнением моделей. Оплата картой и наложенный платеж, Новая Почта и Укрпочта, отложенная загрузка изображений.
Результат
Измерение 31.07.2026: карта сайта как индекс из четырех подкарт - 48 товаров и 18 категорий, вместе 68 адресов. Первый ответ 494,7 мс, полная загрузка 567,5 мс при весе 502,3 КБ; 154 из 190 изображений (81%) грузятся отложено. Найдены дефекты: структурированной разметки нет ни одного типа, на главной нет тега h1, на аналитике стоит только пиксель соцсети.
Что нужно от вас
Без этого не начнём — лучше подготовить заранее
1Прайс машинным файлом: название, бренд, вес упаковки, вид животного, возраст, цена, остаток. Фото таблицы таким файлом не является.
2Нормы кормления, если вы показываете их на карте — они приходят от производителя, не от нас.
3Фото упаковок; в кормах обычно достаточно фото изготовителя, снимать с нуля не нужно.
5Список групп покупателей с их ценами и кратностью, если вы работаете с заводчиками или клиниками.
6Доступ к хостингу и домену или согласие подобрать хостинг за вас.
7Одного человека с правом утвердить структуру каталога и сказать да по макетам.
Если чего-то из этого нет — скажите, подскажем, как собрать или сделаем сами отдельной задачей.
Частые вопросы
Что спрашивают чаще всего — с конкретными ответами
Тот же корм в трех весах — это три товара или один?
Обычно один товар с выбором веса: покупатель сравнивает формулу, а не упаковку, и ему удобнее переключать фасовку прямо в карточке. Отдельные карточки оправданы тогда, когда конкретный вес имеет свой артикул и его ищут отдельным запросом. Наша рекомендация: пока такого запроса нет, не плодьте карточки – три почти одинаковые страницы конкурируют между собой и размывают обход сайта. Решение фиксируем в ТС к сборке, потому что от него зависит и количество адресов, и работа с дублями.
Как сделать, чтобы покупатели возвращались за кормом?
Техническая часть проста: история заказов, кнопка повтора в один шаг и напоминание средствами почтового сервиса. Мы делаем механику. Сработает ли она, зависит от ассортимента и цены и обещать конкретный прирост повторных покупок мы не будем — собственного измерения этого показателя у нас нет. Что можно померить сразу — часть заказов, оформленных через повтор, при условии, что на сайте стоит аналитика. В двух из трех измеренных нами магазинов она не стояла вообще, поэтому там подобный разговор опирался бы на слова.
Можно ли продавать ветпрепараты через сайт?
Часть – да, часть – нет, и этот вопрос не к сайту, а к правилам обращения конкретной группы препаратов. Технически мы выводим нужные поля, предупреждения в карте и ограничения на заказ, но ответственность за то, что вы имеете право продавать онлайн, остается за вами. Говорим об этом на старте: переносить часть каталога в другую ветку после запуска дороже, чем развести группы товаров на этапе структуры. Один из измеренных нами магазинов решает похожую задачу правовым блоком прямо в карточке – покупатель читает ограничения в корзину, а не после.
Почему зоомагазин не в индексе, хотя карта сайта вроде бы есть?
Потому что она может отдавать ноль байтам. В двух из трех измеренных магазинов /sitemap.xml возвращает HTTP 200 с пустым телом, фид карты сайта - 404, а строка Sitemap в robots.txt закомментирована из дефолтного шаблона. В браузере все смотрится штатно, практически поисковик не получает никакого адреса. Мы проверяем это первым делом и меряем именно в байтах ответа. Честный предел: сама карта сайта позиций не поднимает и индексации не гарантирует - Google пишет об этом прямо, а реальное количество проиндексированных страниц видно только в вашем Search Console.
Сколько признаков выносите в фильтр каталога кормов?
Столько, сколько реально есть в данных. Вид животного, возраст, вес животного и особые потребности закрывают большинство сценариев выбора; далее прирост пользы падает быстро. Две границы, о которых следует знать заранее. Первая: на каталоге в несколько сотен позиций сложная фильтрация дает мало – там сильнее работает понятная структура категорий, и измеренный магазин полива с 300 позициями на четырех уровнях вложенности – именно такой случай. Вторая: фильтры рождают комбинаторное количество адресов, и если их не закрыть каноникалами и robots, в индекс поедут тысячи почти одинаковых страниц.
Нужен отдельный сайт для заводчиков и ветклиник?
Нет, достаточно групп покупателей: заводчик или клиника после авторизации видит свою цену и кратность, остальные каталоги та же. Отдельный вход имеет смысл тогда, когда оптовое направление у вас основное и розница живет рядом по остаточному принципу – тогда каркас лучше строить вокруг опта, и это уже соседняя страница. Промежуточного варианта «чуть-чуть опта сбоку» мы не советуем: он обычно заканчивается двумя каталогами, которые кто-то должен держать в синхроне руками.
Страница категории открывается долго – это платформа виновата?
Чаще виновата тема и количество позиций на странице, а не движок. В измеренном магазине полива главная отдается за 235 мс и весит 143,6 КБ, а страница категории со 100 позициями – уже 554 КБ; это один и тот же сайт. Поэтому вес мы фиксируем на этапе дизайна отдельно для главной и отдельно для тяжелой категории, а не меряем после жалоб. Предел честности здесь прост: скорость убирает техническую потерю, но не делает предложение привлекательным. Страница, грузящаяся за 200 мс, просто скорее покажет человеку причину уйти.
Сколько способов доставки подключать?
Те, которыми реально пользуется ваш покупатель, и не больше. Измеренный ориентир: в магазине полива в ожидании шесть способов от двух перевозчиков — отделение, курьер и почтомат Новой Почты плюс три варианта Укрпочты. Выбор отделения прямо в чекате снимает с менеджера уточнения адреса по каждому заказу. Чего он не делает: не удешевляет саму доставку, не ускоряет перевозчика и не спасает от покупателя, избравшего не то отделение. И уволенный час менеджера становится деньгами только тогда, когда его действительно на что-то перераспределили.
Сколько длится технология и от чего зависит срок?
25–45 рабочих дней от утверждения ТС, шесть этапов. Каталог в этой нише обычно среднего размера, поэтому основное время уходит не на импорт, а на фасовку, фильтр по животному и возрасту и механику повтора. Если прайс структурирован и вес в нем отдельным полем – срок по нижнему пределу. Если вес приходится извлекать из названий товаров правилами и проверять руками – по верхней.
За 2–4 рабочих дня получите документ: скорость, вес HTML, состояние карты сайта, оценка работ по весам и механике повторного заказа. Далее – сумма и срок по этапам.
Из измеренных кейсовИзмерение 31.07.2026: первый ответ сервера 402,9 мс, полная загрузка HTML 532,4 мс при весе 303,4 КБ
Прайса на сайте нет намеренно: объём той же работы у двух клиентов отличается в разы, и цифра «от» в этом случае ничего не объясняет. Сначала бесплатный аудит — считаем ваши страницы, дубли и скорость, — потом называем сумму и срок и фиксируем их в договоре.