Broadcasts
Una campaña.Miles de contactos.
Arma la lista en lotes de mil, dale a cada destinatario sus propias variables y envía por el canal que corresponda — o deja que a cada contacto se le llegue por donde le funciona. El costo se reserva antes de que salga el primer mensaje, y el envío se lee mientras ocurre.
Canales que puede tomar una campaña
Seis valores, y ninguno más. smart decide contacto por contacto, y por eso se le exige la misma verificación que a SMS y a email: puede enrutar a cualquiera de los dos.
Qué bloquea un envío
Redactar es gratis. Enviar no.
La verificación bloquea el envío, nunca el borrador. Elige un canal y lee exactamente qué te pide, qué revisa el contenido y qué devuelve un envío bloqueado.
Las dos. Verificación de identidad (KYC) y de empresa (KYB), y pasar una no alcanza. smart no está exento: puede enrutar un contacto a SMS o a email, así que responde a la misma vara que ellos.
Primero revisión automática de contenido, y después una persona la aprueba antes de que salga nada.
403 kyc_required o 403 kyb_required, nombrando la que falte.
Nada de esto toca un borrador. Crea la campaña, agrega a todos los destinatarios, reescribe el texto — sin verificación y sin cargo. Los controles corren al enviar.
La máquina de estados
Doce estados. Recórrelos.
Cada estado que una campaña puede reportar, y cada movimiento entre ellos. Haz clic en un estado para leerlo; presiona una transición para tomarla.
Borrador
Creada, no enviada. No cuesta nada, no pide verificación, y se puede editar y rellenar todo el tiempo que quieras.
Qué acepta
- PATCH /v1/broadcasts/{id} — reescribe el texto
- POST /v1/broadcasts/{id}/contacts — agrega hasta 1.000 destinatarios por llamada
- DELETE /v1/broadcasts/{id} — descártala
- POST /v1/broadcasts/{id}/send — envíala a revisión
Cada movimiento de arriba dispara el webhook broadcast.status_changed, así que nada de esto hay que consultarlo para enterarse.
Una campaña, un mensaje para cada uno
Cada destinatario lleva sus propias variables.
Un lote es una lista de destinatarios, cada uno con su propio objeto templateVariables. Edita el cuerpo o cualquier fila y mira qué recibe realmente esa persona — y qué respondería el endpoint.
added
+14155551234
Hi John, order ORD-001 shipped today.
added
+5491133445566
Hi Lucía, order ORD-002 shipped today.
added
mara@example.com
Hi Mara, order ORD-003 shipped today.
3
added
0
duplicates
0
invalid
Hasta 1.000 destinatarios por petición, llamada tantas veces como necesite la lista. Los duplicados y los inválidos vuelven contados, con una razón cada uno, en vez de descartarse en silencio. Las plantillas de WhatsApp aceptan dos objetos más por destinatario: templateButtonVariables, indexado por botón, y templateHeaderVariables, indexado por 1.
Mientras corre
Conteos, costo y una hora de término.
Una sola llamada responde con el cuadro completo. Arrastra el envío hacia adelante, o cancélalo en pleno vuelo y mira qué pasa con los destinatarios que aún no habían salido.
48%
percentComplete
5,000 destinatarios
startedAt 10:30 · eta 10:45
2,500
pending
100
sending
2,352
delivered
48
failed
0
skipped
$75.00
estimatedCost
$75.00
reservedAmount
$35.28
actualCost
El costo estimado se reserva de tu balance al arrancar el envío, para que una campaña no quede a medias por quedarse sin fondos. actualCost se acumula sobre lo entregado, y la diferencia vuelve.
Cuatro llamadas
Broadcasts está en el SDK.
Créala, llénala, envíala, mírala. Métodos reales en TypeScript y Python, y los mismos cuatro pasos sobre HTTP plano.
import Zavudev from '@zavudev/sdk';
const zavu = new Zavudev({ apiKey: process.env['ZAVUDEV_API_KEY'] });
// channel: smart | sms | sms_oneway | whatsapp | telegram | email
const broadcast = await zavu.broadcasts.create({
name: 'October update',
channel: 'smart',
text: 'Hi {{name}}, order {{order_id}} shipped today.',
});
console.log(broadcast.id, broadcast.status); // -> "draft"Escríbelo una vez. Llega a todos.
Empieza gratis, sin tarjeta. Los borradores no cuestan — la verificación solo se pide al enviar, y nunca en WhatsApp.