Магазин на Shopify запускается за вечер, и в тот же вечер заканчивается список того, что продавец контролирует полностью. Платформа закрывает хостинг, SSL-сертификаты, CDN и адаптив темы, поэтому на старте сайт почти не требует инженера. Но как только в планах появляются продажи в нескольких странах, задача превращается в переговоры с движком: структура адресов фиксирована, canonical платформа ставит сама, часть функций в админке просто отсутствует. Владелец, который узнаёт об этих границах до запуска, экономит месяцы переделок. Ниже - разбор реальных возможностей Shopify для международного проекта, его жестких пределов и способов компенсировать их руками и приложениями.
Как Shopify Markets строит адреса для каждой страны и языка
С 2021 года главный инструмент международной торговли в платформе - Shopify Markets. Логика простая: один каталог, одна админка, а страны добавляются как рынки со своей валютой, языком и доменом. По умолчанию локальные версии получают адреса-подпапки вида /en-us/ или /de-de/, при желании подключают субдомен или отдельный домен. Для оптимизатора подпапки - самый удобный вариант: они наследуют авторитет основного домена и не требуют отдельного ссылочного бюджета, в отличие от нового домена, который пришлось бы раскручивать с нуля.
Hreflang платформа генерирует автоматически: у каждой страницы появляется набор ссылок rel="alternate" hreflang на все включённые рынки, включая x-default. В собранном магазине блок выглядит так:
<link rel="alternate" hreflang="en-us" href="https://example.com/en-us/products/widget">
<link rel="alternate" hreflang="de-de" href="https://example.com/de-de/products/widget">
<link rel="alternate" hreflang="x-default" href="https://example.com/products/widget">
За переводы отвечает бесплатное приложение Translate & Adapt: машинный перевод с ручной доводкой, причём переводятся не только описания товаров, но и SEO-заголовки, meta description, alt-теги изображений и метаполя. Без переведённых мета-тегов hreflang почти бесполезен: поисковик видит десятки страниц с одинаковыми английскими title и понижает релевантность для локальных запросов. Перевод каталога - половина работы, вторая половина - служебные поля, о которых почти всегда забывают.
Выбор между типами адресов - это бизнес, а не техника. Национальный домен уровня страны даёт самый явный геосигнал и доверие местного покупателя, но собирает ссылочный бюджет с нуля. Субдомен удобен для изоляции логистики, а подпапка получает силу основного домена сразу. Все три варианта платформа обслуживает одинаково: hreflang строится по включённым рынкам независимо от типа адреса. Начинать разумно с подпапок и выделять домены только там, где рынок это оправдывает.
Неудобная сторона Markets в том, что каталог один на все страны. Товары можно скрывать из отдельных рынков, но собрать под Германию витрину с другой структурой категорий внутри одного магазина не выйдет - понадобится второй аккаунт или переезд на другую платформу. Цены в локальных валютах настраиваются с правилами округления, а вот кардинально разные товарные матрицы для рынков уже за пределами стандартного функционала.
Жесткие границы движка, которые не обойти настройками
Первое - структура адресов. Каждый товар живёт по пути /products/handle, коллекции по /collections/handle, статьи блога по /blogs/news/handle. Убрать префиксы или изменить вложенность нельзя. Новый магазин этого не замечает, но при переезде с другой платформы старые адреса приходится закрывать редиректами, и цепочки иногда растягиваются на два-три перехода. Каждый лишний переход - это доля секунды ожидания для робота и небольшая утечка ссылочного веса.
Второе - canonical. На страницах коллекций с тегами и параметрами фильтров Shopify принудительно ставит canonical на базовый адрес коллекции. Хотите собрать трафик на связке "синие кроссовки" - из индекса она исчезнет: робот увидит canonical и выкинет отфильтрованный вариант из выдачи. Посадочные под фильтры на Shopify планируют только через отдельные коллекции, иначе работа уходит в песок.
Третье - закрытая инфраструктура. Доступа к серверу нет: ни .htaccess, ни собственных HTTP-заголовков, ни контроля кеширования на уровне edge. robots.txt редактируется через шаблон robots.txt.liquid, такая возможность появилась в 2021 году, но sitemap.xml генерируется автоматически. Типичный файл после доработки выглядит так:
User-agent: *
Disallow: /cart
Disallow: /checkout
Disallow: /search
Disallow: /*?sort_by=
Sitemap: https://example.com/sitemap.xml
Редиректы создаются в админке по одному или загружаются через приложения для массового импорта, при этом служебные адреса платформы редиректить запрещено. noindex для отдельных страниц включается только правкой шаблона Liquid, например для оптовых страниц:
{% if handle contains 'wholesale' %}
<meta name="robots" content="noindex">
{% endif %}
Hreflang, проверка взаимных ссылок и порядок запуска рынка
Hreflang работает по правилу взаимности: немецкая страница ссылается на американскую, а та - обратно. Shopify собирает связи сам, но сломать их легко: отключили рынок - остались ссылки на несуществующие версии, перевели товар не полностью - у страницы нет заголовка на нужном языке, ошиблись в домене - hreflang указывает в пустоту. Перед запуском рынка стоит прогнать двадцать-тридцать адресов через Screaming Frog и убедиться, что у каждой страницы полный набор взаимных hreflang и корректный canonical.
Ловушка не в технике, а в порядке работ. Включать рынок имеет смысл после перевода каталога и мета-тегов, иначе поисковик сначала проиндексирует сырые страницы с английскими заголовками, а потом месяцами будет пересчитывать их заново. Search Console подключают отдельно для каждого домена или субдомена, для подпапок хватает одного ресурса с фильтрами по адресам. Сообщения вида "страница без взаимной ссылки hreflang" в отчёте по индексированию - первый сигнал, что рынок настроен криво.
Первые недели после включения рынка стоит смотреть не только в отчёт по индексированию, но и на поведение страниц: проиндексировались, но не показываются в выдаче целевой страны - обычно это слабая локализация, машинный перевод без вычитки, цены не в той валюте или отсутствие локальных сигналов. Дешевле отладить один рынок, отработать на нём процесс и только потом добавлять следующий: пять включённых за день рынков дают пять наборов однотипных ошибок вместо одного аккуратно закрытого.
Приложения для оптимизации и правило одного лишнего скрипта
Витрина приложений предлагает десятки утилит для SEO, и снаружи выбор выглядит сложнее, чем внутри. Практика сводится к нескольким ролям: Translate & Adapt закрывает переводы, SEO Manager и Smart SEO - шаблоны мета-тегов и автозаполнение alt-тегов, Plug in SEO - регулярный аудит битых заголовков и дублей, Judge.me подтягивает отзывы прямо в микроразметку Product. Есть и Yoast SEO в варианте для Shopify по платной подписке: привычный интерфейс и контроль шаблонов title и description в одном окне. SEO Manager дополнительно умеет шаблоны мета-тегов с переменными вроде вендора и типа товара - заголовки для тысячи позиций собираются за минуту. Plug in SEO еженедельно проверяет дубли title, пустые alt-теги и страницы, закрытые от робота, и присылает сводку на почту: дешёвый способ заметить проблему раньше, чем её увидит поисковик.
Каждое приложение - это скрипты в теме. Пять установленных утилит спокойно добавляют полсекунды к загрузке, и весь выигрыш от чистых мета-тегов растворяется в медленном Largest Contentful Paint. Приоритет простой: сначала встроенные функции платформы, потом одно приложение на роль, потом ничего. После удаления утилиты проверяйте theme.liquid на остатки кода: деинсталляция не всегда вычищает за собой, а осиротевшие скрипты продолжают грузиться на каждой странице. Приложения с обещаниями мгновенной индексации лучше не ставить вовсе: быстрых чудес в SEO не бывает, бывает аккуратная рутина.
Скорость темы и Core Web Vitals на всех рынках сразу
Пороги, на которые ориентируется Google: LCP до 2.5 секунды, INP до 200 миллисекунд, CLS до 0.1. Плохие значения начинаются от 4 секунд, 500 миллисекунд и 0.25 соответственно. В Shopify скорость упирается в три вещи: тему, приложения и изображения. Тему берут свежую, на движке Online Store 2.0, с секциями и минимумом встроенного мусора. Картинки платформа хостит на собственном CDN и позволяет запрашивать нужный размер прямо в шаблоне, так что гигантский баннер в карточке товара - это невнимательность, а не ограничение.
Приложения остаются главным тормозом: сторонний виджет отзывов, чат и лупа изображений вместе способны удвоить вес страницы. Проверять себя удобно через PageSpeed Insights по мобильным замерам: он показывает и реальные метрики пользователей, и главного виновника задержки. Отдельная привычка - сверять замеры по странам: скорость отдачи для покупателя из Германии и из США на одной и той же теме различается заметно, и улавливать это удобнее по полевым цифрам, а не по лабораторным прогонам. Картинки в шаблонах урезают по ширине фильтром image_url, иначе мобильная карточка тащит исходник на четыре тысячи пикселей. Когда магазин перерастает тему, а рынков становится десяток, команда смотрит в сторону Hydrogen - headless-стека на Remix, где фронтенд пишется с нуля и отдаётся через CDN. Это уже не настройка на выходные, а полноценный проект, но для крупных каталогов с тяжёлой фильтрацией иной экономии скорости не существует.
Локальные сигналы страны, которые работают сильнее hreflang
Частая иллюзия: включили hreflang - и немецкая версия через месяц взлетит в выдаче DE. На практике hreflang только объясняет поисковику соответствие версий, а позиции собирают локальные сигналы. Покупатель из Мюнхена ищет не "английский магазин с доставкой в Германию", а магазин для Германии: цены в евро, привычные способы оплаты, понятные условия доставки и возврата, местный телефон в подвале. Разница между страницей "мы продаём в сорок стран" и страницей "доставка по Германии за два дня" - это и есть локальная релевантность, которую hreflang не заменит.
Технический слой тут скромнее, чем кажется. В 2022 году Google убрал из Search Console инструмент International Targeting - вручную указать целевую страну для ресурса больше нельзя. Геотаргетинг строится на hreflang, локальном контенте и сигналах извне: упоминаниях в местных каталогах, отзывах покупателей из целевой страны, локальных контактах. Практичный набор для каждого рынка - страница "Доставка и оплата" с условиями конкретной страны, местный FAQ и обзоры, собранные с разметкой aggregateRating: сниппет со звёздами в немецкой выдаче поднимает кликабельность заметнее любого технического твика.
Пошаговый план вывода магазина на зарубежные рынки
Если собрать весь разбор в рабочую последовательность, она выглядит так:
- провести аудит текущего магазина: структура адресов, дубли, скорость, базовые мета-теги;
- выбрать рынки и формат адресов: подпапки, субдомены или отдельные домены;
- включить Markets, настроить валюты, правила округления цен, домены и языки;
- перевести каталог, мета-теги, alt-теги и метаполя через Translate & Adapt;
- проверить hreflang и canonical на выборке адресов каждого рынка;
- отредактировать robots.txt.liquid и закрыть старые адреса редиректами;
- провести ревизию приложений и вычистить лишние скрипты из темы;
- подключить рынки к Search Console и включить отчёты по Core Web Vitals;
- следить за индексацией первые восемь недель и закрывать мягкие ошибки.
Shopify не станет идеальной платформой для сложного международного SEO, её границ никто не отменял. Но на связке Markets, Translate & Adapt, дисциплины по приложениям и честного аудита раз в квартал платформа решает задачи магазинов, которые растут в новые страны без штата разработчиков. Главное - перестать воспринимать её как конструктор без стенок и начать работать по её правилам, а не против них.