Імпорт каталогу з Shopify через API

18 хв

Shopify — одна з найпопулярніших платформ для інтернет-магазинів у світі. Якщо ваш магазин на Shopify, каталог товарів уже там; Elbuz забирає його напряму через API, без вивантаження файлів. Далі товари живуть у вашому базовому каталозі Elbuz, де ви керуєте цінами, наявністю й контентом і роздаєте їх на інші канали продажу.

Ця стаття — про підключення саме Shopify. Загальний порядок для будь-якого API-джерела описано в огляді імпорту каталогу через API; тут — особливості Shopify: два різні способи підключення, які поля куди лягають у картці та як переносяться варіанти. Про завантаження даних загалом — огляд завантаження.

Два способи підключення

Shopify можна під'єднати двома шляхами, і це головна його особливість. Швидкий режим без ключа: ви вказуєте лише адресу магазину, і Elbuz читає ваш каталог через публічний перелік товарів, який Shopify віддає всім (той самий products.json). Ключі не потрібні — зручно, щоб швидко залити каталог. Але в цьому режимі видно лише опубліковані товари, а замовлення й точні залишки недоступні.

Повний режим за токеном: ви створюєте у своєму магазині застосунок і вставляєте його Admin API access token. Тоді Elbuz працює з Shopify через Admin API, бачить каталог повністю й може забирати замовлення. Для постійної роботи потрібен саме цей режим; швидкий добре підходить для першого знайомства чи разового завантаження. Перемикача між режимами немає — Elbuz вибирає сам: є токен — повний режим, немає — швидкий.

Де це у програмі

У вікні імпорту створіть шаблон і оберіть тип «Shopify». Це API-джерело: файл не потрібен. Один шаблон — одне підключення до одного магазину Shopify. Якщо магазинів кілька, під кожен заведіть окремий шаблон.

Форма підключення шаблону «Мій магазин Shopify» через API
1Домен магазину
2Admin API access token
3Client secret
4Кнопка «Перевірити підключення»
  1. Домен магазину — адреса вигляду mystore.myshopify.com або власний домен магазину.
  2. Admin API access token — токен custom-застосунку Shopify з правами read_orders.
  3. Client secret — опційне поле для перевірки підпису вебхуків.
  4. Кнопка «Перевірити підключення» — перевіряє введені дані без збереження форми.

Що потрібно для підключення

У картці «Підключення» є три поля:

  • Домен магазину — адреса вашого магазину, наприклад mystore.myshopify.com; можна вказати й власний домен магазину. Для швидкого режиму достатньо лише цього поля.
  • Admin API access token — токен застосунку. Потрібен для повного режиму (каталог цілком + замовлення).
  • Client secret — секрет застосунку для перевірки підпису вебхуків. Поле опційне; заповнюється, якщо ви приймаєте замовлення вебхуком.

Де взяти токен: крок за кроком

ДеЩо зробити
Адмінка ShopifyНалаштування → Застосунки (Settings → Apps) → «Develop apps»
Там самоСтворити власний застосунок (custom app) і задати йому права доступу (scopes) — обов'язково читання товарів і замовлень, зокрема read_orders
Там самоВстановити застосунок на магазин і отримати Admin API access token
ElbuzВікно завантаження → ваш шаблон «Shopify» → картка «Підключення» → поля домену й токена

Створення власного застосунку — процедура для розробника, і Shopify час від часу змінює її порядок: зараз вона веде в окремий Dev Dashboard, а отримання токена в нових застосунках вимагає технічного кроку з ключами застосунку. Якщо не хочете з цим розбиратися — скористайтеся кодом прив'язки: встановіть застосунок Elbuz і введіть отриманий код у картці «Застосунок із маркетплейсу». Токен підставиться сам, і поле токена лишиться порожнім.

Офіційна довідка Shopify: Installing and setting up apps — розділи про створення власного застосунку та отримання токена доступу.

