Producto
SDK

Flows

Crea, publica y envía formularios dentro de WhatsApp

Introducción

El módulo Flow gestiona los WhatsApp Flows del workspace: formularios de varias pantallas que el contacto llena sin salir de WhatsApp (reservar una cita, registrarse, una encuesta). Son los mismos Flows de WhatsApp > Flows en Plazbot: lo que creas aquí aparece en el panel y en el editor de automatizaciones. Disponible desde la versión 2.4.0.

Inicialización

Plazbot (recomendado)·ts
01import { Plazbot } from 'plazbot';
02 
03const plazbot = new Plazbot({
04 workspaceId: "YOUR_WORKSPACE_ID",
05 apiKey: "YOUR_API_KEY",
06 zone: "LA"
07});
08 
09// Usar: plazbot.flow.list()

Listar y obtener

ts
01const flows = await plazbot.flow.list();
02const flow = await plazbot.flow.get("flo_..."); // incluye flowJson

Crear un Flow

El JSON del Flow usa el formato de Meta (version y screens). El Flow se crea en Meta como borrador. Si Meta encuentra errores en el JSON, el Flow se guarda igual y los errores vienen en validationError.

ts
01const { id, validationError } = await plazbot.flow.create({
02 name: "Reservar cita",
03 categories: ["APPOINTMENT_BOOKING"],
04 flowJson: {
05 version: "7.0",
06 screens: [/* pantallas del Flow */]
07 }
08});
09 
10if (validationError) console.log("Revisa el JSON:", validationError);
CampoDescripción
nameNombre del Flow.
flowJsonJSON del Flow en formato de Meta.
categoriesSIGN_UP, SIGN_IN, APPOINTMENT_BOOKING, LEAD_GENERATION, CONTACT_US, CUSTOMER_SUPPORT, SURVEY u OTHER. Por defecto OTHER.
number / numberIdNúmero dueño del Flow. Opcional si el workspace tiene un solo número.
descriptionDescripción interna.
dataExchangeConfigConfiguración del endpoint de intercambio de datos, si el Flow lo usa.

Probar, publicar y editar

ts
01// Un borrador se envía en modo de prueba: úsalo con tu propio número
02await plazbot.flow.send({
03 flowId: id,
04 to: "51912345678",
05 body: "Reserva tu cita aquí",
06 cta: "Reservar" // texto del botón
07});
08 
09await plazbot.flow.update(id, { flowJson: nuevoJson }); // solo borradores; lo que no pases se mantiene
10await plazbot.flow.publish(id); // ya no se puede editar
11 
12// Para cambiar un Flow publicado: duplícalo, edita la copia y publícala
13const copy = await plazbot.flow.duplicate(id);

send() acepta también header y footer. Enviar un Flow es un mensaje libre: solo sale dentro de las 24 horas desde el último mensaje del contacto, y el contacto debe existir en el workspace.


Activar, desactivar y borrar

ts
01await plazbot.flow.setActive(id, false); // se oculta del editor de automatizaciones
02await plazbot.flow.delete(id); // solo en Plazbot
03await plazbot.flow.delete(id, { alsoInMeta: true }); // también en Meta (los publicados se deprecan)

Respuestas del Flow

Lo que llena el contacto llega como un mensaje del contacto, en el chat y en tus webhooks, y se puede usar en las automatizaciones.

Errores

Los métodos lanzan PlazbotApiError (con code y message) cuando la API o Meta rechazan la operación.

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