¿Qué es un webhook?
Un webhook es una notificación HTTP que una plataforma envía automáticamente a la dirección de otra aplicación cuando ocurre un evento concreto, como la creación de un pedido o el cambio de un producto. A diferencia de consultar una API cada cierto tiempo, el webhook avisa en cuanto pasa algo, aunque la plataforma no asegura que cada aviso llegue, ni que llegue una sola vez o en orden.
Lo esencial
- Un webhook es un aviso: la plataforma llama a tu aplicación cuando ocurre un evento, en vez de esperar a que pregunte.
- Shopify avisa casi en tiempo real, pero no garantiza la entrega ni el orden, y recomienda tareas periódicas de conciliación.
- BigCommerce envía avisos ligeros, con el identificador y poco más: el dato completo se pide a la API.
- Si tu servidor no responde, la plataforma reintenta; si los fallos siguen, la suscripción se elimina o se desactiva.
- Para mantener al día una copia del catálogo hacen falta las dos cosas: el aviso para reaccionar rápido y la sincronización periódica para no perder nada.
Cuando una app te promete que «se entera al momento» de lo que cambias en tu tienda, casi siempre habla de webhooks. Un webhook no es una API a la que preguntas, ni un trozo de código que se instala en el tema: es un aviso que la plataforma envía a otra aplicación cuando pasa algo, sea un pedido nuevo o un precio cambiado. Te importa porque de esos avisos depende que tu feed, tu PIM o tu herramienta de marketing tengan el mismo precio que tu ficha, y porque los avisos, a veces, no llegan.
Cómo funciona
La aplicación que quiere enterarse se suscribe a un tipo de evento y da una dirección. Cuando el evento ocurre, la plataforma le envía los datos. Shopify lo explica con los pedidos: en lugar de consultar la API una y otra vez para ver si hay pedidos nuevos, la app se suscribe al tema orders/create y Shopify le envía cada pedido cuando se crea. Sus webhooks entregan datos casi en tiempo real, sirven para mantenerse sincronizado con la tienda o para lanzar otra acción, y pueden ir a una URL, a Google Pub/Sub o a Amazon EventBridge.[1]Shopify Dev Docs. About webhooks
En BigCommerce, una suscripción se crea con una petición POST a /v3/hooks.[2]BigCommerce Docs. Webhooks Para el catálogo hay eventos de producto creado, actualizado y borrado, de cambios de inventario y de metafields del producto o de sus variantes. El evento store/product/updated salta cuando cambian, entre otros, el precio, las dimensiones, la disponibilidad, la descripción, el nombre, el SKU, la visibilidad o los datos de envío.[3]BigCommerce Docs. Webhook events
Lo que llega en el aviso cambia mucho de una plataforma a otra. BigCommerce manda avisos ligeros a propósito: el de un cambio de estado de un pedido trae solo su identificador, y para ver el pedido hay que pedírselo a la API.[2]BigCommerce Docs. Webhooks El de un producto actualizado trae su identificador y la lista de propiedades que cambiaron.[3]BigCommerce Docs. Webhook events
Tres detalles operativos deciden si un webhook funciona en la práctica:
- La firma. Cada entrega de Shopify lleva la cabecera
X-Shopify-Hmac-Sha256, que sirve para comprobar que el aviso viene de Shopify, yX-Shopify-Webhook-Id, para reconocer las entregas repetidas.[1]Shopify Dev Docs. About webhooks - La respuesta. Tu servidor tiene que contestar en menos de cinco segundos con un código de la serie 200 para que Shopify dé la entrega por buena. Si no, reintenta hasta ocho veces en cuatro horas, y si los fallos siguen, elimina la suscripción.[4]Shopify Dev Docs. Troubleshooting webhooks BigCommerce también espera un 200; reintenta con intervalos cada vez más largos y, tras el último fallo, desactiva el webhook y avisa por correo a la app suscrita.[2]BigCommerce Docs. Webhooks
- El orden. Shopify no garantiza el orden de los avisos, ni dentro de un mismo tema ni entre temas distintos.[1]Shopify Dev Docs. About webhooks
Evento frente a sincronización periódica
La frase que más importa de la documentación de Shopify es una advertencia: un webhook no siempre llega, y una app no debería depender solo de recibirlos. Su recomendación es añadir tareas de conciliación que consulten la tienda cada cierto tiempo, filtrando por la fecha de actualización para pedir solo lo que cambió.[1]Shopify Dev Docs. About webhooks Así que la pregunta no es webhook o sincronización periódica, sino cómo se reparten el trabajo:
| Webhook | Sincronización periódica | |
|---|---|---|
| Cuándo te enteras | Poco después del cambio | En la siguiente pasada |
| Qué recibes | Un aviso, a veces solo el identificador | El estado del dato en ese momento |
| Qué se puede perder | Avisos no entregados, repetidos o desordenados | Lo que cambió y volvió a cambiar entre dos pasadas |
| Qué cuesta | Un servidor que responda siempre a tiempo | Consultas a la API, aunque no haya cambios |
Con los dos, el aviso da la velocidad y la pasada periódica corrige lo que el aviso perdió. Sin la pasada, cada aviso perdido es una diferencia que nadie ve, y esas diferencias se acumulan hasta convertirse en deriva de datos.
En una tienda
Este es el aviso de ejemplo que publica BigCommerce para un producto actualizado:[3]BigCommerce Docs. Webhook events
{
"scope": "store/product/updated",
"store_id": "1025646",
"data": {
"type": "product",
"id": 205,
"properties": ["warranty", "is_featured", "custom_fields"],
"context": { "channel_id": 2, "locale": "fr" }
},
"hash": "a833a57fadd56a32dc752fb6ca0841dc9602a495",
"created_at": 1561479233,
"producer": "stores/{store_hash}"
}
No trae la garantía nueva, ni los campos personalizados nuevos: trae el producto 205 y los nombres de lo que cambió. La app que lo recibe tiene que pedir el producto a la API de catálogo para saber los valores.[2]BigCommerce Docs. Webhooks
Ahora un ejemplo ficticio de lo que pasa cuando falla. Una tienda de trípodes cambia el precio de un modelo en su PIM, que lo escribe en BigCommerce. La app que genera el feed para un comparador está suscrita a store/product/updated, pero su servidor está caído esa tarde. BigCommerce reintenta durante horas y, tras el último fallo, desactiva la suscripción y manda un correo a la dirección de la app.[2]BigCommerce Docs. Webhooks Si nadie lee ese correo y la app no tiene una pasada periódica, el feed sigue con el precio viejo, y también todos los cambios que vengan después, porque ya no llega ningún aviso.
Lo que se suele confundir
Tener webhooks no significa tener una copia del catálogo siempre al día. Shopify dice que la entrega de un webhook no siempre se produce y que una app no debería depender solo de los webhooks, y recomienda una conciliación periódica.[1]Shopify Dev Docs. About webhooks La otra confusión es pensar que el aviso trae el dato: en BigCommerce trae el identificador y, como mucho, qué propiedades cambiaron.[2]BigCommerce Docs. Webhooks[3]BigCommerce Docs. Webhook events Una app que guarda el aviso como si fuera el producto guarda poco más que un número.
Cómo comprobarlo
- Pide a cada app conectada a tu tienda la lista de eventos a los que está suscrita y qué hace con cada uno. Si no usa webhooks, pregunta cada cuánto consulta la tienda.
- Pregunta si la app tiene una pasada periódica de conciliación, y cada cuánto corre. Es lo que Shopify recomienda para no depender solo de los avisos.[1]Shopify Dev Docs. About webhooks
- Si la app es tuya, comprueba que verifica la firma de cada aviso con la cabecera
X-Shopify-Hmac-Sha256y que descarta los repetidos porX-Shopify-Webhook-Id.[1]Shopify Dev Docs. About webhooks - Mide cuánto tarda tu servidor en contestar: por encima de cinco segundos, Shopify da la entrega por fallida.[4]Shopify Dev Docs. Troubleshooting webhooks
- En BigCommerce, vigila el buzón de la app: el correo de desactivación es el único aviso de que los avisos dejaron de llegar.[2]BigCommerce Docs. Webhooks
Concepto cercano: API de catálogo
La API de catálogo y el webhook son las dos direcciones de la misma conversación. Con la API, tu aplicación pregunta y la plataforma contesta; con el webhook, la plataforma avisa sin que nadie pregunte. Shopify presenta el webhook justo como la alternativa a consultar la API una y otra vez.[1]Shopify Dev Docs. About webhooks En BigCommerce trabajan juntos por diseño: el aviso dice qué producto cambió y la API dice cómo quedó.[2]BigCommerce Docs. Webhooks Si lo que te preocupa es quién escribió último un campo, eso es sobrescritura de campos, y si quieres poder volver atrás, versionado de contenido.
Para seguir, la ruta de lectura de publicación por plataforma ordena el resto de términos.
Sinónimos
- English
- webhook, HTTP callback
- Español
- webhook
Fuentes
Historial de cambios
- Primera versión.
Esta definición se publica bajo licencia CC BY 4.0. Puedes reutilizar esta definición citando a Clione con un enlace a esta página.
Términos relacionados
API de catálogo
Qué es la API de catálogo de una tienda online, cómo separa leer de escribir en Shopify y BigCommerce, y qué permisos mínimos dar a cada app.
Versionado de contenido
Qué es el versionado de contenido, en qué se distinguen historial, borrador y versión publicada, y cómo comprobar que puedes volver atrás en tu tienda.
Metafields
Qué son los metafields de Shopify, de qué partes constan, cómo llegan del panel al HTML de la ficha y cómo comprobar que tu tema los publica.
Sobrescritura de campos
Qué es la sobrescritura de campos: cuando una app, un PIM o una sincronización pisa un dato de producto que escribió otro sistema, y cómo detectarla.
Deriva de datos
Qué es la deriva de datos en una tienda online: un dato bien publicado que cambia después en la página, sus causas habituales y cómo detectarla a tiempo.
PIM
Qué es un PIM (Product Information Management), cómo organiza familias, canales y completitud, y cómo decidir qué sistema manda sobre cada campo.
Haz que los bots entiendan tu catálogo
Clione completa cada ficha de producto con lo que los bots leen mejor: el grafo JSON-LD con sus datos estructurados, la meta description y las preguntas frecuentes. Tú revisas y pulsas Push; después comprobamos tu tienda en vivo para que todo siga publicado.