Коли токен введено, скористайтесь кнопкою «Перевірити підключення» — вона одразу скаже, чи приймає Shopify ваші дані, ще до першого повного завантаження. Це найшвидший спосіб переконатися, що токен правильний і має потрібні права.

Вибір даних для завантаження

У картці «Вибір даних для завантаження» галочками ви вмикаєте, що саме тягнути: Товари (каталог у базовий каталог Elbuz), Фото (зображення) і Замовлення. Набір галочок спільний для всіх API-джерел, тож частина з них до Shopify не стосується — програма звертається лише до тих даних, які платформа віддає. Категорія й виробник приходять разом із товаром, окремо вмикати їх не треба.

Що потрапляє в картку: маппінг полів

У повному режимі (за токеном) кожен товар Shopify розкладається в поля картки Elbuz так:

Дані ShopifyПоле картки в Elbuz
titleНазва товару (для варіанта — «Назва — Варіант»)
descriptionHtmlПовний опис
vendorВиробник
sku варіантаАртикул
barcode варіантаШтрихкод (EAN)
price варіантаЦіна
compareAtPriceСтара ціна — якщо вона більша за поточну
inventoryQuantityЗалишок (наявність)
статус ACTIVEАктивність картки (чернетка приходить вимкненою)
tagsМітки товару
перша колекція (collections)Категорія
selectedOptions (Size, Color…)Опції варіанта
фото варіанта + media товаруЗображення — за увімкненої галочки «Фото»
ідентифікатори товару й варіантаКлючі прив'язки до магазину

Зверніть увагу на важливий нюанс: у характеристики потрапляють саме опції варіантів (Size, Color тощо), а не довільні властивості товару. Shopify не має окремого довідника характеристик — усе, що описує варіант, живе в його опціях, і саме вони переносяться в картку як опції. Ціни, залишок, артикул і штрихкод теж належать варіанту, а не товару загалом — тому в Elbuz кожен варіант отримує свої цифри.

Як переносяться варіанти

Shopify зберігає варіанти (розміри, кольори, комплектації) як окремі позиції всередині товару. Elbuz їх розпізнає: якщо у товару кілька варіантів, кожен приходить окремою карткою з назвою «Назва товару — Варіант», а всі вони зв'язуються в одну сім'ю за назвою батьківського товару. Так у каталозі видно і кожну конкретну позицію зі своєю ціною й залишком, і те, що вони належать одному товару.

Разом із варіантом Elbuz запам'ятовує його ідентифікатор у Shopify, а для варіантів — ще й ідентифікатор батьківського товару та складської позиції. Саме за цими ключами потім ідуть зворотні оновлення цін і залишків у ваш магазин: товар приїжджає не «сам по собі», а прив'язаним до конкретної позиції Shopify.

Чим відрізняється швидкий режим без ключа

Обидва режими наповнюють ті самі поля картки, але публічний перелік товарів віддає менше даних, ніж Admin API. Різниця така:

Що самеЗа токеномБез ключа
Склад каталогуусі товари, зокрема чернетки й прихованілише опубліковані
Залишокточна кількістьтільки «є / немає»
Штрихкод (EAN)переноситьсянедоступний
Категоріяколекція товарутип товару
Замовленнятакні

Якщо ви ввімкнули «Замовлення», але токен не вказали, Elbuz не мовчатиме: у журналі з'явиться повідомлення, що завантаження замовлень без ключа API недоступне. Це не помилка налаштувань — таке обмеження самого публічного переліку.

Що робить повторний прогін з вашими правками

Спільний для всіх API-підключень порядок описано в огляді імпорту каталогу через API. Для Shopify перелік полів, які перезаписуються з магазину, такий: назва, повний опис, ціна, стара ціна, кількість, наявність, артикул, штрихкод, мітки, назва сім'ї і активність картки. Виправили щось із цього в Elbuz — наступне оновлення за розкладом поверне туди значення з Shopify, і попередження при цьому не буде.

