Saltar al contenido principal
Todos los webhooks que entrega Social media studio siguen el mismo envoltorio y esquema de firma. Esta página muestra la forma exacta de la solicitud, cómo verificar la firma y qué aspecto tiene el bloque data en los eventos más comunes.

Formato de la solicitud

Cabeceras

Cada entrega incluye estas cabeceras:

Envoltorio

A menos que configures un payloadTemplate personalizado, el cuerpo es un objeto JSON con cuatro campos:
  • event — El nombre exacto del evento (coincide con X-Webhook-Event)
  • category — La categoría a la que pertenece el evento (p. ej. post, inbox, subscription)
  • timestamp — Marca de tiempo ISO-8601 del momento en que se envió el evento
  • data — La carga específica del evento (consulta los ejemplos más abajo)
Los reintentos reutilizan el mismo X-Webhook-Delivery-Id. Úsalo como clave de idempotencia para que una entrega reintentada no vuelva a procesar un evento ya gestionado.

Verificación de la firma

El cuerpo de cada solicitud se firma con el secreto de tu endpoint mediante HMAC-SHA256. Verifícalo en cada solicitud para confirmar que la entrega procede realmente de Social media studio.
Verifica siempre con el cuerpo sin procesar de la solicitud antes de analizarlo como JSON: volver a serializar el objeto analizado cambiará los espacios en blanco e invalidará la firma.

Cargas de ejemplo

La forma del bloque data depende del evento. Estos son ejemplos representativos de las categorías más usadas.

Publicación

Aprobación

Bandeja de entrada

WhatsApp

Cuenta social

Suscripción

El campo newPlanName contiene el identificador interno del plan, como scale para Advanced.

IA

Centro de conocimiento

Analíticas

Mejor momento

Referidos

Consulta el resumen de webhooks para ver la lista completa de 162 eventos en 26 categorías.

Plantillas de carga personalizadas

Si tu endpoint espera otra estructura (p. ej. Slack, Discord), define un payloadTemplate en tu suscripción de webhook. Las variables disponibles son:
  • {{event}}
  • {{category}}
  • {{timestamp}}
  • {{data}} — el objeto de datos completo como JSON
  • {{data.any_field}} — cualquier campo anidado de la carga específica del evento
Las variables sin resolver se dejan tal cual (p. ej. {{data.postId}} permanece literal si el evento no proporciona postId). Consulta la página de resumen para ver ejemplos de plantillas de Discord y Slack.

Probar en local

Durante el desarrollo:
  1. Usa una herramienta de túnel como ngrok o Cloudflare Tunnel para exponer tu servidor local.
  2. Crea una suscripción de webhook en Ajustes → Webhooks que apunte a la URL de tu túnel.
  3. Haz clic en el botón Probar de la suscripción para enviar un evento de muestra sin generar actividad real.
  4. Inspecciona la carga en Webhook.site si quieres ver la solicitud sin procesar antes de escribir un verificador.
Si tu endpoint falla 10 entregas consecutivas, la suscripción se deshabilita automáticamente. Vuelve a habilitarla desde el panel después de corregir el problema.