Inicio Precios Funcionalidades Reseñas NEW Developers

Webhooks y Acciones

Recibe eventos en tiempo real y automatiza acciones cuando se envian o reciben mensajes.

Que son los Webhooks

Los webhooks son notificaciones HTTP que WhatsBoost envia automaticamente a una URL de tu servidor cada vez que ocurre un evento relevante: un SMS recibido, un mensaje de WhatsApp enviado, una respuesta USSD, etc.

En lugar de hacer polling constante a la API para comprobar si hay nuevos eventos, configuras una URL y WhatsBoost te notifica en tiempo real mediante una peticion HTTP POST.

Propiedades de un webhook
PropiedadTipoDescripcion
namestringNombre descriptivo del webhook (ej: "Notificacion CRM")
urlstringURL de destino donde se envia la notificacion. Se recomienda HTTPS.
eventsarrayLista de eventos que disparan el webhook (ej: sms, whatsapp, ussd)
secretstringToken SHA1 generado automaticamente al crear el webhook. Sirve para verificar que la peticion proviene de WhatsBoost.

Eventos disponibles

Puedes suscribir cada webhook a uno o varios eventos. Puedes seleccionar uno o varios eventos al crear el webhook (por ejemplo "sms,whatsapp").

EventoValorCuando se disparaDatos incluidos
SMS sms Cuando se envia o recibe un mensaje SMS a traves de un dispositivo vinculado. ID del mensaje, ID del receptor, SIM, UUID del dispositivo, telefono, contenido, timestamp
WhatsApp whatsapp Cuando se envia o recibe un mensaje de WhatsApp. ID del mensaje, WID de la cuenta, telefono, contenido, URL del adjunto (si existe), timestamp
USSD ussd Cuando se recibe una respuesta a un codigo USSD enviado. ID de la peticion, SIM, UUID del dispositivo, codigo USSD, respuesta, timestamp

Payload del webhook

Cada notificacion contiene un JSON con la estructura secret + type + data. El campo secret coincide con el token SHA1 que se genero al crear el webhook, permitiendote verificar la autenticidad.

Payload SMS recibido
{
  "secret": "webhook_sha1_secret",
  "type": "sms",
  "data": {
    "id": 1234,
    "rid": 5678,
    "sim": 1,
    "device": "device-uuid",
    "phone": "+34612345678",
    "message": "Contenido del mensaje",
    "timestamp": 1711108200
  }
}
CampoTipoDescripcion
idintegerID unico del mensaje en WhatsBoost
ridintegerID del registro de recepcion
simintegerRanura SIM utilizada (1 o 2)
devicestringUUID del dispositivo Android
phonestringNumero de telefono del remitente en formato internacional
messagestringContenido del mensaje recibido
timestampintegerMarca de tiempo Unix del evento
Payload WhatsApp recibido
{
  "secret": "webhook_sha1_secret",
  "type": "whatsapp",
  "data": {
    "id": 1234,
    "wid": "+34612345678",
    "phone": "+34612345678",
    "message": "Contenido del mensaje",
    "attachment": "https://site/uploads/whatsapp/received/imagen.jpg",
    "timestamp": 1711108200
  }
}
CampoTipoDescripcion
idintegerID unico del mensaje en WhatsBoost
widstringWhatsApp ID de la cuenta receptora
phonestringNumero de telefono del remitente
messagestringContenido del mensaje recibido
attachmentstring|nullURL del archivo adjunto (imagen, video, audio, documento) o null si no hay adjunto
timestampintegerMarca de tiempo Unix del evento
Payload USSD respuesta
{
  "secret": "webhook_sha1_secret",
  "type": "ussd",
  "data": {
    "id": 1234,
    "sim": 1,
    "device": "device-uuid",
    "code": "*123#",
    "response": "Your balance is...",
    "timestamp": 1711108200
  }
}
CampoTipoDescripcion
idintegerID de la peticion USSD en WhatsBoost
simintegerRanura SIM utilizada
devicestringUUID del dispositivo Android
codestringCodigo USSD ejecutado
responsestringRespuesta recibida del operador
timestampintegerMarca de tiempo Unix del evento

Configuracion tecnica del envio

Cuando ocurre un evento, WhatsBoost envia la notificacion al webhook con la siguiente configuracion HTTP:

PropiedadValorDetalle
Metodo HTTPPOSTSe envian los datos como form_params (application/x-www-form-urlencoded)
Timeout5 segundosTimeout total de conexion + lectura. Si tu servidor no responde en 5 segundos, la peticion se abandona.
Verificacion SSLDeshabilitadaSe aceptan certificados auto-firmados. Esto permite usar webhooks en entornos de desarrollo.
RedireccionesHabilitadasWhatsBoost sigue automaticamente las redirecciones HTTP 301/302.
Errores HTTPNo lanzadosWhatsBoost no lanza excepciones por codigos 4xx/5xx, sino que comprueba el codigo de estado de la respuesta.

Verificar autenticidad

Cada payload contiene un campo secret que coincide con el token SHA1 generado automaticamente al crear el webhook en el Dashboard. Siempre debes verificar este campo antes de procesar los datos para asegurarte de que la peticion proviene de WhatsBoost y no de un tercero.

Flujo de verificacion
  1. Recibe la peticion POST en tu endpoint.
  2. Lee el campo secret del payload recibido.
  3. Compara con el secret que guardaste al crear el webhook en el Dashboard.
  4. Si coinciden, procesa los datos. Si no coinciden, rechaza la peticion con un codigo 403.

Implementar receptor

A continuacion se muestran ejemplos completos de como implementar un receptor de webhooks en PHP y Node.js.

<?php
// webhook-receiver.php
// Tu secret del webhook (copiado del Dashboard)
$miSecret = "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2";

// 1. Leer el body de la peticion POST
$payload = $_POST;

// 2. Verificar autenticidad
if (empty($payload["secret"]) || $payload["secret"] !== $miSecret) {
    http_response_code(403);
    echo json_encode(["error" => "Secret invalido"]);
    exit;
}

// 3. Decodificar datos
$type = $payload["type"] ?? "";
$data = json_decode($payload["data"] ?? "{}", true);

// 4. Procesar segun el tipo de evento
switch ($type) {
    case "sms":
        // SMS recibido o enviado
        $phone   = $data["phone"] ?? "";
        $message = $data["message"] ?? "";
        $device  = $data["device"] ?? "";
        // Tu logica: guardar en DB, notificar CRM, etc.
        error_log("SMS de $phone: $message");
        break;

    case "whatsapp":
        // WhatsApp recibido o enviado
        $phone      = $data["phone"] ?? "";
        $message    = $data["message"] ?? "";
        $attachment = $data["attachment"] ?? null;
        // Tu logica: responder automaticamente, actualizar ticket, etc.
        error_log("WhatsApp de $phone: $message");
        break;

    case "ussd":
        // Respuesta USSD
        $code     = $data["code"] ?? "";
        $response = $data["response"] ?? "";
        // Tu logica: parsear saldo, actualizar registro, etc.
        error_log("USSD $code: $response");
        break;

    default:
        error_log("Tipo de webhook desconocido: $type");
        break;
}

// 5. Responder 200 rapidamente
http_response_code(200);
echo json_encode(["ok" => true]);
// webhook-receiver.js (Express)
const express = require("express");
const app = express();

app.use(express.urlencoded({ extended: true }));

const MI_SECRET = "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2";

app.post("/webhook", (req, res) => {
  // 1. Verificar autenticidad
  if (!req.body.secret || req.body.secret !== MI_SECRET) {
    return res.status(403).json({ error: "Secret invalido" });
  }

  // 2. Responder 200 inmediatamente
  res.status(200).json({ ok: true });

  // 3. Procesar de forma asincrona
  const type = req.body.type || "";
  let data;
  try {
    data = JSON.parse(req.body.data || "{}");
  } catch (e) {
    data = {};
  }

  switch (type) {
    case "sms":
      console.log(`SMS de $${data.phone}: $${data.message}`);
      // Tu logica aqui
      break;

    case "whatsapp":
      console.log(`WhatsApp de $${data.phone}: $${data.message}`);
      // Tu logica aqui
      break;

    case "ussd":
      console.log(`USSD $${data.code}: $${data.response}`);
      // Tu logica aqui
      break;

    default:
      console.warn(`Tipo desconocido: $${type}`);
  }
});

app.listen(3000, () => console.log("Receptor webhook en puerto 3000"));

