Интернет-магазин на WordPress: от идеи до первой продажи за месяц

17 ноября 2025
Интернет-магазин на WordPress: от идеи до первой продажи за месяц

Две недели назад клиент спросил: «Правда ли, что интернет-магазин делается полгода?» Показал ему магазин косметики, который запустили за 28 дней — от первого звонка до первой продажи. За 16 лет работы с WordPress запустил 83 интернет-магазина. Средний срок — 4-6 недель от идеи до продаж. Самый быстрый — 14 дней (простой каталог). Самый долгий — 4 месяца (сложные интеграции с SAP). Сегодня покажу реальный план запуска за месяц на примере проекта «BeautyShop» — магазина корейской косметики.

Миф о «долгой разработке»: откуда растут ноги

Почему говорят, что интернет-магазин — это 6-12 месяцев?

Путают с enterprise разработкой:

  • Маркетплейс уровня Ozon — да, 12+ месяцев
  • Интеграция с 5 складами и SAP — да, 6 месяцев
  • Простой магазин 200-500 товаров — 4-6 недель

Реальные сроки по сложности:

Простой магазин (200 товаров, 1 способ доставки):
├─ Дизайн: 1 неделя
├─ Разработка: 2 недели
├─ Наполнение: 1 неделя
└─ ИТОГО: 4 недели

Средний магазин (500-1000 товаров, интеграции):
├─ Дизайн: 2 недели
├─ Разработка: 3 недели
├─ Интеграции: 1 неделя
├─ Наполнение: 1 неделя
└─ ИТОГО: 6-7 недель

Сложный магазин (5000+ товаров, кастомный функционал):
├─ Аналитика: 2 недели
├─ Дизайн: 3 недели
├─ Разработка: 6 недель
├─ Интеграции: 3 недели
├─ Тестирование: 2 недели
└─ ИТОГО: 16 недель (4 месяца)

Реальный кейс: BeautyShop — от звонка до продажи за 28 дней

Исходные данные клиента

Клиент: Анна, импортер корейской косметики
Задача: Запустить онлайн-продажи
Текущая ситуация:

  • Продажи только через Instagram
  • Каталог: 350 товаров (уход за кожей, косметика)
  • База клиентов: 2,400 человек
  • Оборот: 800,000₽/мес (Instagram + маркетплейсы)
  • Бюджет: 180,000₽
  • Дедлайн: «Хочу к Black Friday» (через 5 недель)

Первый звонок (30 октября 2024):

Анна: «Мне сказали, что интернет-магазин делается полгода. Но у меня через месяц Black Friday — самая горячая пора. Можно ли успеть хотя бы базовую версию?»

Я: «Можем запустить MVP (минимально жизнеспособный продукт) за 4 недели. Получите рабочий магазин с приемом оплаты, доставкой и всем необходимым. Расширенный функционал добавим уже в процессе работы.»

План на 28 дней

Согласовали:

Неделя 1 (31 окт - 6 ноя): Подготовка и дизайн
Неделя 2 (7-13 ноября): Разработка
Неделя 3 (14-20 ноября): Наполнение и интеграции
Неделя 4 (21-27 ноября): Тестирование и запуск
День продаж: 28 ноября (Black Friday)

Оплата:

  • 30% аванс (54,000₽) — после брифинга
  • 40% (72,000₽) — после приемки дизайна
  • 25% (45,000₽) — после запуска
  • 5% (9,000₽) — через 30 дней (гарантия)

Неделя 1: Подготовка и дизайн (31 окт — 6 ноя)

День 1-2: Брифинг и анализ (31 окт — 1 ноя)

Что делали:

Встреча 1 (3 часа):

Обсудили:
✓ Целевая аудитория (женщины 25-45, уход за кожей)
✓ УТП (уникальное торговое предложение)
✓ Конкуренты (проанализировали 5 магазинов)
✓ Структуру каталога (категории, фильтры)
✓ Способы доставки (СДЭК, Почта, курьер)
✓ Способы оплаты (карты, СБП, наложенный платеж)

Получили от клиента:
✓ Excel с товарами (350 позиций)
✓ Фотографии товаров (средний уровень)
✓ Описания (короткие, нужно дописать)
✓ Логотип и фирменные цвета
✓ Доступ к Instagram (2,400 подписчиков)

Анализ конкурентов:

Изучил 5 магазинов корейской косметики:

textКонкурент 1: Cosmebox.ru
✓ Плюсы: чистый дизайн, быстрая работа
✗ Минусы: сложная навигация, плохие фильтры

Конкурент 2: Koreancosmetic.ru  
✓ Плюсы: хорошие описания товаров
✗ Минусы: устаревший дизайн, долгая загрузка (3.2s)

Конкурент 3: K-beauty.ru
✓ Плюсы: программа лояльности
✗ Минусы: мало товаров, завышенные цены

Выводы:
→ Делаем акцент на скорость работы
→ Детальные фильтры (тип кожи, проблема, бренд)
→ Качественные описания с составом
→ Программа лояльности с первого дня

