Вопросы интеграторов
Для последовательной проверки по симптому используйте диагностику интеграции. Определения показателей и сверка двух отчётов: события и метрики.
Доступ и конфигурация
Как начать интеграцию?
Передайте команде ShopStory источник товарных данных — фид или API магазина, единый feedProductId, целевые страницы и нужное поведение кнопки «Купить». Для web-интеграции добавьте production- и test-домены. ShopStory подготовит applicationId, зарегистрирует нужные origins и настроит компоненты. Затем выберите Web SDK, Public API или Mobile SDK.
applicationId нужно хранить как секрет?
Нет. Это идентификатор проекта, который виден в браузерных запросах и выбирает нужную конфигурацию. Он не заменяет авторизацию и не должен давать доступ к заказам, профилю, корзине или другим чувствительным операциям. Пароли, session cookies и реальные access tokens остаются секретами.
Почему запрос работает из терминала, но не из браузера?
Для браузерного доступа ShopStory регистрирует точный origin клиента. Сверьте протокол, hostname и порт страницы с переданными при подключении значениями. Не обходите проблему открытым CORS relay. Подробнее: Quickstart.
Почему Web SDK загрузился, но показал пустую или неверную конфигурацию?
Для основного SDK проверьте config.clientId в вызове show(). PiP bundle использует конфигурацию зарегистрированного hostname. В обоих случаях передайте текущий URL и applicationId менеджеру интеграции и проверьте, что test- и production-домены не перепутаны.
Контент и товары
Можно открыть плеер в модальном окне или внутри страницы?
Стандартный полный плеер открывается поверх страницы: как модальное окно на desktop и на весь экран на mobile. Внутри блока страницы show() размещает каталог. Для полного inline-плеера или собственного модального окна заранее согласуйте отдельный способ монтажа; showPlayer() не принимает контейнер. Сравнение вариантов: размещение Web SDK.
Что означает no_active_stream?
Для указанного товара нет подходящего опубликованного live или записи либо ID на странице не совпадает с feedProductId из конфигурации проекта. Это штатное пустое состояние, а не сбой сервиса. Проверьте связку в Mini-player API.
Почему API возвращает active, а mini-player на PDP не появляется?
Ответ подтверждает наличие видео для товара и предоставляет поддерживаемый body.stream.playerUrl как непрозрачный URL плеера. Появление виджета зависит от настройки ShopStory под конкретный PDP-шаблон: нужно определить товарный ID, место вставки и исключённые страницы. Передайте URL проблемной карточки и название шаблона.
Насколько свежие данные о товаре и доступности?
В режиме фида каталог, названия, изображения и цены берутся из последней успешно обработанной выгрузки; частота синхронизации согласуется для проекта. Товарный API возвращает описание и актуальные условия через обработчик магазина: Интеграция с интернет-магазином. При сочетании источников фид передаёт описание, а API — условия покупателя. Штатный обработчик наличия Web SDK запрашивает остаток выбранного магазина при открытии эфира и при смене магазина. Окончательное подтверждение остаётся за cart-командой ритейлера: Наличие товара и остатки.
Фид нужно обновлять каждые четыре часа?
Интервал зависит от роли фида и допустимого возраста его данных. Если мастер-фид передаёт каталог/SKU, а расширенный commerce API — актуальные условия покупателя, частоту выбирают по изменениям каталога. Персональные цены и остатки сами по себе не требуют нового импорта. В стандартном режиме цена берётся из фида. Boolean-обработчик не меняет цену и не снимает установленный фидом запрет покупки. Правило выбора и проверка свежести: частота обновления фида.
Как подключить разные страны и валюты?
Согласуйте по каждому рынку каталог, валюту и назначенную конфигурацию проекта/applicationId. Геопозиция зрителя не переключает фид автоматически. Проверяйте сохранение валюты и дробной цены в карточке, кабинете и отчётах; денежные итоги разных валют не складываются без отдельного правила конвертации. Подробнее: страны и валюты.
Какой идентификатор товара использовать?
Используйте один строковый feedProductId в товарных данных, на web- и native-PDP и в product action. Сохраняйте ведущие нули и регистр. Если commerce API принимает другой внутренний SKU, преобразуйте идентификатор на границе системы ритейлера, а не вводите второй ID для ShopStory.
Можно проверять остаток через API ритейлера перед покупкой?
Да. Web SDK передаёт список товаров эфира в обработчик наличия на сайте ритейлера, тот обращается к своему stock API с выбранным магазином и возвращает карту наличия. SDK обновляет карточки до клика по кнопке. Запрос выполняется кодом сайта с его сессией, поэтому открывать stock API для ShopStory не нужно.
Если stock API недоступен из браузера покупателя, используйте серверного посредника магазина. Персональные цены и выбор SKU подключаются через расширенный commerce-контракт. Boolean-контракт наличия, тайм-ауты и приоритет источников: Наличие товара и остатки.
Можно передавать товары через API и выбирать цвет или размер в плеере?
Это отдельная проектная commerce-интеграция. До оценки разработки подтвердите с ShopStory версию SDK, целевые платформы и способ регистрации обработчиков; параметры стандартного show() не включают эти возможности автоматически.
В согласованной поставке источником товаров и вариантов может быть фид или API магазина. Опции соответствуют реальным SKU, а магазин возвращает актуальные условия и подтверждает добавление выбранного варианта. Контракт и prerequisites: Интеграция с интернет-магазином.
Где регистрировать getProductConditions и startCommerceAction?
В commerce v1 обработчики регистрируются до открытия плеера: на Web — через ShopStorySDK.registerCommerceAdapter, на native и Flutter — через API соответствующего пакета. Порядок регистрации и Web-фрагмент описаны в commerce-руководстве. Перед подключением получите совместимые версии и полный пример. Эти обработчики не являются HTTP endpoints Public API.
Мы обязаны подключать проверку остатков?
В стандартном Web-подключении обработчик наличия необязателен: без него используется снимок фида. Его подключают, когда наличие зависит от выбранного магазина или меняется чаще, чем синхронизируется фид. В расширенном commerce v1 актуальные условия, включая наличие, возвращает getProductConditions; это отдельный контракт.
API
Почему /v2/ использует application=, а /v3/ — applicationId=?
У разных семейств endpoint исторически разные имена query-параметра. Используйте параметр из схемы конкретного endpoint и не меняйте версию URL механически. Подробнее: Формат запросов и ответов.
Как обрабатывать HTTP 200 с status: 400 внутри JSON?
Проверяйте оба уровня независимо. Сначала обработайте HTTP-код или сетевую ошибку, затем верхнеуровневый status и после него состояние внутри body, если оно есть. HTTP 200 сам по себе не подтверждает успех операции.
Можно ли полагаться на поля, которых нет в OpenAPI?
Нет. Клиент должен игнорировать незнакомые необязательные поля и использовать документированную схему. Случайно присутствующее поле может быть внутренним или нестабильным.
Как тестировать без активного live?
Используйте опубликованную запись, переданную ShopStory для приёмки. Для live-состояния нужна отдельная сессия тестового эфира; статичный mock не подтверждает поведение в реальном времени.
Mobile
Mobile SDK — это библиотека или WebView?
SDK — библиотека с нативным API; внутри неё полный плеер работает в управляемом WebView. SDK отвечает за media lifecycle и bridge, приложение — за свои экраны, навигацию, авторизацию и корзину. Собирать собственный WebView-плеер не требуется. Объяснение и схема архитектуры.
Какие mobile-платформы входят в текущий маршрут?
Опубликованные инструкции и starters относятся к указанным в них версиям native iOS и Flutter на iOS. Для выбранной платформы ShopStory передаёт точную версию SDK, совместимый Web runtime и, при использовании Flutter, adapter/native пакеты. Требования к toolchain фиксируются в integration handoff.
Android SDK и Flutter на Android согласуются отдельно. Платформенная поставка помогает выбрать маршрут, а Android-контракт задаёт состав пакета, карту переходов и приёмку. Flutter на iOS не подтверждает поддержку Android.
Как подключить Mobile SDK?
Начните с руководства Mobile SDK. Оно описывает пользовательский сценарий, единый feedProductId, границу ответственности, product actions, lifecycle, безопасность и приёмку.
Для опубликованных поставок native iOS и Flutter на iOS скачайте starter и проверьте пару версий. Для Android получите пакет и пример своей версии. Доступы и тестовые товары выдаёт ShopStory. Расширенный commerce подключается отдельно по контракту поставки.
Где проходит граница white-label?
SDK работает внутри приложения ритейлера: каталог, PDP, навигация, авторизация, корзина и native analytics остаются частью приложения. Визуальная конфигурация web-плеера согласуется для проекта. Изменение элементов, которых нет в поставленной документации, не входит в публичный контракт и фиксируется отдельно до приёмки.
Что проверить для чата перед выпуском в App Store или Google Play?
Включите в приёмку правила, фильтрацию сообщений, жалобы, персональную блокировку и действия модератора. Зафиксируйте, кто обрабатывает обращения. Проверяются механизмы конкретной поставки и итоговая сборка приложения; одно наличие правил чата не подтверждает готовность. Ответственность описана в разделе модерации чата; проверяемые результаты — в матрице готовности.
Поддержка
Что приложить к техническому обращению?
- URL страницы и
applicationId; - время запроса с часовым поясом;
- браузер, ОС или mobile-платформу;
- endpoint и безопасный фрагмент запроса и ответа;
- шаги воспроизведения и ожидаемый результат.
Не отправляйте пароли, cookies, access tokens и персональные данные. Канал: support@shopstory.live. Порядок реакции и SLA определяются договором проекта.
Аналитика
Почему в ShopStory и счётчике магазина разные числа?
Buy intent фиксирует клик, а E-commerce add — подтверждённое добавление. Переход на PDP, заказ и оплата измеряются отдельно. Сверяйте также период, consent и покрытие страниц: смысл метрик.
Достаточно включить E-commerce в Яндекс Метрике?
Нет. Нужны согласованный data container и подтверждённая отправка из SDK для проекта. Проверяются событие в container, запрос аналитики и отчёт: Web tracking.
Можно перенести старую AppMetrica-инструкцию в Mobile SDK?
Принцип отправки после успеха Cart API сохраняется. Старый WebView bridge и классы YMM не являются текущим host contract: используйте mobile tracking и API установленной AppMetrica.