Recibe eventos en tiempo real y automatiza acciones cuando se envian o reciben mensajes.
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.
secret SHA1 autogenerado para verificar la autenticidad de cada peticion.
| Propiedad | Tipo | Descripcion |
|---|---|---|
name | string | Nombre descriptivo del webhook (ej: "Notificacion CRM") |
url | string | URL de destino donde se envia la notificacion. Se recomienda HTTPS. |
events | array | Lista de eventos que disparan el webhook (ej: sms, whatsapp, ussd) |
secret | string | Token SHA1 generado automaticamente al crear el webhook. Sirve para verificar que la peticion proviene de WhatsBoost. |
Puedes suscribir cada webhook a uno o varios eventos. Puedes seleccionar uno o varios eventos al crear el webhook (por ejemplo "sms,whatsapp").
| Evento | Valor | Cuando se dispara | Datos 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 |
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 |
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.
{
"secret": "webhook_sha1_secret",
"type": "sms",
"data": {
"id": 1234,
"rid": 5678,
"sim": 1,
"device": "device-uuid",
"phone": "+34612345678",
"message": "Contenido del mensaje",
"timestamp": 1711108200
}
}
| Campo | Tipo | Descripcion |
|---|---|---|
id | integer | ID unico del mensaje en WhatsBoost |
rid | integer | ID del registro de recepcion |
sim | integer | Ranura SIM utilizada (1 o 2) |
device | string | UUID del dispositivo Android |
phone | string | Numero de telefono del remitente en formato internacional |
message | string | Contenido del mensaje recibido |
timestamp | integer | Marca de tiempo Unix del evento |
{
"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
}
}
| Campo | Tipo | Descripcion |
|---|---|---|
id | integer | ID unico del mensaje en WhatsBoost |
wid | string | WhatsApp ID de la cuenta receptora |
phone | string | Numero de telefono del remitente |
message | string | Contenido del mensaje recibido |
attachment | string|null | URL del archivo adjunto (imagen, video, audio, documento) o null si no hay adjunto |
timestamp | integer | Marca de tiempo Unix del evento |
{
"secret": "webhook_sha1_secret",
"type": "ussd",
"data": {
"id": 1234,
"sim": 1,
"device": "device-uuid",
"code": "*123#",
"response": "Your balance is...",
"timestamp": 1711108200
}
}
| Campo | Tipo | Descripcion |
|---|---|---|
id | integer | ID de la peticion USSD en WhatsBoost |
sim | integer | Ranura SIM utilizada |
device | string | UUID del dispositivo Android |
code | string | Codigo USSD ejecutado |
response | string | Respuesta recibida del operador |
timestamp | integer | Marca de tiempo Unix del evento |
Cuando ocurre un evento, WhatsBoost envia la notificacion al webhook con la siguiente configuracion HTTP:
| Propiedad | Valor | Detalle |
|---|---|---|
| Metodo HTTP | POST | Se envian los datos como form_params (application/x-www-form-urlencoded) |
| Timeout | 5 segundos | Timeout total de conexion + lectura. Si tu servidor no responde en 5 segundos, la peticion se abandona. |
| Verificacion SSL | Deshabilitada | Se aceptan certificados auto-firmados. Esto permite usar webhooks en entornos de desarrollo. |
| Redirecciones | Habilitadas | WhatsBoost sigue automaticamente las redirecciones HTTP 301/302. |
| Errores HTTP | No lanzados | WhatsBoost no lanza excepciones por codigos 4xx/5xx, sino que comprueba el codigo de estado de la respuesta. |
200 en menos de 5 segundos. Si necesitas ejecutar logica pesada, recibe el webhook, responde 200 inmediatamente y procesa los datos de forma asincrona (cola de trabajo, cron, etc.).
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.
secret del payload recibido.403.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"));
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.
POST //whatsboost.netrequests
| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
type | string | Si | Valor fijo: trigger |
secret | string | Si | El secret SHA1 del webhook que quieres probar |
type | string | Si | Tipo de evento a simular: sms, whatsapp o ussd |
url | string | Si | URL del receptor donde enviar los datos de prueba |
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.
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.
| Propiedad | Valor | Descripcion |
|---|---|---|
| Fuente (source) | 1 = SMS, 2 = WhatsApp | Canal de mensajeria que dispara la accion |
| Evento (event) | 1 = Recibido, 2 = Enviado | Momento en que se ejecuta la accion |
| URL plantilla (link) | string | URL con variables que se sustituyen al dispararse |
| Variable | Descripcion | Ejemplo de salida |
|---|---|---|
{{phone}} | Numero de telefono (URL-encoded) | %2B34612345678 |
{{message}} | Contenido del mensaje (URL-encoded) | Hola%20mundo |
{{date.now}} | Fecha actual en formato legible | March 22, 2026 |
{{date.time}} | Hora actual en formato legible | 02:30 PM |
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
| Caracteristica | Webhooks | Acciones |
|---|---|---|
| Metodo HTTP | POST | GET |
| Formato de datos | JSON completo con payload estructurado | Variables en parametros de URL |
| Verificacion | Campo secret SHA1 | Sin verificacion integrada |
| Eventos | SMS, WhatsApp, USSD (enviado y recibido) | SMS o WhatsApp (recibido o enviado, no USSD) |
| Caso de uso | Integraciones complejas, CRM, bases de datos | Disparadores simples, notificaciones, APIs de terceros |
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].