Constructor de webhooks y {{placeholders}}: plantilla cualquier JSON

Constructor de webhooks y {{placeholders}}: plantilla cualquier JSON

Los vendors que «solo hacen POST JSON» casi nunca dejan reescribir el mensaje. AlertHub sí: campos reservados ah_* más Mustache {{path.to.field}} sobre el resto del payload (objetos anidados, hasta 10 niveles). Puedes poner plantillas en la query string para que Stripe y Shopify no necesiten un servidor en medio.

El constructor de webhooks genera o parsea esas URLs. El contrato es la API de ingestión.

Reservados vs personalizados

CampoRol
ah_keySecreto del proyecto (obligatorio)
ah_titlePlantilla del título (obligatorio)
ah_descriptionPlantilla del cuerpo
ah_levelinfo | warning | critical (default info)
ah_sourceEtiqueta en el feed
Cualquier otroVariable para {{name}}

Si la misma clave aparece en la URL y en el JSON, gana el body. Mézclalos: deja ah_key en la query (fácil de rotar en el Admin de Shopify) y envía el evento gordo de Stripe como POST JSON.

Configuración (una sola vez)

  1. Copia el secreto de app.thealerthub.com.
  2. Abre el constructor, pega la clave, pon título/origen/nivel/descripción.
  3. Copia la URL al vendor, o importa una URL existente para ver qué codifica.

Ejemplo 1: Pedido Shopify (plantillas en query)

Shopify hace POST del JSON del pedido a tu URL. Título y descripción en la query apuntan a campos planos:

ah_title=Nueva venta {{name}}
ah_description={{email}} gastó {{total_price}} {{currency}}

Guía: alertas de pedidos Shopify.

Ejemplo 2: Objetos anidados de Stripe

Los eventos Stripe anidan bajo data.object. Usa rutas con puntos:

ah_title=Stripe {{type}}
ah_description=Importe {{data.object.amount}} {{data.object.currency}}

Los widgets de pago fallido están en esa guía. La misma idea en GitHub: {{repository.name}}, {{sender.login}} — webhooks de repo.

Ejemplo 3: JSON completo desde tu app

Cuando controlas el cliente, olvida las plantillas en query y envía:

{
  "ah_key": "YOUR_KEY",
  "ah_title": "Deploy {{commit.id}}",
  "ah_description": "Author {{commit.author}}",
  "ah_level": "warning",
  "ah_source": "API",
  "commit": { "id": "abc1234", "author": "Ada" }
}

Título resultante: Deploy abc1234. Arrays: {{line_items.0.title}}.

Ideas para sacarle más partido

  • Nunca pongas la clave en un repo público. Prefiere secrets de GitHub Actions o la config de webhooks del vendor.
  • Importar URL en el constructor cuando un compañero envía un enlace misterioso.
  • El nivel en la query (ah_level=critical) es cómo UptimeRobot y Vercel paginan sin cambiar código. Niveles.

Preguntas frecuentes

¿Los placeholders corren en n8n antes del POST?
El {{ $json }} de n8n corre primero. El {{data.object.id}} de AlertHub corre en el servidor tras la ingesta. Guía n8n.

¿Y si la ruta no existe?
El placeholder suele quedar vacío. Inspecciona un payload real una vez.

¿GET o POST?
POST JSON es lo preferido. Solo query vale para vendors que no pueden poner body.

Siguientes pasos

Construye una URL en el constructor, pégala en Shopify o Stripe y confirma la interpolación en el panel.

Relacionado: API de ingestión · enviar desde Node, Python y PHP