Чого прогін у вже заведеної картки не чіпає: фото (вони додаються лише новим карткам, тож замінене вами фото лишиться, але й нові фото з магазину до старої картки не доїдуть), опції варіанта (наявні значення лишаються як були), місце в дереві категорій і адресу сторінки. Виробника порожній vendor не відв'яже: прив'язка картки до бренда змінюється, лише коли vendor заповнений — щоправда, текст у колонці «Виробник» сітки товарів порожній vendor усе одно затирає.

Закріпити картку можна тільки в самому товарі: секція «Статуси та прапорці», блок «Захист під час імпорту», перемикач «Не оновлювати». Картку з цією позначкою прогін Shopify обходить цілком — ні ціна, ні залишок, ні назва, ні активність у ній не зміняться. А от сусідній перемикач «Фіксована ціна» завантаження з Shopify не дивиться: ціну з магазину воно запише попри нього.

Товар упізнається за назвою, і назва запам'ятовується в момент створення картки. Тому два перейменування дають різний результат. Перейменували в Elbuz — прогін однаково знайде картку й поверне назву з магазину; дубля не буде. Перейменували в Shopify — прогін картку вже не впізнає й заведе другу, з новою назвою; стара лишиться в каталозі зі старими цінами, і прибирати її доведеться руками. Артикул на впізнавання не впливає: у ключі пошуку бере участь артикул виробника, якого Shopify не передає.

Товар зник із Shopify або став чернеткою

У Shopify тут є своя особливість: він віддає не лише сам товар, а й його стан. Тому «зник» і «став чернеткою» — два різні випадки з різними наслідками.

Товар видалили в Shopify. Він просто не приїде в наступному прогоні, а картка в Elbuz лишиться такою, як була: з останньою відомою ціною й останнім відомим залишком. Вона не деактивується, залишок не обнуляється, у журналі про неї нічого не пишеться. Прибирати такі позиції доводиться руками — інакше вони тихо висять зі старими цифрами й потрапляють у вивантаження.

Товар перевели в чернетку або в архів. У повному режимі за токеном він усе одно приїде, але з вимкненою активністю: увімкненою картка лишається тільки в стані Active. Ціна й залишок у ній при цьому оновляться як звичайно.

Товар зняли з публікації, а ви працюєте у швидкому режимі. Публічний перелік віддає лише опубліковані товари, тож для Elbuz такий товар виглядає зниклим: картка лишається активною зі старими цифрами. Швидкий режим узагалі ніколи не вимикає карток — він проставляє активність усім товарам, які прочитав.

Галочки «видаляти те, чого немає в джерелі» у шаблоні Shopify немає, і жодне завантаження з Shopify товарів не видаляє.

Активність картки: вимкнути чи видалити

Перемикач «Активність товару» в картці робить три речі. Вимкнена картка не показується на вітрині. Вона не потрапляє у вивантаження: новий шаблон вивантаження створюється з правилом відбору, яке бере лише активні товари. І якщо ви вивантажуєте каталог назад у Shopify, вимкнена картка приїде в магазин зі станом чернетки.

Зняття активності нічого не руйнує: ціна, залишок, фото, характеристики та зв'язки з категоріями лишаються на місці, і ввімкнення повертає картку в роботу без утрат.

Але для товарів Shopify вимикати картку руками майже немає сенсу, і ось чому. Активність приходить із магазину при кожному прогоні: якщо в Shopify товар Active, наступне оновлення мовчки ввімкне картку назад. Якщо в Shopify він чернетка — картка й так приїде вимкненою. Тримати картку вимкненою всупереч магазину можна лише позначкою «Не оновлювати»: вона зупиняє й активність теж. А у швидкому режимі без ключа зняття активності не переживе жодного прогону взагалі.

Видалення — операція іншого порядку. Наступний прогін не впізнає видаленої картки й заведе товар наново: з назвою, ціною, залишком і фото з магазину, але без усього, що ви в ній правили, і в тій категорії, яку підкаже колекція Shopify.