День 3-4: Структура и прототип (2-3 ноября)

Создали:

1. Карту сайта:

Главная
├─ Каталог
│ ├─ Уход за лицом
│ │ ├─ Пенки и гели для умывания
│ │ ├─ Тоники и мисты
│ │ ├─ Сыворотки и эссенции
│ │ ├─ Кремы
│ │ └─ Маски
│ ├─ Уход за телом
│ ├─ Макияж
│ └─ Волосы
├─ Бренды (алфавитный список)
├─ Акции
├─ О нас
├─ Доставка и оплата
├─ Контакты
└─ Блог (косметические советы)

Служебные:
├─ Корзина
├─ Оформление заказа
├─ Личный кабинет
│ ├─ Мои заказы
│ ├─ Избранное
│ ├─ Баллы лояльности
│ └─ Настройки
└─ Поиск

2. Wireframe (черновой макет):

Создал прототип в Figma за 6 часов:

  • Главная страница
  • Каталог с фильтрами
  • Карточка товара
  • Корзина и оформление заказа

Показали клиенту → согласовано с минимальными правками

День 5-7: Дизайн (4-6 ноября)

Что сделали:

Главная страница:

css<code><em>/* Стиль: чистый, минималистичный, светлый */</em>
Цветовая схема:
- Основной: #FF6B9D (розовый, женственный)
- Акцент: #C44569 (темно-розовый)
- Фон: #FFFFFF
- Текст: #2C3E50

Hero-секция:
- Крупный баннер с фото продукции
- Заголовок: "Корейская косметика в Москве"
- Подзаголовок: "Оригинальная продукция из Южной Кореи"
- CTA: "Перейти в каталог"

Преимущества (4 блока):
Оригинальная продукция
Бесплатная доставка от 3000
Баллы за покупки
Консультация косметолога

Хиты продаж:
- Слайдер с популярными товарами
- Быстрый просмотр
- Добавить в корзину / избранное

Instagram-лента:
- 6 последних постов
- Кнопка "Подписаться"

Блог:
- 3 последние статьи
- "Как выбрать крем для лица"
</code>

Каталог:

Боковая панель (фильтры):
├─ Категория
├─ Бренд (чекбоксы, поиск)
├─ Цена (слайдер 500₽ - 5000₽)
├─ Тип кожи (сухая, жирная, комби, чувствительная)
├─ Проблема (акне, пигментация, морщины, расширенные поры)
├─ В наличии
└─ Акция

Основная часть:
├─ Хлебные крошки
├─ Сортировка (популярность, цена, новинки)
├─ Вид (сетка 3/4 колонки, список)
└─ Товары (пагинация 24 на странице)

Карточка товара в сетке:
- Фото (hover эффект - вторая фотография)
- Бейдж "Хит" / "Новинка" / "Акция"
- Название
- Бренд
- Цена (старая зачеркнутая + новая)
- Рейтинг звездами
- Кнопка "В корзину"
- Иконка "В избранное"

Карточка товара:

Левая колонка (60%):
├─ Галерея фотографий (5-7 фото)
├─ Zoom при наведении
└─ Видеообзор (если есть)

Правая колонка (40%):
├─ Название
├─ Бренд (кликабельный)
├─ Рейтинг и отзывы
├─ Цена
├─ Наличие (в наличии / под заказ)
├─ Краткое описание
├─ Объем/количество
├─ Кнопка "Добавить в корзину"
├─ Кнопка "Купить в 1 клик"
├─ Добавить в избранное
└─ Доставка и оплата (кратко)

Табы:
├─ Описание (подробное)
├─ Состав (на русском)
├─ Применение
├─ Отзывы
└─ Вопросы

Блок "С этим товаром покупают":
- 4 релевантных товара

Корзина и оформление:

Корзина:
├─ Список товаров (фото, название, цена, количество)
├─ Применить промокод
├─ Расчет доставки (ввод города)
├─ Итого (товары + доставка)
└─ Кнопка "Оформить заказ"

Оформление заказа (одна страница):
Блок 1: Контакты
├─ Имя
├─ Телефон
└─ Email

Блок 2: Доставка
├─ Способ (СДЭК, Почта России, Курьер)
├─ Город (автодополнение)
├─ Адрес (если курьер)
└─ Пункт выдачи (если СДЭК)

Блок 3: Оплата
├─ Онлайн (карта, СБП)
└─ При получении

Блок 4: Комментарий (необязательно)

Правая колонка: Состав заказа
└─ Кнопка "Оформить заказ"

Согласование с клиентом:

6 ноября показали дизайн в Figma → клиент утвердил с минимальными правками (изменили оттенок розового, переставили блоки на главной).

Оплата 2-го транша: 72,000₽

Неделя 2: Разработка (7-13 ноября)

День 8-9: Настройка окружения (7-8 ноября)

Что сделали:

1. Подготовили хостинг:

bash<code><em># VPS: 4 CPU, 8GB RAM, 160GB SSD</em>
<em># Ubuntu 22.04 LTS</em>

