← Всі статті
woocommercerest apiавтоматизаціяecommerceseo
WooCommerce REST API: автоматизація каталогу

WooCommerce REST API: автоматизація каталогу

REVENZA Blog·7 травня 2026 р.·9 хв читання

Якщо у вас 500, 5000 або 50 000 товарів у магазині на WooCommerce, ручне редагування цін, описів, SEO-полів чи залишків — це місяці роботи й гарантовані помилки. WooCommerce REST API дозволяє оновлювати каталог пакетами по 100 товарів за один запит, синхронізувати залишки з 1С, ERP чи постачальником, переписувати description і мета-теги через AI. У цій статті я покажу, як підняти API за 15 хвилин, як обійти типові граблі на shared-хостингу й чому ваш перший batch-запит може повернути 500-ту помилку.

Що таке REST API у WooCommerce і чому без нього не вижити

WooCommerce постачається з вбудованим REST API ще з версії 2.6 (2016 рік). Це означає, що жодних плагінів встановлювати не потрібно — інтерфейс уже працює за адресою /wp-json/wc/v3/. Через нього ви читаєте та змінюєте товари, варіації, категорії, замовлення, купони, клієнтів і навіть налаштування магазину.

Чому це критично для будь-якого магазину розміром від 200 SKU? Бо альтернативи — це або плагіни на кшталт WP All Import (одноразова операція, без зворотного звʼязку), або експорт-імпорт CSV (катастрофа з кодуванням і втраченими полями). API дає вам точковий контроль: оновити 47 товарів конкретного бренду, не торкаючись інших.

Що саме можна автоматизувати

  • Ціни й залишки — синхронізація з постачальником раз на годину
  • SEO-поля — масове переписування title, meta description, focus keyword (Yoast чи Rank Math)
  • Описи товарів — генерація через GPT-4 або Claude для всього каталогу
  • Атрибути й категорії — реструктуризація без ручного клацання
  • Замовлення — автоматичне передавання у CRM, Нову Пошту, бухгалтерію

На відміну від Shopify Admin API чи закритих інтерфейсів Horoshop і Prom.ua, у WooCommerce ви платите тільки за хостинг — лімітів запитів від платформи немає. Але це палка з двома кінцями, і про це нижче. Спочатку розберемося з ключами доступу.

Створення API-ключа з правами Read/Write

Цей крок займає буквально дві хвилини, але саме тут половина розробників робить першу помилку — створює ключ із правами тільки Read, а потім дві години шукає, чому PUT-запит повертає 401.

  1. Зайдіть в адмінку: WooCommerce → Settings → Advanced → REST API
  2. Натисніть Add key
  3. У полі Description вкажіть зрозумілу назву, наприклад «Sync from ERP» або «Revenza AI integration» — потім ви будете вдячні собі, коли ключів стане десять
  4. В User оберіть користувача з роллю Administrator або Shop Manager
  5. В Permissions виберіть Read/Write — без цього ви не зможете оновлювати товари
  6. Натисніть Generate API key

Система покаже вам Consumer Key (починається з ck_) і Consumer Secret (починається з cs_). Скопіюйте їх одразу — після оновлення сторінки secret більше не буде доступний, доведеться генерувати новий ключ.

Як правильно зберігати ключі

Ніколи не комітьте ключі в Git. Базова гігієна: .env-файл, секретне сховище хостингу або змінні середовища. Якщо ви використовуєте сторонні сервіси (Zapier, Make, n8n, Revenza), додайте ключі лише через інтерфейс — ніколи не пересилайте їх у Telegram чи на email у відкритому вигляді. Скомпрометований Consumer Secret = повний доступ до вашого каталогу й замовлень.

Перевірка ключа через curl

Перш ніж писати скрипт на 200 рядків, зробіть один тестовий запит:

curl https://your-shop.com/wp-json/wc/v3/products?per_page=1 -u ck_xxx:cs_xxx

Якщо у відповідь прийшов JSON із товаром — ви живі. Якщо 401 — перевірте права ключа. Якщо 404 — у вас проблема з permalinks, і це наступна тема.

Чому pretty permalinks — обовʼязкова умова

WordPress за замовчуванням використовує URL виду /?p=123. Це називається «plain permalinks». Якщо у вас увімкнений саме цей варіант, REST API не працюватиме — точніше, працюватиме лише через старий формат /?rest_route=/wc/v3/products, який погано підтримується клієнтськими бібліотеками.