Хто врешті записує ціну

Ціну в картку Shopify пише напряму — беручи її з варіанта. Стара ціна заповнюється з compareAtPrice і тільки тоді, коли вона більша за поточну; якщо в магазині старої ціни немає, поле в картці обнуляється — зокрема й тоді, коли ви вписали туди значення руками.

Правила націнки працюють інакше: вони рахують ціну від закупівельної і зачіпають лише товари, у яких закупівельна більша за нуль. Shopify закупівельної не передає — у картці, яку наповнює тільки він, це поле лишається порожнім, і націнка такий товар не чіпає взагалі. Ціна в ньому завжди магазинна.

Якщо ж закупівельна в картці є (наприклад, приїхала з прайсу постачальника), наприкінці завантаження Elbuz перерахує ціну за вашими правилами націнки — але тільки для карток, щойно створених цим прогоном. Уже наявні картки цей перерахунок не зачіпає: у них лишається та ціна, яку щойно записав Shopify.

Коли на ціну одного товару претендують два джерела, перемагає не «головніше» з них, а прогін, який завершився останнім. Розвести їх можна двома прапорцями, і працюють вони по-різному: «Фіксована ціна» зупиняє правила націнки, але не зупиняє запис ціни з Shopify; «Не оновлювати» зупиняє і те, й інше.

Службові категорії та виробники

Категорія береться з першої колекції товару — у повному режимі програма читає до трьох колекцій і бере з них першу. Товар, що лежить у Shopify в кількох колекціях, потрапить в Elbuz в одну категорію. У швидкому режимі колекцій узагалі не видно, і категорією служить тип товару (product type). Спершу програма шукає вашу категорію з такою самою назвою і кладе товар у неї, і лише якщо не знаходить — створює нову.

Товарам, у яких колекції немає зовсім, підключення заводить окрему категорію «Товари - shopify». Вона створюється вимкненою і без участі у вивантаженнях: такі товари самі собою нікуди не поїдуть, поки ви не розкладете їх по своїх категоріях. Розкладати можна вільно — місце товару в дереві повторний прогін не змінює. А видаляти саму категорію безглуздо: наступний прогін створить її знову, щойно в магазині знайдеться товар без колекції.

Виробник — це поле vendor товару Shopify. Новий бренд додається у ваш довідник виробників автоматично, з позначкою, з якого підключення він прийшов. Перейменовувати такі бренди в Elbuz немає сенсу: наступний прогін не знайде бренд під новою назвою, заведе його ще раз під старою і перечепить товари на новий рядок довідника. Назву бренда міняють на боці Shopify.

Каталог і замовлення

Те саме підключення вміє забирати не лише каталог, а й замовлення — але тільки в повному режимі за токеном. Замовлення можна отримувати двома шляхами: періодичним опитуванням за розкладом або вебхуком — коли Shopify сам повідомляє Elbuz про нове замовлення тієї ж миті. Для вебхука у формі є окрема картка «Приймання замовлень (Webhook)»: там показано URL вебхука, а підписку на боці Shopify Elbuz створює по кнопці — вручну нічого вставляти не треба. Shopify тут один із небагатьох джерел із миттєвим прийманням замовлень; більшість майданчиків працюють лише опитуванням.

Вебхук приймається лише тоді, коли в шаблоні стоїть галочка «Використовувати вебхуки» і сам шаблон у стані «Активний». Вимкнули пілюлю в шапці картки — Shopify і далі надсилатиме повідомлення, а Elbuz їх мовчки відхилятиме. Якщо ви заповнили Client secret, кожне повідомлення ще й перевіряється за підписом: не збігся підпис — замовлення не приймається. Магазин, підключений кодом прив'язки через застосунок Elbuz, підписувати не треба: кнопка «Підписатися на вебхуки Shopify» відповість, що підписку вже налаштовано при встановленні.

Яким документом лягає замовлення

