Producto
WhatsApp

Recibir mensajes

Webhook por número para los mensajes entrantes y Workers para reaccionar a eventos

Webhook por número

Registra una URL y cada mensaje que recibe ese número llega a tu servidor por POST.

SDK·ts
01await bot.message.registerWebhook({
02 number: "51966446311", // tu número conectado
03 webhookUrl: "https://tu-app.com/api/whatsapp",
04})

También puedes registrarlo en el paso 4 de plazbot whatsapp setup. Para quitarlo: delete-webhook.

Qué llega a tu URL

POST → tu webhook·json
01{
02 "id": "msg_...",
03 "content": "Hola, ¿tienen envío a Cusco?",
04 "contactId": "cnt_...",
05 "recipientPhone": "51912345678",
06 "agentId": "agt_...",
07 "agentName": "Soporte",
08 "reference": { "object": "whatsapp_business_account" }
09}
CampoDescripción
idID del mensaje en Plazbot
contentTexto del mensaje (o descripción del archivo)
contactIdID del contacto en Plazbot
recipientPhoneNúmero de quien escribió, con código de país
agentId, agentNameAgente asignado al contacto, si hay
referencePayload original que envió Meta

Ejemplo de handler

app/api/whatsapp/route.ts·ts
01export async function POST(req: Request) {
02 const msg = await req.json()
03 
04 console.log(msg.recipientPhone, "escribió:", msg.content)
05 
06 return new Response("ok")
07}

Para probar sin servidor usa una URL de webhook.site: escribe a tu número y verás el POST en tiempo real.

El webhook por número envía los mensajes entrantes. Los estados de entrega (enviado, entregado, leído) todavía no se envían a tu webhook.

Eventos con Workers

Los Workers son funciones que Plazbot ejecuta por ti cuando ocurre un evento, sin montar servidor. Tienen acceso a WhatsApp, contactos y conversaciones desde plz.

workers/bienvenida.ts·ts
01import { defineWorker } from "plazbot/workers"
02 
03export default defineWorker({
04 name: "bienvenida",
05 events: ["contact.created"],
06 async handler(event, plz) {
07 const { contact } = event.data
08 if (!contact?.phoneNumber) return
09 
10 await plz.whatsapp.send({
11 to: contact.phoneNumber,
12 message: "¡Bienvenido! ¿En qué te ayudamos?",
13 })
14 },
15})
bash
01plazbot workers deploy ./workers/bienvenida.ts
GrupoEventos
message.*received, image.received, audio.received, document.received
contact.*created, existing, deleted, blocked, from.ad
conversation.*assigned, resolved, reopened

Más en Workers.

¿Quieres probar la API en vivo? Abre el Playground.