Як виправити:

  1. Перейдіть у Settings → Permalinks
  2. Виберіть будь-який варіант, окрім Plain — рекомендую Post name (/sample-post/)
  3. Збережіть зміни — навіть якщо вони не помінялися, натискання Save оновлює правила .htaccess

На Nginx-хостингах (наприклад, у багатьох українських провайдерів типу Ukraine.com.ua, HostPro чи Mirohost) .htaccess ігнорується. Перевірте, чи в конфігу Nginx є директива:

try_files $uri $uri/ /index.php?$args;

Без неї запити до /wp-json/ будуть повертати 404 від Nginx ще до того, як WordPress отримає шанс відповісти. Це найчастіша причина «у мене API не працює», з якою стикаються власники магазинів. Тепер, коли інфраструктура готова, переходимо до головного болю — лімітів.

Rate limits: як не покласти власний магазин

WooCommerce REST API не має вбудованих rate limits. І саме це найнебезпечніше. Сам WordPress готовий обробляти ваші запити нескінченно — а от shared-хостинг убʼється на 50-100-му паралельному запиті.

Типова ситуація: ви запускаєте скрипт, який оновлює 3000 товарів у циклі по одному. Через 4 хвилини хостер блокує вашу IP-адресу за «підозрілу активність», а магазин тимчасово недоступний для покупців. Знайомо?

Реальні обмеження українських хостингів

  • Shared-тарифи (200-500 грн/міс) — реально витримують 5-10 запитів/секунду, далі 503 або тимчасовий бан
  • VPS від 800 грн/міс — 30-50 запитів/секунду без проблем
  • Managed WooCommerce (Kinsta, WP Engine, від $35/міс) — 100+ rps, але є власні захисні ліміти
  • Cloudflare перед сайтом — може блокувати ваш скрипт як атаку, додайте свою IP в whitelist

Стратегії обходу обмежень

По-перше, використовуйте batch endpoint замість одиночних запитів. Один запит на 100 товарів навантажує сервер у 30-50 разів менше, ніж 100 окремих PUT-запитів — детальніше про це в наступному розділі.

По-друге, додайте затримку між запитами. PHP sleep(1), JavaScript await new Promise(r => setTimeout(r, 1000)). Так, це повільніше — але краще оновити каталог за 20 хвилин, ніж за 5 хвилин і потім годину чекати розблокування.

По-третє, запускайте оновлення вночі (з 2 до 6 ранку). Конверсії впадуть на нуль, тому навіть якщо щось ляже — реальних втрат немає.

По-четверте, моніторте відповіді. Якщо приходить 429 (Too Many Requests) або 503 — зупиніться на 30 секунд і повторіть. Якщо стратегію переписування каталогу варто продумати наперед, рекомендую почитати про Переписати 1000 товарів WooCommerce: стратегія без поломки SEO — там розписано порядок дій і чого не робити одразу.

Batch endpoint: один запит замість сотні

Це найпотужніша фіча WooCommerce REST API і одночасно найменш відома серед власників магазинів. Endpoint /wp-json/wc/v3/products/batch приймає до 100 операцій create, update і delete за один HTTP-запит.

Структура body:

{ "update": [ {"id": 123, "regular_price": "299"}, {"id": 124, "regular_price": "349"} ], "create": [...], "delete": [125, 126] }

Приклад: масове оновлення SEO-полів

Припустимо, у вас 800 товарів і ви згенерували для них нові meta_description через AI. Замість 800 окремих PUT-запитів робимо 8 batch-запитів по 100 товарів:

POST /wp-json/wc/v3/products/batch

Body (фрагмент):

{ "update": [ { "id": 1547, "meta_data": [ { "key": "_yoast_wpseo_metadesc", "value": "Купуйте кросівки Nike Air Max 270 за 3299 грн з доставкою по Україні. Оригінал, гарантія 2 роки." } ] } ] }

Зверніть увагу на префікс _yoast_wpseo_metadesc — Yoast SEO зберігає мета-опис саме в цьому ключі. Для Rank Math ключ буде rank_math_description. Якщо плутаєте — оновлення «спрацює», але візуально нічого не зміниться, бо ви заповнюєте не те поле.

Обробка помилок у batch-відповіді

