Volver al diccionario
Desarrollo Web
Webhooks
Los webhooks notifican eventos entre aplicaciones en tiempo real. Aprende qué son, cómo funcionan, sus casos de uso más comunes y cómo implementarlos con código.
Qué son los Webhooks
Los webhooks son "callbacks HTTP": una forma de que una aplicación notifique a otra sobre eventos en tiempo real. En lugar de polling (preguntar repetidamente si hay novedades), la aplicación origen envía automáticamente datos cuando algo sucede.
Cómo funciona
1. Registras una URL en la aplicación origen
2. Ocurre un evento en esa aplicación
3. La aplicación hace un POST a tu URL con los datos del evento
4. Tu servidor procesa la información
Ejemplo: Pago completado
Una pasarela de pago notifica a tu tienda:
\\\`
POST https://mitienda.com/webhooks/payment
Content-Type: application/json
{
"event": "payment.completed",
"data": {
"order_id": "12345",
"amount": 99.99,
"currency": "EUR",
"customer_email": "[email protected]"
}
}
\\\`
Casos de uso comunes
- Pagos (Stripe, PayPal)
- Notificaciones de pedidos (Shopify, WooCommerce)
- CI/CD (GitHub, GitLab)
- Comunicación (Slack, Discord)
- CRMs (HubSpot, Salesforce)
Mejores prácticas
Verificar autenticidad
Validar firmas para asegurar que el webhook viene de la fuente legítima.
Idempotencia
Procesar el mismo webhook múltiples veces debe dar el mismo resultado.
Respuesta rápida
Devolver 200 OK rápidamente y procesar en background.
Reintentos
Esperar reintentos si tu servidor no responde.
\\\`javascript
// Ejemplo Next.js API Route
export async function POST(request) {
const payload = await request.json()
// Verificar firma
if (!verifySignature(payload)) {
return new Response("Invalid", { status: 401 })
}
// Procesar en background
await processWebhook(payload)
return new Response("OK", { status: 200 })
}
\\\`
Webhooks vs Polling
Polling
Tu servidor pregunta repetidamente a la API: "¿Hay novedades? ¿Hay novedades? ¿Hay novedades?" Ineficiente: la mayoría de respuestas serán "no".
Webhooks
La API te avisa cuando hay novedades. Más eficiente, más en tiempo real, menos carga en ambos lados.
Eventos de webhook más comunes en ecommerce
- \
payment.succeeded\/ \payment.failed\— Stripe o pasarela de pago - \
order.created\/ \order.updated\/ \order.fulfilled\— Shopify, WooCommerce - \
inventory.low\— Alerta de stock bajo - \
customer.created\/ \customer.updated\— CRM - \
shipment.tracking_updated\— Transportista - \
review.created\— Nueva reseña de producto - \
push\/ \pull_request.opened\— GitHub para CI/CD
Preguntas frecuentes
¿Cómo sé que el webhook viene de quien dice venir?
Mediante verificación de firma (signature verification). El emisor genera una firma HMAC del payload usando un secreto compartido y la incluye en la cabecera del request. Tu servidor verifica la firma calculándola por su parte. Si coinciden, el webhook es auténtico. Stripe, GitHub y la mayoría de servicios implementan este patrón.
¿Qué pasa si mi servidor está caído cuando llega un webhook?
Los servicios bien diseñados (Stripe, Shopify, GitHub) implementan reintentos automáticos: si tu servidor devuelve un error (500) o no responde en tiempo, reintentarán el webhook varias veces con backoff exponencial (1 min, 5 min, 30 min, etc.). Por eso la idempotencia es crítica: procesar el mismo webhook dos veces no debe crear duplicados.
¿Puedo probar webhooks en local sin desplegar?
Sí. Herramientas como ngrok, Cloudflare Tunnel o localtunnel crean un túnel temporal que expone tu servidor local con una URL pública. Así puedes recibir webhooks reales de Stripe o Shopify en tu máquina local durante el desarrollo.
Términos relacionados
Necesitas ayuda con tu ecommerce?
Somos expertos en desarrollo de tiendas online. Cuéntanos tu proyecto y te asesoramos sin compromiso.
Contactar con Ganton