Enfileirar envios agendados ou consultar a fila de mensagens do workflow.
Nó Message queue
O nó Message queue (workflow_message_queue) agenda envios WhatsApp para depois ou consulta itens pendentes na fila de mensagens do workflow. O workflow atual é vinculado automaticamente no backend — você não passa workflow ID manualmente.
Os operation templates espelham os tipos de mensagem do nó Send, mais a operação List queue.
Encontre-o na paleta WhatsWave em Automações.
Figura 1: Message queue — enfileirar texto com agendamento e agent opcional
O que faz
| Aspecto | Comportamento |
|---|---|
| Node type | workflow_message_queue |
| Executor | http_request → POST /workflows/message-queue |
| Modes | enqueue (agendar envio) ou list (consultar fila) via queue_mode oculto |
| Outputs | status, data |
Ao enfileirar, um worker em background envia a mensagem em scheduled_at com o mesmo formato de payload do nó Send. O workflow que criou o item é armazenado para rastreabilidade.
Operações de enqueue (campos compartilhados)
Toda operação de enqueue (wmq_op_*) inclui:
| Campo | Key | Obrigatório | Descrição |
|---|---|---|---|
| Contact phone | contact_phone_number | Sim | E.164, ex.: {{trigger.body.phone}} |
| Instance number | instance_number | Não | Telefone da linha WhatsApp — instance picker opcional |
| Schedule for | scheduled_at | Sim | Datetime ISO 8601 ou variável |
| Main content (optional) | message_content | Não | Override/resumo na linha da fila; fallback para campos específicos da operação |
| Agent (optional) | agent_id | Não | Quando definido, a mensagem é registrada no histórico de conversa desse agente com o contato |
Campos ocultos: queue_mode = enqueue, send_operation = tipo de mensagem (text, template, image, etc.).
Tipos de operação enqueue
Mesmos labels do Send:
| Operation ID | Label | Campos principais do body |
|---|---|---|
wmq_op_text | Text / message | text |
wmq_op_template | Template (Meta API) | template_name, language (oculto pt_BR), components |
wmq_op_image | Image | media_type, mediaUrl, mediaStoragePath, caption |
wmq_op_video | Video | Igual à imagem |
wmq_op_document | Document | Igual à imagem |
wmq_op_audio | Audio | audioUrl, audioStoragePath |
wmq_op_location | Location | lat, lng, name, address |
wmq_op_contact | Contact card | contactName, contactNumber |
wmq_op_sticker | Sticker | stickerUrl |
wmq_op_poll | Poll | name, options (JSON), selectableCount |
wmq_op_list | List | title, description, buttonText, sections (JSON) |
wmq_op_buttons | Buttons | title, description, buttons (JSON) |
wmq_op_reaction | Reaction | messageId, reaction, oculto from_me = true |
Operação List queue (wmq_op_list_queue)
Consulta itens pendentes ou em progresso para um contato:
| Campo | Key | Padrão | Descrição |
|---|---|---|---|
| Contact phone | contact_phone_number | — | Filtro obrigatório |
| Statuses | list_statuses | ["pending","processing"] | Array JSON de status a incluir |
| Limit | list_limit | 20 | Máximo de linhas retornadas |
Oculto: queue_mode = list.
Dicas e boas práticas
- Use Message queue para sequências de gotejamento e lembretes. Combine com trigger Schedule ou Delay para nutrição multi-etapa sem bloquear a execução pai.
- Defina
scheduled_atem UTC ou ISO com timezone. Exemplo:{{date:add_hours:2}}se usar helpers de data do workflow. agent_idopcional mantém mensagens enfileiradas visíveis no histórico de chat do agente — útil quando IA ou humanos continuam o thread depois.message_contenté campo de conveniência no registro da fila; se vazio, o worker usa campos específicos da operação (text,mediaUrl, etc.).- Liste a fila antes de enfileirar para evitar lembretes duplicados para o mesmo contato no mesmo dia.
- Prefira Message queue a Delay + Send quando precisar de persistência, retries e visibilidade na UI da fila.
Exemplos de uso
Exemplo 1 — Lembrete de carrinho abandonado (+2 horas)
Trigger: Webhook — evento de carrinho abandonado.
Fluxo:
- Message queue — Text
contact_phone_number:{{trigger.body.phone}}scheduled_at:{{trigger.body.remind_at}}(ISO da sua loja)text: "You left items in your cart. Complete your order: {{trigger.body.checkout_url}}"
- Return —
{ "queued": true }
Exemplo 2 — Follow-up com template no próximo dia útil
Trigger: Manual — vendedor marca lead como "callback tomorrow".
Fluxo:
- Variable — calcula timestamp ISO
next_morning - Message queue — Template (Meta API)
template_name:sales_followupcomponents: variáveis do body com nome do leadscheduled_at:{{variables.next_morning}}
- CRM — comentário no card: "Follow-up queued"
Exemplo 3 — Verificar antes de agendar duplicata
Trigger: Webhook — agendamento confirmado.
Fluxo:
- Message queue — List queue
contact_phone_number:{{trigger.body.phone}}
- Condition — se
{{message_queue_1.data.length}}==0→ enfileira confirmação; Senão → pula - Message queue — Text com
scheduled_at= compromisso menos 24h
FAQ
O workflow pai espera até a mensagem ser enviada?
Não. Enqueue retorna imediatamente. O worker envia em scheduled_at.
Posso cancelar mensagem enfileirada a partir de um workflow?
Use List queue para encontrar itens; cancelamento via API/UI está fora do escopo deste nó — consulte docs de gestão da fila do produto.
Por que vincular um agent a uma mensagem enfileirada?
Para que, ao entregar, a mensagem apareça no thread desse agente com o contato — útil em fluxos mistos IA/humano.
Send vs Message queue — quando usar qual?
Resposta imediata na mesma execução → Send. Entrega adiada, persistida ou amigável a lotes → Message queue.
Quais status aparecem em list_statuses?
Tipicamente pending, processing, sent, failed — passe array JSON conforme seu filtro.
Artigos relacionados
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte