Webhooks
Clione recibe webhooks de Shopify, BigCommerce y WooCommerce para que los cambios de producto de tu tienda lleguen a Clione sin un sync completo. Clione los registra cada vez que se guardan las credenciales de una tienda. En una tienda instalada con la app de Shopify de Clione, los registra Shopify al instalarla. Una tienda Shopify conectada con un access token permanente no recibe webhooks; el sync la mantiene al día. Cada entrega se autentica contra el secreto que Clione guarda para esa tienda antes de fiarse de nada de su contenido; una entrega que no pasa la comprobación se rechaza con 401 y nunca se aplica.
Los webhooks mantienen sincronizados los productos. Las categorías, colecciones y páginas se actualizan con el sync.
Un webhook de producto solo actualiza datos de catálogo: nunca lanza un enrichment.
Shopify
Endpoint: POST /api/v1/webhooks/shopify (también se acepta en POST /api/v1/shopify/webhooks).
| Topic | Qué hace Clione |
|---|---|
products/create | Sincroniza el producto en Clione |
products/update | Sincroniza los cambios del producto |
products/delete | Elimina el producto |
app/uninstalled | Desactiva la tienda y deshace las señales que escribió Clione |
customers/data_request | Se acusa recibo y se registra: Clione no guarda datos personales de clientes |
customers/redact | Se acusa recibo y se registra: no hay nada que borrar |
shop/redact | Se acusa recibo y se registra contra la tienda |
Firma. La cabecera X-Shopify-Hmac-Sha256 lleva el HMAC-SHA256 en base64 del cuerpo en bruto de la petición. Clione lo calcula con el secreto con el que se firman los webhooks de la tienda (el client secret de la app de Shopify propia de la tienda, o el secreto de la app de Clione si la tienda se conectó a través de ella) y compara en tiempo constante. La tienda se resuelve a partir de X-Shopify-Shop-Domain (un dominio *.myshopify.com; cualquier otra cosa da 400), y el topic a partir de X-Shopify-Topic.
BigCommerce
Endpoint: POST /api/v1/bigcommerce/webhooks.
| Scope | Qué hace Clione |
|---|---|
store/product/created | Sincroniza el producto en Clione |
store/product/updated | Sincroniza los cambios del producto |
store/product/deleted | Elimina el producto |
Autenticación. BigCommerce no firma el cuerpo de los webhooks. Cuando Clione registra un hook, fija dos cabeceras que BigCommerce devuelve en cada entrega:
X-Clione-Store-Id: la tienda de Clione, contrastada con elproducerdel payload (stores/<hash>).X-Clione-Webhook-Secret: un secreto aleatorio generado para esa tienda, comparado en tiempo constante con el que guarda Clione.
Una tienda desconocida o un secreto incorrecto dan 401.
WooCommerce
Endpoint: POST /api/v1/woocommerce/webhooks?store=<store id>.
| Topic | Qué hace Clione |
|---|---|
product.created | Sincroniza el producto en Clione |
product.updated | Sincroniza los cambios del producto |
product.deleted | Elimina el producto |
Firma. La cabecera X-WC-Webhook-Signature lleva el HMAC-SHA256 en base64 del cuerpo en bruto, firmado con un secreto por tienda que Clione fija al registrar el hook. La tienda sale del parámetro de query store, contrastado con X-WC-Webhook-Source. El ping que envía WooCommerce al crear un hook se responde con 200, para que el hook quede activo.
Eventos de pedido
orders/create y orders/paid (Shopify) y store/order/created y store/order/statusUpdated (BigCommerce) se verifican igual y, si llegan, se registran como señales de pedido. Clione no los registra.
Respuestas
| Estado | Significado |
|---|---|
200 | Aceptado. Incluye los topics que Clione no gestiona y las tiendas inactivas: se acusa recibo para que la plataforma deje de reintentar, y se ignoran. |
400 | Entrega mal formada: falta el topic o el scope, no hay id de producto o el dominio de la tienda no es válido. |
401 | La firma o el secreto no se verificaron para ninguna tienda que tenga Clione. |
500 | Solo topics de la app de Shopify: el secreto de la app no está configurado. Nunca se acepta un webhook sin firmar. |