Часто шукають

↑↓ вибрати ↵ відкрити Усі результати →

Інтеграції · Вебхуки

Вебхуки

Магазин сам надсилає події про товари, залишки, замовлення й клієнтів у ваші системи: налаштування, формат, підпис, повтори.

Вебхук — POST-запит від магазину на вашу адресу, щойно щось змінилося. Ваша система не мусить постійно питати «що нового?».

Налаштування

  1. Адмінка: Інтеграції → Вебхуки. Вставте адресу вашого сервера (лише https на публічному сервері) й відмітьте події.
  2. Скопіюйте секрет підпису — він показується один раз.
  3. Натисніть Надіслати тест: прийде подія webhook.test, сервер має відповісти 2xx за 5 секунд.

Події

ПодіяКоли
product.createdТовар створено
product.updatedЗмінено назву, опис, ціни чи варіанти
product.deletedТовар видалено
inventory.updatedЗмінився залишок варіанта
order.createdНове замовлення
order.status_changedЗмінився статус замовлення
customer.createdНовий клієнт

Кілька змін одного товару чи залишку за 30 секунд приходять однією подією з останнім станом. Дані збираються в момент відправки — це завжди поточний стан.

Що приходить

JSON і заголовки X-Storeforma-Event (назва події), X-Storeforma-Delivery (унікальний номер — за ним відкидайте повтори) та X-Storeforma-Signature.

{
  "id": "4821",
  "event": "inventory.updated",
  "created_at": "2026-10-11T12:00:00+00:00",
  "data": {
    "variant_id": 77,
    "product_id": 12,
    "sku": "TSHIRT-M",
    "stock": 4,
    "backorder": 0,
    "purchasable": "in_stock"
  }
}

Перевірка підпису

Підпис — HMAC-SHA256 сирого тіла запиту вашим секретом, з префіксом sha256=. Перевіряйте до розбору JSON.

// Node.js
const expected = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-storeforma-signature'] || ''));

// PHP
$ok = hash_equals('sha256='.hash_hmac('sha256', file_get_contents('php://input'), $secret), $_SERVER['HTTP_X_STOREFORMA_SIGNATURE'] ?? '');

# Python
ok = hmac.compare_digest('sha256=' + hmac.new(SECRET.encode(), raw_body, hashlib.sha256).hexdigest(), request.headers.get('X-Storeforma-Signature', ''))

Повтори й вимкнення

  • Якщо сервер не відповів 2xx за 5 секунд, магазин повторює з паузою, що зростає, близько доби.
  • Після 30 невдач поспіль адреса вимикається; причина видна на сторінці «Вебхуки». «Увімкнути» запускає її знову.
  • Невдалу відправку можна повторити кнопкою в журналі «Останні відправки».