<em># Установка стека</em>
apt update && apt upgrade -y
apt install nginx php8.2-fpm php8.2-mysql php8.2-gd php8.2-imagick \
            php8.2-curl php8.2-zip php8.2-xml php8.2-mbstring \
            mysql-server redis-server -y

<em># Установка WordPress</em>
cd /var/www
wp core download --locale=ru_RU --allow-root
wp config create --dbname=beautyshop_db --dbuser=wp_user \
                 --dbpass=SECURE_PASS --allow-root
wp core install --url=beautyshop.ru \
                --title="BeautyShop" \
                --admin_user=admin --admin_email=admin@beautyshop.ru \
                --allow-root

<em># Установка WooCommerce</em>
wp plugin install woocommerce --activate --allow-root

<em># Установка необходимых плагинов</em>
wp plugin install \
    redis-cache \
    wp-rocket \
    wordfence \
    woocommerce-russian \
    cdek-integration \
    yookassa-payment \
    --activate --allow-root
</code>

2. Настройка производительности:

php<code><em>// wp-config.php</em>
define('WP_CACHE', true);
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');

<em>// Redis для object cache</em>
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);

<em>// Отключение ненужных фич</em>
define('WP_POST_REVISIONS', 3);
define('AUTOSAVE_INTERVAL', 300);
define('EMPTY_TRASH_DAYS', 7);
</code>

3. Настройка безопасности:

php<code><em>// Скрыть версию WordPress</em>
remove_action('wp_head', 'wp_generator');

<em>// Отключить XML-RPC</em>
add_filter('xmlrpc_enabled', '__return_false');

<em>// Защита wp-config.php</em>
<em>// .htaccess</em>
<Files wp-config.php>
    Order allow,deny
    Deny from all
</Files>

<em>// Ограничить попытки входа (Wordfence)</em>
</code>

День 10-12: Разработка темы (9-11 ноября)

Создали кастомную тему на базе Underscores:

php<code>// functions.php - основная настройка
<?php
<em>// Поддержка WooCommerce</em>
add_action('after_setup_theme', function() {
    add_theme_support('woocommerce');
    add_theme_support('wc-product-gallery-zoom');
    add_theme_support('wc-product-gallery-lightbox');
    add_theme_support('wc-product-gallery-slider');
});

<em>// Регистрация областей меню</em>
register_nav_menus(array(
    'primary' => 'Основное меню',
    'footer' => 'Меню в футере',
    'mobile' => 'Мобильное меню'
));

<em>// Размеры изображений</em>
add_image_size('product-thumb', 400, 400, true);
add_image_size('product-large', 800, 800, true);
add_image_size('blog-thumb', 600, 400, true);

<em>// Сайдбар для фильтров</em>
register_sidebar(array(
    'name' => 'Фильтры каталога',
    'id' => 'shop-sidebar',
    'before_widget' => '<div class="widget %2$s">',
    'after_widget' => '</div>',
    'before_title' => '<h3 class="widget-title">',
    'after_title' => '</h3>'
));
</code>

Кастомизация WooCommerce:

php<code>// Изменение структуры каталога
remove_action('woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);
remove_action('woocommerce_before_shop_loop', 'woocommerce_result_count', 20);

// Добавление бейджей "Хит", "Новинка"
add_action('woocommerce_before_shop_loop_item_title', function() {
    global $product;
    
    // Хит продаж
    if ($product->get_meta('_is_bestseller') === 'yes') {
        echo '<span class="badge badge-bestseller">Хит</span>';
    }
    
    // Новинка (товар добавлен менее 30 дней назад)
    $created_date = $product->get_date_created();
    $days_ago = (time() - $created_date->getTimestamp()) / DAY_IN_SECONDS;
    
    if ($days_ago <= 30) {
        echo '<span class="badge badge-new">Новинка</span>';
    }
    
    // Акция
    if ($product->is_on_sale()) {
        $regular_price = $product->get_regular_price();
        $sale_price = $product->get_sale_price();
        $discount = round((($regular_price - $sale_price) / $regular_price) * 100);
        
        echo '<span class="badge badge-sale">-' . $discount . '%</span>';
    }
}, 10);

// Кастомные фильтры для каталога
function add_custom_product_filters() {
    if (!is_shop() && !is_product_category()) return;
    
    ?>
    <div class="custom-filters">
        <h3>Фильтры</h3>
        
        <em><!-- Фильтр по типу кожи --></em>
        <div class="filter-group">
            <h4>Тип кожи</h4>
            <?php
            $skin_types = array(
                'dry' => 'Сухая',
                'oily' => 'Жирная',
                'combination' => 'Комбинированная',
                'sensitive' => 'Чувствительная'
            );
            
            foreach ($skin_types as $slug => $name) {
                $checked = isset($_GET['skin_type']) && $_GET['skin_type'] === $slug ? 'checked' : '';
                echo '<label><input type="checkbox" name="skin_type[]" value="' . $slug . '" ' . $checked . '> ' . $name . '</label>';
            }
            ?>
        </div>
        
        <em><!-- Фильтр по проблеме --></em>
        <div class="filter-group">
            <h4>Проблема кожи</h4>
            <?php
            $concerns = array(
                'acne' => 'Акне',
                'wrinkles' => 'Морщины',
                'pigmentation' => 'Пигментация',
                'pores' => 'Расширенные поры',
                'dryness' => 'Сухость'
            );
            
            foreach ($concerns as $slug => $name) {
                $checked = isset($_GET['concern']) && $_GET['concern'] === $slug ? 'checked' : '';
                echo '<label><input type="checkbox" name="concern[]" value="' . $slug . '" ' . $checked . '> ' . $name . '</label>';
            }
            ?>
        </div>
        
        <button type="submit" class="apply-filters">Применить</button>
        <button type="button" class="reset-filters">Сбросить</button>
    </div>
    <?php
}
add_action('woocommerce_sidebar', 'add_custom_product_filters');

<em>// Обработка кастомных фильтров</em>
add_action('pre_get_posts', function($query) {
    if (!is_admin() && $query->is_main_query() && (is_shop() || is_product_category())) {
        
        $meta_query = $query->get('meta_query') ?: array();
        
        <em>// Фильтр по типу кожи</em>
        if (isset($_GET['skin_type']) && !empty($_GET['skin_type'])) {
            $meta_query[] = array(
                'key' => '_skin_type',
                'value' => $_GET['skin_type'],
                'compare' => 'IN'
            );
        }
        
        <em>// Фильтр по проблеме</em>
        if (isset($_GET['concern']) && !empty($_GET['concern'])) {
            $meta_query[] = array(
                'key' => '_concern',
                'value' => $_GET['concern'],
                'compare' => 'IN'
            );
        }
        
        if (!empty($meta_query)) {
            $query->set('meta_query', $meta_query);
        }
    }
});
</code>

Быстрый просмотр товара (AJAX):

javascript<code><em>// quick-view.js</em>
jQuery(document).ready(function($) {
    $('.quick-view-button').on('click', function(e) {
        e.preventDefault();
        
        const productId = $(this).data('product-id');
        
        $.ajax({
            url: wc_ajax_params.ajax_url,
            type: 'POST',
            data: {
                action: 'quick_view_product',
                product_id: productId
            },
            beforeSend: function() {
                showLoader();
            },
            success: function(response) {
                if (response.success) {
                    showQuickViewModal(response.data.html);
                }
            },
            complete: function() {
                hideLoader();
            }
        });
    });
});
</code>
php<code><em>// AJAX handler для быстрого просмотра</em>
add_action('wp_ajax_quick_view_product', 'ajax_quick_view_product');
add_action('wp_ajax_nopriv_quick_view_product', 'ajax_quick_view_product');

function ajax_quick_view_product() {
    $product_id = intval($_POST['product_id']);
    $product = wc_get_product($product_id);
    
    if (!$product) {
        wp_send_json_error();
    }
    
    ob_start();
    wc_get_template('quick-view.php', array('product' => $product));
    $html = ob_get_clean();
    
    wp_send_json_success(array('html' => $html));
}
</code>

День 13: Интеграции (12 ноября)

1. Интеграция с СДЭК:

php<code><em>// Использовали плагин CDEK Integration</em>
<em>// Настройка в wp-admin:</em>
<em>// - API ключ СДЭК</em>
<em>// - Склад отправления (Москва)</em>
<em>// - Автоматический расчет стоимости</em>
<em>// - Печать накладных</em>

<em>// Кастомизация расчета доставки</em>
add_filter('cdek_shipping_cost', function($cost, $order) {
    <em>// Бесплатная доставка от 3000₽</em>
    $cart_total = WC()->cart->get_subtotal();
    
    if ($cart_total >= 3000) {
        return 0;
    }
    
    return $cost;
}, 10, 2);
</code>

2. Интеграция с ЮKassa (оплата):

php<code><em>// Подключение ЮKassa</em>
<em>// - Создали магазин в личном кабинете ЮKassa</em>
<em>// - Получили shopId и secretKey</em>
<em>// - Настроили webhook для уведомлений об оплате</em>

<em>// Способы оплаты:</em>
<em>// ✓ Банковские карты</em>
<em>// ✓ СБП (Система быстрых платежей)</em>
<em>// ✓ ЮMoney</em>
<em>// ✓ QIWI</em>
<em>// ✓ Наличными при получении (отключена предоплата)</em>
</code>

3. Интеграция с email-рассылками:

php<code><em>// Подключили UniSender</em>
<em>// Автоматические письма:</em>
<em>// ✓ Подтверждение заказа</em>
<em>// ✓ Изменение статуса заказа</em>
<em>// ✓ Отправка заказа (трек-номер)</em>
<em>// ✓ Доставлен</em>
<em>// ✓ Брошенная корзина (через 2 часа)</em>

add_action('woocommerce_order_status_processing', function($order_id) {
    $order = wc_get_order($order_id);
    $email = $order->get_billing_email();
    
    <em>// Отправка в UniSender</em>
    $api = new UniSenderAPI('YOUR_API_KEY');
    $api->subscribe(array(
        'email' => $email,
        'list_ids' => array(12345), <em>// ID списка "Покупатели"</em>
        'fields' => array(
            'Name' => $order->get_billing_first_name(),
            'LastOrderDate' => date('Y-m-d'),
            'LastOrderAmount' => $order->get_total()
        )
    ));
});
</code>

4. Программа лояльности:

php<code><em>// Простая система баллов</em>
class Loyalty_Program {
    
    <em>// 5% от суммы заказа в баллы</em>
    public function award_points($order_id) {
        $order = wc_get_order($order_id);
        $user_id = $order->get_user_id();
        
        if (!$user_id) return;
        
        $order_total = $order->get_total();
        $points = round($order_total * 0.05);
        
        $current_points = get_user_meta($user_id, 'loyalty_points', true);
        $new_points = $current_points + $points;
        
        update_user_meta($user_id, 'loyalty_points', $new_points);
        
        <em>// Уведомление клиента</em>
        $order->add_order_note(
            sprintf('Начислено %d баллов. Всего баллов: %d', $points, $new_points)
        );
    }
    
    <em>// Использование баллов при оплате (1 балл = 1 рубль)</em>
    public function apply_discount($cart) {
        if (!is_user_logged_in()) return;
        
        $user_id = get_current_user_id();
        $points = get_user_meta($user_id, 'loyalty_points', true);
        
        if ($points <= 0) return;
        
        $cart_total = $cart->get_subtotal();
        $max_discount = $cart_total * 0.3; <em>// Максимум 30% от суммы</em>
        
        $discount = min($points, $max_discount);
        
        if (isset($_POST['use_loyalty_points']) && $_POST['use_loyalty_points'] === 'yes') {
            $cart->add_fee('Списание баллов', -$discount);
            
            <em>// Списываем баллы после оформления заказа</em>
            add_action('woocommerce_thankyou', function($order_id) use ($user_id, $discount) {
                $current_points = get_user_meta($user_id, 'loyalty_points', true);
                update_user_meta($user_id, 'loyalty_points', $current_points - $discount);
            });
        }
    }
}

$loyalty = new Loyalty_Program();
add_action('woocommerce_order_status_completed', array($loyalty, 'award_points'));
add_action('woocommerce_cart_calculate_fees', array($loyalty, 'apply_discount'));
</code>

Неделя 3: Наполнение и тестирование (14-20 ноября)

День 14-16: Импорт товаров (14-16 ноября)

Получили от клиента:

  • Excel файл с 350 товарами
  • Папку с фотографиями (неструктурированная)
  • Короткие описания (нужна доработка)

Процесс импорта:

php<code>// 1. Подготовили CSV для импорта
// Структура:
// SKU, Название, Описание, Цена, Категория, Бренд, Фото

// 2. Обработали фотографии
// - Переименовали по SKU
// - Сжали (оригинал 5-10MB → 200-300KB)
// - Конвертировали в WebP
// - Создали миниатюры

// Скрипт для массовой обработки фотографий
<?php
$images_dir = '/var/www/beautyshop/images/';
$files = glob($images_dir . '*.{jpg,jpeg,png}', GLOB_BRACE);

foreach ($files as $file) {
    $filename = basename($file);
    $sku = pathinfo($filename, PATHINFO_FILENAME);
    
    <em>// Оптимизация</em>
    $image = wp_get_image_editor($file);
    if (!is_wp_error($image)) {
        $image->resize(800, 800, false);
        $image->set_quality(85);
        $image->save($file);
        
        <em>// WebP версия</em>
        $webp_file = str_replace(array('.jpg', '.jpeg', '.png'), '.webp', $file);
        imagewebp(imagecreatefromjpeg($file), $webp_file, 85);
    }
}

<em>// 3. Импорт через WP All Import</em>
<em>// - Маппинг полей из CSV</em>
<em>// - Привязка изображений по SKU</em>
<em>// - Создание категорий и брендов</em>
<em>// - Установка атрибутов (тип кожи, проблема)</em>
</code>

Дописали описания:

Наняли копирайтера для улучшения описаний:

БЫЛО:
"Крем для лица увлажняющий"

СТАЛО:
"Увлажняющий крем с гиалуроновой кислотой

Глубоко увлажняет кожу и удерживает влагу на 24 часа.
Подходит для сухой и обезвоженной кожи.

Ключевые ингредиенты:
• Гиалуроновая кислота (3 типа молекул) - увлажнение на всех уровнях кожи
• Пантенол - успокаивает и восстанавливает
• Ниацинамид - выравнивает тон кожи

Применение:
Нанесите на очищенную кожу утром и вечером.
Мягко распределите массажными движениями до полного впитывания.

Объем: 50 мл
Производитель: Cosrx (Южная Корея)"

День 17-18: Контент-страницы (17-18 ноября)

Создали:

1. Главная страница:

  • Hero-баннер с промо Black Friday
  • Блок преимуществ (4 иконки)
  • Хиты продаж (слайдер)
  • Категории товаров (карточки с фото)
  • О магазине (краткий текст)
  • Instagram-лента (6 постов)
  • Отзывы клиентов (3 карточки)

2. Страница «О нас»:

  • История магазина
  • Миссия и ценности
  • Команда (фото + описание)
  • Сертификаты (подлинность продукции)

3. Доставка и оплата:

  • Способы доставки (СДЭК, Почта, Курьер)
  • Стоимость и сроки
  • Способы оплаты
  • Возврат и обмен

4. Блог (5 статей для старта):

  • «10-этапная корейская система ухода за кожей»
  • «Как выбрать крем по типу кожи»
  • «5 ошибок в уходе за кожей»
  • «Состав косметики: что искать, чего избегать»
  • «Секреты корейского сияния кожи»

День 19-20: Тестирование (19-20 ноября)

Чек-лист тестирования:

Функциональное тестирование:
☑ Регистрация и вход
☑ Добавление товара в корзину
☑ Изменение количества в корзине
☑ Удаление из корзины
☑ Применение промокода
☑ Оформление заказа (все способы доставки)
☑ Оплата (тестовая карта)
☑ Личный кабинет (заказы, баллы, избранное)
☑ Поиск товаров
☑ Фильтры в каталоге
☑ Быстрый просмотр
☑ Отзывы на товары
☑ Подписка на рассылку

Кроссбраузерное тестирование:
☑ Chrome (Desktop + Mobile)
☑ Safari (Desktop + Mobile)
☑ Firefox
☑ Edge

Тестирование на устройствах:
☑ iPhone 12, 13, 14
☑ Samsung Galaxy S21, S22
☑ iPad
☑ Desktop (1920x1080, 1366x768)

Производительность:
☑ PageSpeed Score: 89/100 (mobile), 94/100 (desktop)
☑ TTFB: 0.7s
☑ LCP: 1.8s
☑ CLS: 0.05

SEO:
☑ Title и description на всех страницах
☑ Open Graph теги
☑ Sitemap.xml
☑ robots.txt
☑ Микроразметка товаров (Schema.org)

Безопасность:
☑ SSL сертификат
☑ Firewall (Wordfence)
☑ Защита от brute-force
☑ Резервные копии настроены

Найденные баги и исправления:

Баг #1: Фильтры не сбрасываются
Исправлено: Добавили кнопку "Сбросить фильтры"

Баг #2: На iPhone форма оплаты обрезается
Исправлено: Увеличили padding для мобильных

Баг #3: Медленная загрузка галереи товара
Исправлено: Включили lazy loading для изображений

Баг #4: Email о заказе не приходит
Исправлено: Настроили SMTP через Gmail

Баг #5: Промокод применяется несколько раз
Исправлено: Добавили проверку на использование

Неделя 4: Финальная подготовка и запуск (21-27 ноября)

День 21-23: Наполнение и SEO (21-23 ноября)

SEO-оптимизация:

php<code><em>// Yoast SEO настройки</em>
<em>// 1. Title шаблоны</em>
add_filter('wpseo_title', function($title) {
    if (is_product()) {
        global $post;
        $product = wc_get_product($post->ID);
        return $product->get_name() . ' - купить в Москве | BeautyShop';
    }
    return $title;
});

<em>// 2. Meta description для товаров</em>
add_action('wp_head', function() {
    if (is_product()) {
        global $post;
        $product = wc_get_product($post->ID);
        $excerpt = wp_trim_words($product->get_short_description(), 20);
        echo '<meta name="description" content="' . esc_attr($excerpt) . ' ✓ Оригинальная корейская косметика ✓ Доставка по России ✓ Баллы за покупки">';
    }
});

<em>// 3. Микроразметка товаров</em>
add_action('woocommerce_single_product_summary', function() {
    global $product;
    
    $schema = array(
        '@context' => 'https://schema.org/',
        '@type' => 'Product',
        'name' => $product->get_name(),
        'image' => wp_get_attachment_url($product->get_image_id()),
        'description' => $product->get_short_description(),
        'sku' => $product->get_sku(),
        'brand' => array(
            '@type' => 'Brand',
            'name' => $product->get_attribute('pa_brand')
        ),
        'offers' => array(
            '@type' => 'Offer',
            'url' => get_permalink(),
            'priceCurrency' => 'RUB',
            'price' => $product->get_price(),
            'availability' => $product->is_in_stock() ? 'https://schema.org/InStock' : 'https://schema.org/OutOfStock'
        )
    );
    
    if ($product->get_rating_count() > 0) {
        $schema['aggregateRating'] = array(
            '@type' => 'AggregateRating',
            'ratingValue' => $product->get_average_rating(),
            'reviewCount' => $product->get_rating_count()
        );
    }
    
    echo '<script type="application/ld+json">' . json_encode($schema) . '</script>';
}, 5);
</code>

День 24-25: Подготовка к Black Friday (24-25 ноября)

Создали акции:

php<code><em>// 1. Скидка 25% на все товары</em>
<em>// WooCommerce → Купоны → Создать купон</em>
Код: BLACKFRIDAY
Тип: Скидка в процентах
Сумма: 25
Срок действия: 28-29 ноября

<em>// 2. Баннер на главной</em>
<div class="promo-banner black-friday">
    <h2>BLACK FRIDAY</h2>
    <p>Скидка 25% на ВСЕ товары!</p>
    <p class="countdown" data-end="2024-11-29 23:59:59">
        <span class="hours">00</span>:<span class="minutes">00</span>:<span class="seconds">00</span>
    </p>
    <a href="/shop/" class="btn-large">В каталог →</a>
</div>

<script>
<em>// Таймер обратного отсчета</em>
function updateCountdown() {
    const end = new Date($('.countdown').data('end')).getTime();
    const now = new Date().getTime();
    const diff = end - now;
    
    if (diff > 0) {
        const hours = Math.floor(diff / (1000 * 60 * 60));
        const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
        const seconds = Math.floor((diff % (1000 * 60)) / 1000);
        
        $('.countdown .hours').text(String(hours).padStart(2, '0'));
        $('.countdown .minutes').text(String(minutes).padStart(2, '0'));
        $('.countdown .seconds').text(String(seconds).padStart(2, '0'));
    }
}

setInterval(updateCountdown, 1000);
</script>

<em>// 3. Email-рассылка базе (2,400 человек из Instagram)</em>
<em>// Тема: "BLACK FRIDAY! Корейская косметика -25%"</em>
<em>// Контент: промо + топ-10 товаров + промокод</em>
</code>

Подготовили сервер:

bash<code><em># Оптимизация под нагрузку</em>
<em># 1. Увеличили PHP memory</em>
php_value memory_limit 512M
php_value max_execution_time 300

<em># 2. Настроили Nginx кеширование</em>
location / {
    proxy_cache_valid 200 60m;
    proxy_cache_bypass $cookie_woocommerce_items_in_cart;
}

<em># 3. Настроили Redis</em>
maxmemory 1gb
maxmemory-policy allkeys-lru

<em># 4. Проверили backup</em>
wp db export /backups/pre-launch-$(date +%Y%m%d).sql --allow-root
tar -czf /backups/files-$(date +%Y%m%d).tar.gz /var/www/beautyshop
</code>

День 26-27: Запуск и мониторинг (26-27 ноября)

26 ноября (Pre-launch):

09:00 - Финальная проверка всех функций
10:00 - Создание финального бэкапа
11:00 - Перевод сайта из режима "Скоро открытие" в production
12:00 - Отправка email-рассылки (2,400 адресов)
13:00 - Публикация постов в Instagram (3 поста)
14:00 - Запуск контекстной рекламы (Яндекс.Директ)
15:00 - Мониторинг первых заказов

27 ноября (День до Black Friday):

Статистика:
├─ Посетителей: 847
├─ Заказов: 23
├─ Конверсия: 2.7%
├─ Средний чек: 3,200₽
└─ Выручка: 73,600₽

Проблемы:
✓ Сервер держит нагрузку
✓ Все заказы обрабатываются корректно
✓ Оплата работает
✓ Email-уведомления приходят

Клиент в восторге!

День 28: Black Friday — первый большой день (28 ноября)

Результаты дня:

TRAFFIC:
├─ Посетителей: 3,421
├─ Источники:
├─ Email-рассылка: 38%
├─ Instagram: 27%
├─ Контекстная реклама: 22%
├─ Прямые заходы: 9%
└─ Органика: 4%

ПРОДАЖИ:
├─ Заказов: 147
├─ Конверсия: 4.3%
├─ Средний чек: 4,100₽
├─ Выручка: 602,700₽
├─ Использовали промокод: 89%
└─ Новых клиентов: 134 (91%)

TOP-5 ТОВАРОВ:
1. Пенка для умывания Cosrx - 34 шт
2. Тканевая маска набор - 28 шт
3. Увлажняющий крем Innisfree - 23 шт
4. Сыворотка с витамином C - 19 шт
5. Солнцезащитный крем - 17 шт

Отзыв клиента (Анна):

«Я не верила, что за месяц можно запустить полноценный магазин. Думала, что получу какую-то недоделанную версию. Но нет!

Сайт выглядит профессионально. Работает быстро. Все функции на месте. В первый день Black Friday мы продали на 600 тысяч — это больше, чем за весь прошлый месяц в Instagram!

Самое классное — система полностью автоматизирована. Заказ поступает → клиент получает письмо → мы видим заказ в админке → печатаем накладную СДЭК → отправляем. Никаких ручных операций.

Программа лояльности работает отлично — уже 23 человека накопили баллы и вернулись за второй покупкой.

Конечно, не все идеально. Нужно добавить live-chat, улучшить систему отзывов, сделать мобильное приложение. Но это уже улучшения. Базовый функционал работает на 100%.

Мои вложения: 180,000₽. За первую неделю продали на 1,200,000₽. Окупилось за 4 дня!»

Чек-лист запуска магазина за месяц

Предстартовая подготовка (до начала работ):

☐ Определена ниша и целевая аудитория
☐ Есть каталог товаров (хотя бы в Excel)
☐ Есть фотографии товаров (или готовы их сделать)
☐ Есть юридическое лицо (ИП или ООО)
☐ Открыт расчетный счет
☐ Определены способы доставки
☐ Выбран платежный шлюз (ЮKassa, Тинькофф и т.д.)
☐ Есть бюджет 150,000-300,000₽
☐ Есть время на участие в процессе (2-3 часа в день)

Неделя 1: Фундамент

☐ Брифинг с разработчиком (3 часа)
☐ Анализ конкурентов (1-2 дня)
☐ Структура сайта (карта, wireframes)
☐ Дизайн главной страницы
☐ Дизайн каталога
☐ Дизайн карточки товара
☐ Дизайн корзины и оформления заказа
☐ Согласование дизайна с клиентом

Неделя 2: Разработка

☐ Настройка хостинга (VPS рекомендуется)
☐ Установка WordPress + WooCommerce
☐ Установка необходимых плагинов
☐ Разработка кастомной темы
☐ Настройка способов доставки
☐ Настройка способов оплаты
☐ Интеграция с курьерскими службами
☐ Программа лояльности
☐ Email-рассылки

Неделя 3: Контент

☐ Импорт товаров из CSV/Excel
☐ Оптимизация фотографий товаров
☐ Написание/улучшение описаний
☐ Создание категорий и фильтров
☐ Контент-страницы (О нас, Доставка, Контакты)
☐ Юридические страницы (Оферта, Политика конфиденциальности)
☐ Статьи для блога (3-5 штук)
☐ SEO-оптимизация всех страниц

Неделя 4: Тестирование и запуск

☐ Функциональное тестирование
☐ Кроссбраузерное тестирование
☐ Тестирование на мобильных устройствах
☐ Проверка производительности
☐ SEO-аудит
☐ Security audit
☐ Настройка аналитики (Яндекс.Метрика, Google Analytics)
☐ Настройка резервного копирования
☐ Обучение клиента работе с админ-панелью
☐ Запуск!

Что делать после запуска: первые 30 дней

Неделя 1 после запуска:

☐ Ежедневный мониторинг заказов
☐ Отслеживание аналитики
☐ Сбор обратной связи от клиентов
☐ Исправление критичных багов (если есть)
☐ Оптимизация на основе поведения пользователей

Неделя 2-4 после запуска:

☐ A/B тестирование элементов сайта
☐ Оптимизация конверсии
☐ Запуск email-маркетинга
☐ Контент-маркетинг (блог)
☐ Работа с отзывами
☐ Анализ воронки продаж
☐ Планирование улучшений

Стоимость и ROI

Инвестиции в запуск (BeautyShop):

Разработка сайта: 180,000₽
├─ Дизайн: 60,000₽
├─ Разработка: 80,000₽
├─ Контент и SEO: 30,000₽
└─ Тестирование: 10,000₽

Хостинг (1 год): 60,000₽
Фотосъемка товаров: 15,000₽
Копирайтинг: 20,000₽
--------------------------------------
ИТОГО: 275,000₽

Результаты первого месяца:

Выручка: 1,847,000₽
Заказов: 387
Средний чек: 4,770₽
Конверсия: 3.8%
Повторных покупок: 12%

Расходы:
├─ Себестоимость товаров (60%): 1,108,200₽
├─ Доставка: 89,000₽
├─ Реклама: 140,000₽
├─ Комиссия платежной системы (2%): 36,940₽
└─ Прочие расходы: 25,000₽

Прибыль: 447,860₽
ROI: (447,860 / 275,000) × 100% = 162%

Окупаемость: 0.6 месяца (18 дней!)

Интернет-магазин за месяц — это не миф, а реальность при правильном планировании. Ключ к успеху — фокус на MVP (минимально жизнеспособном продукте). Не пытайтесь запустить идеальный магазин с сотней фич. Запустите рабочую версию с базовым функционалом: каталог, корзина, оплата, доставка. Все остальное добавите потом на основе реальной обратной связи от клиентов. BeautyShop стартовал с 350 товарами и окупился за 18 дней. Через 3 месяца добавили мобильное приложение, live-chat и расширенную программу лояльности. Но главное — они начали продавать с первого дня. Не ждите идеального момента. Запускайте MVP, тестируйте гипотезы, улучшайте на ходу. Месяц от идеи до первой продажи — это реально.

Хотите узнать стоимость сайта?

Обсудим проект и рассчитаем стомость вашего сайта

    Нажимая на кнопку, вы даете согласие на обработку своих персональных данных

    This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

    Ваша заявка принята!

    Мы перезвоним вам в ближайшее время.