Найважливіше про batch: якщо один товар з 100 не оновився, інші 99 збережуться. Сервер поверне масив з результатами по кожному ID, де успішні матимуть повний обʼєкт товару, а проблемні — обʼєкт з полем error. Завжди парсіть відповідь і логуйте збої — інакше пропустите ситуацію, коли 30 товарів тихо не оновилися через невалідні ціни (наприклад, з комою замість крапки).

Швидкісне порівняння

  • Одиночні запити, 1000 товарів: ~25-40 хвилин на shared-хостингу, високий ризик блокування
  • Batch по 100, 1000 товарів: 10 запитів, ~2-4 хвилини, мінімум навантаження
  • Batch + паузи 2 секунди: ~5 хвилин, нульовий ризик

Різниця в десять разів — і це не маркетинг, а арифметика. Тепер питання: чи варто писати все це самому, чи делегувати інструменту.

Готові інструменти проти власного скрипта

У вас є три шляхи: писати скрипт самому, зібрати ланцюжок у no-code платформі (Make, n8n, Zapier), або використати спеціалізований сервіс типу Revenza, який уже має готові інтеграції з WooCommerce REST API.

Власний скрипт на Python чи Node.js виправданий, якщо у вас є розробник у команді й унікальна логіка (наприклад, ціна залежить від курсу долара, націнки бренду й залишку). Але памʼятайте: написати — це 20% роботи. 80% — це обробка помилок, retry-логіка, логування, моніторинг, оновлення під нові версії WooCommerce.

No-code платформи типу Make коштують від $9/міс, але швидко стають дорогими — кожна операція = одне «дія», 1000 товарів = 1000 операцій, навіть якщо ви робите batch. Та й SEO-логіки в них фактично немає.

Якщо ваше завдання — саме SEO та контент-автоматизація для WooCommerce, варто спробувати Revenza: платформа підключається до магазину через той самий REST API, генерує описи й мета-поля через AI з урахуванням брендингу, відстежує SERP і пушить оновлення назад у каталог через batch-запити. Для нішевих магазинів є окремий сценарій під дропшипінг, де асортимент змінюється щотижня.

FAQ

Чи можна використовувати WooCommerce REST API без HTTPS?

Технічно — так, через URL-параметри consumer_key і consumer_secret. Але це гарантована компрометація: ключі видно в логах сервера, у проксі, у Wi-Fi-снаферах. Ставте Lets Encrypt (безкоштовно), і використовуйте Basic Auth.

Що робити, якщо batch-запит постійно повертає 504 Gateway Timeout?

Сервер не встигає обробити 100 товарів за відведений час (зазвичай 30-60 секунд на shared-хостингу). Зменшіть розмір пачки до 25-50, увімкніть Object Cache (Redis або Memcached на VPS), або попросіть хостера підняти max_execution_time до 120 секунд.

Як отримати товари з конкретної категорії, не вивантажуючи весь каталог?

Використовуйте параметр category з ID: GET /wp-json/wc/v3/products?category=42&per_page=100. Для пагінації додавайте &page=2. Загальну кількість сторінок API повертає в заголовку X-WP-TotalPages.

Чи зберігаються revision-и при оновленні через API?

Ні — це важливо. WooCommerce оновлює товар «на місці», без створення ревізії, як для звичайних post-ів. Тому перед масовим оновленням завжди робіть бекап БД або експорт CSV — відкотити зміни постфактум буде неможливо.

Чому я бачу новий опис в API, але на сайті — старий?

Кеш. Перевірте: серверний кеш (LiteSpeed, Nginx FastCGI), плагіни кешу (WP Rocket, W3 Total Cache), Cloudflare. API працює напряму з БД, а фронтенд віддає кешовану копію. Очистіть кеш після масового оновлення.

Що далі

WooCommerce REST API — це фундамент будь-якої серйозної автоматизації магазину на WordPress. Налаштований ключ із правами Read/Write, увімкнені pretty permalinks, batch endpoint замість циклу, моніторинг лімітів хостингу — це чотири речі, які перетворюють API з теоретичної можливості на робочий інструмент.

Якщо ви не хочете писати скрипти й тестувати retry-логіку, а вам потрібно просто оновити SEO у 2000 товарах за вечір — підключіть магазин до Revenza за 5 хвилин і подивіться, що вийде. Перші запити можна зробити безкоштовно, тестова інтеграція не вимагає карти.

Спробуйте REVENZA безкоштовно — 50 кредитів при реєстрації, картка не потрібна.

Почати безкоштовно