Definición
Un webhook es una notificación entre servidores: cuando ocurre un evento en un servicio (pasarela de pago, API de terceros), ese servicio envía una solicitud HTTP POST a una URL que tú especificas, conteniendo los detalles del evento. Los webhooks habilitan una integración asíncrona en tiempo real entre sistemas sin necesidad de consultas constantes.
Para la facturación por suscripción, los webhooks son esenciales: las pasarelas notifican a tu tienda cuando los cobros tienen éxito, fallan o se reembolsan — y muchos de estos eventos ocurren fuera de cualquier acción del usuario (renovaciones, intentos de reintento, decisiones bancarias asíncronas).
Por qué importa para tiendas WooCommerce
Sin webhooks, el estado de tu suscripción se desincroniza del estado de la pasarela de pago. Un cobro de renovación tiene éxito a las 2:00 a. m., pero tu tienda no lo sabe hasta el día siguiente cuando revisas manualmente el panel de la pasarela.
La tarjeta de un cliente se actualiza mediante el portal autoservicio de la pasarela, pero tu tienda sigue mostrando la tarjeta anterior. Los webhooks hacen que todo esto sea automático y en tiempo real.
Para las tiendas de suscripción en WooCommerce, los webhooks bien configurados son la diferencia entre operaciones de facturación automatizadas y pesadillas de reconciliación manual. Los webhooks mal configurados causan los errores de suscripción más comunes — fallos silenciosos donde la pasarela cobró pero tu tienda no lo refleja.
Cómo funciona
Registras una URL de webhook en el panel de tu pasarela (por ejemplo, tusitio.com/wc-api/wc_stripe). Cuando ocurre un evento en la pasarela (payment_intent.succeeded, customer.subscription.updated), la pasarela envía un HTTP POST a tu URL con un payload JSON que describe el evento.
Tu tienda valida la firma de la solicitud (comprobando que vino de la pasarela y no de un actor malicioso), procesa el evento (extiende la suscripción, envía un correo, actualiza la base de datos) y devuelve 200 OK. Si la pasarela recibe un error o ninguna respuesta, reintenta con un retroceso exponencial durante horas o días.
Ejemplo real
Una renovación de suscripción de Stripe se dispara a las 2:00 a. m. de un viernes. Stripe procesa el cobro de $39 — con éxito.
Stripe envía un webhook `invoice.payment_succeeded` a `https://tienda.com/wc-api/wc_stripe` con un payload que incluye el ID de la suscripción, el monto y la marca de tiempo. WPSubscription lo recibe, valida la firma contra el secreto de webhook de Stripe, extiende la suscripción 30 días, crea un pedido de renovación en WooCommerce, y pone en cola un correo de recibo.
El cliente se despierta el viernes por la mañana y encuentra un recibo — todo gracias al webhook que se disparó mientras dormía.
Buenas prácticas
- Verifica siempre las firmas de los webhooks — manejar webhooks sin firmar es una vulnerabilidad de seguridad
- Haz que los manejadores de webhook sean idempotentes — recibir el mismo evento dos veces debe ser seguro
- Responde en menos de 5 segundos — los manejadores de larga duración causan tiempos de espera y reintentos
- Registra cada webhook para depuración — los reintentos de la pasarela pueden enmascarar problemas
- Usa los eventos de prueba de webhook de los paneles de la pasarela para verificar la integración
Errores comunes
- No verificar las firmas de los webhooks — riesgo de seguridad y fuente de errores de integración
- Manejadores de webhook de larga duración que agotan el tiempo — las pasarelas reintentan, causando procesamiento duplicado
- No manejar los eventos de reintento — el webhook puede dispararse varias veces para el mismo evento
- Codificar URLs de webhook de producción en modo de prueba — los eventos van al entorno equivocado
- Ignorar los fallos de entrega de webhook en los paneles de la pasarela — los fallos silenciosos destruyen la integridad de los datos
En WooCommerce con WPSubscription
WPSubscription recibe los webhooks de la pasarela en los endpoints estandarizados de WooCommerce (/wc-api/wc_stripe, /wc-api/wc_paypal, etc.). El plugin maneja la verificación de firma, el procesamiento de eventos y la lógica de reintento para cada pasarela compatible automáticamente.
Los webhooks mal configurados son la fuente número uno de errores de suscripción — verifica siempre la configuración del webhook durante la integración inicial de la pasarela.
Guías relacionadas
Cómo integrar Stripe con suscripciones de WooCommerce
Conecta Stripe a WPSubscription para una facturación recurrente confiable, webhooks y recuperación de pagos.
Cómo configurar suscripciones de PayPal en WooCommerce
Activa la facturación recurrente de PayPal para suscripciones de WooCommerce usando WPSubscription.