Webhooks Entrantes, Salientes y Firmas
Los webhooks conectan en tiempo real a Matias Impulso con plataformas de mensajería, pasarelas de pago y tus sistemas empresariales externos (ERP, CRM corporativo, n8n, Make o Zapier).
1. Endpoints Oficiales de Webhooks Entrantes
Sección titulada «1. Endpoints Oficiales de Webhooks Entrantes»Registra estas URLs exactas en las consolas de cada proveedor externo:
| Proveedor | URL Oficial de Recepción | Mecanismo de Autenticidad |
|---|---|---|
| WhatsApp Cloud API (WABA) | https://api.matiasimpulso.com/whatsapp-business/webhook |
Reto GET hub.challenge + firma X-Hub-Signature-256 (HMAC-SHA256 sobre rawBody). |
| Facebook Messenger / Instagram | https://api.matiasimpulso.com/facebook/webhook |
Reto GET hub.challenge + firma X-Hub-Signature-256 (HMAC-SHA256 sobre rawBody). |
| TikTok Business Messaging | https://api.matiasimpulso.com/tiktok/webhook |
Reto GET de verificación + firma de evento de TikTok Business. |
| Wompi Bancolombia | https://api.matiasimpulso.com/webhooks/wompi |
Checksum SHA-256 de propiedades de evento + timestamp + secreto de eventos. |
2. Webhooks Salientes e Integración con Sistemas Externos
Sección titulada «2. Webhooks Salientes e Integración con Sistemas Externos»Cuando tus Flujos Visuales (Canvas PRO), Agentes de IA (mediante HTTP Actions) o eventos del sistema notifican a un servidor propio, aplica siempre estas prácticas en tu receptor:
import crypto from 'node:crypto';import express from 'express';
const app = express();
app.post( '/webhooks/matias-impulso', express.raw({ type: 'application/json' }), (req, res) => { const signatureHeader = req.header('X-Impulso-Signature') ?? ''; const secret = process.env.IMPULSO_WEBHOOK_SECRET ?? '<YOUR_WEBHOOK_SECRET>';
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(req.body).digest('hex');
const isValid = signatureHeader.length === expected.length && crypto.timingSafeEqual( Buffer.from(signatureHeader), Buffer.from(expected), );
if (!isValid) { return res.status(401).json({ error: 'Invalid webhook signature' }); }
// Responde rápido (< 3 s) y procesa de forma asíncrona e idempotente res.status(200).json({ received: true }); },);- Responde
2xxen menos de 5 segundos: encola el trabajo pesado en segundo plano para evitar timeouts y reintentos innecesarios. - Deduplica por identificador de evento: almacena el
eventIdomessageIdprocesado para ignorar reentregas ante fallos transitorios de red. - Usa siempre HTTPS con certificado público válido: las llamadas salientes bloquean direcciones privadas o loopback por protección contra SSRF.