Кожне замовлення з Shopify заводиться документом «Замовлення покупця» і заводиться непроведеним. Для складу це головне: поки документ не проведено, залишок у каталозі не рухається й резерв під замовлення не з'являється. Проводите документ ви самі — саме проведення й займає товар резервом.

У документ лягає номер замовлення в тому вигляді, у якому його показує Shopify (#1001), а впізнається замовлення за своїм внутрішнім ідентифікатором у магазині — тож повторне завантаження того самого замовлення дубля не створює. Покупець шукається серед ваших контрагентів за поштою й телефоном; не знайшовся — заводиться новий.

Статуси приходять двома окремими полями: стан виконання (UNFULFILLED, FULFILLED) і стан оплати (PAID, PENDING, REFUNDED). Ваші статуси підставляються за зіставленням, яке налаштовують кнопками «Статуси замовлення», «Статуси доставки» й «Статуси оплати» в секції «Пов'язані налаштування» картки шаблону. Не зіставлений статус означає перший статус довідника — тобто «як нове». Вебхук і завантаження за розкладом приводять статуси до одного вигляду, тож зіставлення досить налаштувати один раз для обох шляхів.

Що буде, коли замовлення зміниться вже після завантаження. Якщо документ проведено, програма його більше не чіпає: ні статус, ні спосіб оплати чи доставки з магазину в нього не приїдуть. Якщо документ не проведено, наступне оновлення перепише те, чим володіє майданчик — оплату, доставку, способи, — а ваш робочий статус змінить лише тоді, коли статус реально змінився в самому Shopify з минулого разу.

Перше завантаження забирає всю історію замовлень, яку віддає магазин, і вже заведених документів при цьому не оновлює. Далі програма добирає тільки змінене, відштовхуючись від дати останнього замовлення, — її видно в блоці «Розширене» картки шаблону, у полі «Завантаження замовлень починаючи з дати (РРРР-ММ-ДД)». Очистили це поле — наступний прогін знову піде по всій історії. Майте на увазі обмеження самого Shopify: замовлення, старші за 60 днів, застосунок бачить лише тоді, коли йому видано окреме право read_all_orders.

Shopify чудово тримає вітрину, але коли товарів багато, а продаєте ви не лише на власному сайті, керувати всім із адмінки Shopify стає незручно. Elbuz забирає каталог до себе й дає єдине місце, де ви рахуєте ціни за своїми правилами націнок, стежите за наявністю й наповнюєте картки контентом. Особливо це цінно, коли Shopify — лише один з ваших каналів: той самий товар одночасно продається на сайті, маркетплейсах і в Shopify, а редагуєте ви його в одному місці.

Ще одна перевага — робота з постачальниками. Каталог Shopify можна тримати наповненим і актуальним автоматично: ціни й наявність тягнуться з прайсів постачальників у Elbuz, а звідти вивантажуються назад у Shopify. Так вітрина завжди свіжа без ручного перенесення цифр туди-сюди.

Оновлення за розкладом

Коли підключення налаштовано й перевірено, поставте шаблон на розклад кнопкою «Налаштування розкладу» прямо у формі. Elbuz сам звертатиметься до Shopify за свіжими даними: ціни й залишки оновлюватимуться, нові товари додаватимуться. Частоту обирайте за потребою.

Кожен запуск лишає слід у журналі, і в ньому стоять числа, а не просто «готово». Каталог приходить сторінками, і на кожну є свій рядок: «Shopify: сторінка каталогу 3, отримано товарів: 75». У кінці — підсумок: «Shopify: каталог завантажено, товарів (включно з варіантами): 240». Замовлення рахуються окремо: «Shopify: сторінка замовлень 1, завантажено всього: 50». Помилка магазину пишеться туди ж червоним. Розділення «скільки додано, скільки оновлено» журнал не показує — новий товар видно в сітці «Товари» за колонкою «Джерело: назва», а факт оновлення підтверджує колонка «Дата оновлення». Перші кілька разів у журнал варто зазирати.

Якщо прогін обірвався посеред роботи

Товари не чекають кінця прогону: вони пишуться в каталог пачками по 500 позицій, щойно набереться пачка. Тому обрив ділить результат надвоє — усе, що встигло дійти пачками, лежить у каталозі оновленим, решта лишилася зі старими даними. Дублів обрив не породжує: повторний прогін шукає ті самі картки за назвою й просто перезаписує їх, а замовлення впізнає за його ідентифікатором у Shopify.

Повтор не просто безпечний — після обриву він ще й потрібен. Наприкінці успішного прогону програма доводить набір до робочого стану: застосовує правила націнки до щойно доданих товарів і оновлює їхні сортувальні та пошукові дані. Обрив цей фінальний прохід не виконує, і товари з перерваного прогону лишаються без нього до наступного запуску — той підхопить і їх теж.

Коротку неприємність на боці Shopify програма переживає сама: якщо магазин відповідає «забагато звернень», запит повторюється до трьох разів із паузою, що зростає з кожною спробою, і лише після третьої невдачі прогін зупиняється з червоним рядком «Shopify: помилка API —» і текстом причини від магазину.

У швидкому режимі без ключа обрив виглядає інакше, і це найнеприємніша його властивість. Помилку на першій сторінці програма покаже червоним і зупиниться. А помилку на будь-якій наступній сторінці вона вважає кінцем каталогу: прогін завершиться спокійним рядком «Shopify: каталог завантажено, товарів (включно з варіантами): N» — просто N буде менше, ніж товарів у магазині, і жодної позначки про це в журналі не буде. Саме так поводиться публічний перелік на глибоких сторінках великого каталогу. Тому після завантаження у швидкому режимі звіряйте підсумкове число з кількістю позицій у Shopify, а для великого каталогу переходьте на повний режим за токеном.

Скільки тягне один прогін

Стелі на кількість товарів немає: скільки віддасть Shopify, стільки й приїде. Дані забираються сторінками, і розмір сторінки в режимів різний.

  • Повний режим за токеном — 25 товарів на сторінку, з паузою в секунду між сторінками. Разом із товаром забираються до 100 його варіантів, до 20 фото і перші 3 колекції.
  • Швидкий режим без ключа — 250 товарів на сторінку, теж із паузою в секунду. Є сторож: не більше 2000 сторінок, тобто до 500 тисяч позицій за прогін.
  • Замовлення — 50 замовлень на сторінку, до 100 рядків у кожному.

Кожен варіант рахується окремою позицією: товар із п'ятьма розмірами — це п'ять рядків у підсумку журналу й п'ять карток у каталозі.

Відповіді від Shopify програма чекає до 120 секунд на запит, у швидкому режимі — до 60. Вікно можна закривати: прогін іде на сервері, а стежити за ним можна з Центру операцій. Скільки триває саме ваш каталог, вигадувати не треба — це видно в колонці «Витрачено часу» списку шаблонів і у вікні «Історія запусків», де є «Середня тривалість» і «Найдовший».

Якщо завантажили не тим режимом

Найчастіша помилка тут — запустити швидкий режим поверх каталогу, уже завантаженого за токеном (наприклад, токен протух і його прибрали з форми). Формально нічого не ламається, але публічний перелік бідніший за Admin API, і його значення перезапишуть точні:

  • штрихкоди зникнуть — публічний перелік їх не віддає, і в поле штрихкоду запишеться порожнє значення;
  • залишок огрубиться до 1 або 0: замість точної кількості публічний перелік каже лише «можна купити / не можна»;
  • вимкнені товари ввімкнуться — у швидкому режимі всі прочитані товари приходять активними.

Лікується це одним прогоном: впишіть Admin API access token і запустіть завантаження ще раз. Повний режим перезапише ті самі картки точними цифрами — штрихкоди, кількість і активність повернуться з магазину. Дублів при перемиканні режимів не буде: товар в обох режимах шукається за тією самою назвою. Не повернеться тільки одне — картки, які швидкий режим завів уперше, лишаться в тих категоріях, куди він їх поклав: у нього категорія береться з типу товару, а не з колекції, а місце товару в дереві повний прогін уже не змінює.

Якщо ж підключили не той магазин і завантажене не потрібне взагалі, товари цього шаблона відбираються у вікні «Товари» за колонками «Джерело: назва» і «Джерело: код» і видаляються пакетом. Картки, які у вас уже були й які підключення лише перезаписало, цей відбір не покаже — джерело в них лишилося старим; їх шукають за колонкою «Дата оновлення». Повернути старі значення масово нема чим: кнопка «Повернути назад» відкочує лише масові зміни, зроблені в самій сітці товарів, а перезапис завантаженням у неї не потрапляє. Окремо зберігається тільки ціна — у блоці «Історія ціни товару», якщо ведення історії цін увімкнене.

Чого це підключення не робить

  • Не видаляє товарів. Що зникло з магазину, те лишається в каталозі зі старими цифрами. Галочки «видаляти те, чого немає в джерелі» у шаблоні Shopify немає.
  • Не заповнює закупівельну ціну. Прогін пише тільки продажну ціну варіанта, тож правила націнки, які рахують від закупівельної, таких товарів не зачіпають.
  • Не оновлює фото вже заведених карток. Зображення додаються лише в момент створення картки; нові фото з магазину до старого товару доїдуть тільки разом із новою карткою.
  • Не переносить характеристик. У Shopify немає окремого довідника характеристик — переносяться лише опції варіанта.
  • Не вивантажує нічого назад само собою. Завантаження наповнює базовий каталог Elbuz і на цьому зупиняється. Щоб ціни й залишки поїхали в Shopify, потрібен окремий шаблон у вікні «Вивантаження даних» зі своїм розкладом.

Часті труднощі

Найчастіша причина, чому в повному режимі нічого не тягнеться, — токен або його права. Перевірте, що застосунок встановлено на магазин і йому видано права на читання товарів і замовлень. Якщо токен введено, а замовлення не приходять — майже завжди бракує саме права read_orders. Кнопка «Перевірити підключення» показує це одразу.

У швидкому режимі без ключа є свої межі: видно лише опубліковані товари, а на глибоких сторінках великого каталогу публічний перелік іноді відповідає помилкою. Якщо каталог великий і потрібен цілком — переходьте на повний режим за токеном. І пам'ятайте: без токена замовлення й точні залишки недоступні в принципі, це обмеження публічного переліку, а не Elbuz.

Розбір частих проблем
Що ви бачитеЧому такЩо зробити
«Shopify: вкажіть домен магазину і access token» Порожній домен магазину Заповніть поле домену; для замовлень і повного каталогу — ще й Admin API access token (що потрібно для підключення)
«Shopify: помилка API —» і текст від магазину Shopify відхилив запит: токен недійсний, бракує прав або магазин тимчасово недоступний Натисніть «Перевірити підключення» — відповідь назве причину без повного прогону (де взяти токен)
«Shopify: завантаження замовлень без ключа API недоступне» Увімкнено «Замовлення», але працює швидкий режим без ключа Впишіть Admin API access token або прив'яжіть магазин кодом через застосунок Elbuz (різниця режимів)
«invalid JSON (not a Shopify storefront?)» За вказаною адресою немає публічного переліку товарів: не той домен, магазин закрито паролем або він не на Shopify Перевірте адресу магазину; якщо вітрина закрита паролем, підключайтеся за токеном (два способи)
«Shopify: каталог завантажено», але товарів помітно менше, ніж у магазині Швидкий режим: помилку на глибокій сторінці публічного переліку програма читає як кінець каталогу Перейдіть на повний режим за токеном і запустіть завантаження ще раз (обрив прогону)
У каталозі два однакові товари з різними назвами Товар перейменували в Shopify: прогін не впізнав стару картку й завів нову Видаліть стару картку: після перейменування прогін її більше не оновлює, тож вона знаходиться відбором за старою «Датою оновлення» (повторний прогін)
«Магазин підключено через застосунок Elbuz — підписку на вебхуки замовлень уже налаштовано» Ви натиснули «Підписатися на вебхуки Shopify» на магазині, підключеному кодом прив'язки Нічого робити не треба: підписку створено при встановленні застосунку (каталог і замовлення)

Почніть зі швидкого режиму — вкажіть лише адресу магазину й подивіться, як каталог виглядає в Elbuz. Коли переконаєтесь, що все на місці, додайте Admin API access token для повного підключення й замовлень і поставте шаблон на розклад.

Часті питання

Чи можна підключити Shopify зовсім без ключа?

Так, у швидкому режимі: вкажіть лише адресу магазину, і Elbuz прочитає опублікований каталог через публічний перелік товарів. Але замовлення й точні залишки в цьому режимі недоступні — для них потрібен Admin API access token. Перемикати режим вручну не треба: щойно з'явиться токен, Elbuz працюватиме повним режимом.

Де взяти Admin API access token?

У своєму магазині Shopify: створіть застосунок (custom app), видайте йому права на читання товарів і замовлень, установіть на магазин — і Shopify покаже токен. Його ви й вставляєте у форму. Або підключіться кодом прив'язки через застосунок Elbuz, тоді токен підставиться сам.

Як переносяться варіанти товару (розміри, кольори)?

Кожен варіант приходить окремою карткою з назвою «Назва товару — Варіант», зі своєю ціною, залишком і артикулом, а всі варіанти одного товару зв'язуються в сім'ю. Опції варіанта (Size, Color тощо) переносяться в картку як опції.

Чому не переносяться характеристики товару?

У Shopify немає окремого довідника характеристик: усе, що описує позицію, живе в опціях варіанта. Саме вони й переносяться. Решту властивостей можна дозаповнити вже у своєму каталозі Elbuz.

Як краще отримувати замовлення — розкладом чи вебхуком?

Вебхуком швидше: Shopify повідомляє Elbuz про нове замовлення тієї ж миті. Підписку Elbuz створює по кнопці у формі, URL вручну вставляти не треба. Розклад теж працює, але з невеликою затримкою до наступного звернення.

Чому у швидкому режимі видно не всі товари?

Публічний перелік Shopify віддає лише опубліковані товари. Чернетки й приховані позиції в ньому не з'являються. Щоб бачити каталог цілком, підключіться в повному режимі за токеном.

Що буде, якщо перейменувати товар у Shopify?

Наступний прогін не впізнає стару картку — товар шукається за назвою — і заведе другу картку з новою назвою. Стара лишиться в каталозі зі старими цінами, прибирати її треба руками. А от перейменування в Elbuz безпечне для впізнавання: картка знайдеться, просто назва повернеться з магазину.

Я зняв «Активність» у картці — чи ввімкне її наступний прогін?

Так, якщо в Shopify товар у стані Active: активність приходить із магазину при кожному оновленні. Утримати картку вимкненою можна лише перемикачем «Не оновлювати» в блоці «Захист під час імпорту». У швидкому режимі без ключа всі товари приходять активними.

Чому після завантаження зникли штрихкоди?

Так виглядає прогін у швидкому режимі поверх каталогу, завантаженого за токеном: публічний перелік штрихкодів не віддає, і в поле записується порожнє значення, а точний залишок замінюється на «є / немає». Впишіть токен і запустіть завантаження ще раз — повний режим поверне і штрихкоди, і кількість.

Чи зрушить залишок, коли приїде замовлення з Shopify?

Ні. Замовлення лягає документом «Замовлення покупця» і лягає непроведеним, а непроведений документ склад не чіпає: ні залишок, ні резерв не зміняться, поки ви не проведете документ.

Чи була стаття корисною?