Probar webhooks

WhatsBoost proporciona un endpoint de prueba que envia datos de ejemplo a tu URL receptor para verificar que todo funciona correctamente antes de pasar a produccion.

Endpoint de prueba

POST //whatsboost.netrequests

ParametroTipoRequeridoDescripcion
typestringSiValor fijo: trigger
secretstringSiEl secret SHA1 del webhook que quieres probar
typestringSiTipo de evento a simular: sms, whatsapp o ussd
urlstringSiURL del receptor donde enviar los datos de prueba
Ejemplo con cURL
curl -X POST //whatsboost.netrequests \
  -d "type=trigger" \
  -d "secret=TU_WEBHOOK_SECRET" \
  -d "type=sms" \
  -d "url=https://tu-servidor.com/webhook"

WhatsBoost enviara un payload de ejemplo a la URL indicada con datos ficticios. Comprueba los logs de tu servidor para verificar que la peticion llego correctamente y que la verificacion del secret funciona.


Acciones (Action Hooks)

Las Acciones son un mecanismo diferente a los webhooks. Mientras que los webhooks envian un POST con el payload completo, las acciones realizan una peticion HTTP GET a una URL que tu defines con variables dinamicas que se sustituyen automaticamente.

Propiedades de una accion
PropiedadValorDescripcion
Fuente (source)1 = SMS, 2 = WhatsAppCanal de mensajeria que dispara la accion
Evento (event)1 = Recibido, 2 = EnviadoMomento en que se ejecuta la accion
URL plantilla (link)stringURL con variables que se sustituyen al dispararse
Variables disponibles en la URL
VariableDescripcionEjemplo de salida
{{phone}}Numero de telefono (URL-encoded)%2B34612345678
{{message}}Contenido del mensaje (URL-encoded)Hola%20mundo
{{date.now}}Fecha actual en formato legibleMarch 22, 2026
{{date.time}}Hora actual en formato legible02:30 PM
Ejemplo de URL plantilla
https://api.example.com/hook?phone={{phone}}&msg={{message}}&date={{date.now}}

Cuando se reciba un SMS del numero +34612345678 con el texto "Hola mundo", WhatsBoost realizara un GET a:

https://api.example.com/hook?phone=%2B34612345678&msg=Hola%20mundo&date=March%2022%2C%202026
Diferencias clave: Webhooks vs Acciones
CaracteristicaWebhooksAcciones
Metodo HTTPPOSTGET
Formato de datosJSON completo con payload estructuradoVariables en parametros de URL
VerificacionCampo secret SHA1Sin verificacion integrada
EventosSMS, WhatsApp, USSD (enviado y recibido)SMS o WhatsApp (recibido o enviado, no USSD)
Caso de usoIntegraciones complejas, CRM, bases de datosDisparadores simples, notificaciones, APIs de terceros

Prompt IA: Integracion de webhooks

Copia este prompt en ChatGPT, Claude, Gemini o cualquier asistente de IA para que te ayude a implementar un receptor de webhooks de WhatsBoost.

Eres un desarrollador backend experto. Necesito implementar un receptor de webhooks para WhatsBoost.

INFORMACION DEL SISTEMA:
- WhatsBoost envia peticiones HTTP POST con Content-Type application/x-www-form-urlencoded.
- Timeout de 5 segundos. Debo responder 200 rapidamente y procesar de forma asincrona.
- Cada payload contiene: secret (string SHA1), type (sms|whatsapp|ussd), data (JSON string).

PAYLOADS POR TIPO:
- SMS: data contiene id, rid, sim, device, phone, message, timestamp
- WhatsApp: data contiene id, wid, phone, message, attachment (url o null), timestamp
- USSD: data contiene id, sim, device, code, response, timestamp

REQUISITOS:
1. Verificar el secret contra mi token almacenado. Si no coincide, responder 403.
2. Parsear el campo "data" como JSON.
3. Segun el tipo, ejecutar la logica correspondiente.
4. Responder HTTP 200 lo antes posible.
5. Implementar logging para debug.
6. Manejar errores sin romper el flujo.

Mi stack es: [INDICA TU STACK AQUI]
El secret de mi webhook es: [TU SECRET AQUI]
Quiero que al recibir un WhatsApp, [DESCRIBE TU LOGICA AQUI].