Automações

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.

Workflows > editor > Message queue node with scheduled_at Figura 1: Message queue — enfileirar texto com agendamento e agent opcional

O que faz

AspectoComportamento
Node typeworkflow_message_queue
Executorhttp_requestPOST /workflows/message-queue
Modesenqueue (agendar envio) ou list (consultar fila) via queue_mode oculto
Outputsstatus, 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:

CampoKeyObrigatórioDescrição
Contact phonecontact_phone_numberSimE.164, ex.: {{trigger.body.phone}}
Instance numberinstance_numberNãoTelefone da linha WhatsApp — instance picker opcional
Schedule forscheduled_atSimDatetime ISO 8601 ou variável
Main content (optional)message_contentNãoOverride/resumo na linha da fila; fallback para campos específicos da operação
Agent (optional)agent_idNãoQuando 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 IDLabelCampos principais do body
wmq_op_textText / messagetext
wmq_op_templateTemplate (Meta API)template_name, language (oculto pt_BR), components
wmq_op_imageImagemedia_type, mediaUrl, mediaStoragePath, caption
wmq_op_videoVideoIgual à imagem
wmq_op_documentDocumentIgual à imagem
wmq_op_audioAudioaudioUrl, audioStoragePath
wmq_op_locationLocationlat, lng, name, address
wmq_op_contactContact cardcontactName, contactNumber
wmq_op_stickerStickerstickerUrl
wmq_op_pollPollname, options (JSON), selectableCount
wmq_op_listListtitle, description, buttonText, sections (JSON)
wmq_op_buttonsButtonstitle, description, buttons (JSON)
wmq_op_reactionReactionmessageId, reaction, oculto from_me = true

Operação List queue (wmq_op_list_queue)

Consulta itens pendentes ou em progresso para um contato:

CampoKeyPadrãoDescrição
Contact phonecontact_phone_numberFiltro obrigatório
Statuseslist_statuses["pending","processing"]Array JSON de status a incluir
Limitlist_limit20Má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_at em UTC ou ISO com timezone. Exemplo: {{date:add_hours:2}} se usar helpers de data do workflow.
  • agent_id opcional 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:

  1. Message queueText
    • 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}}"
  2. Return{ "queued": true }

Exemplo 2 — Follow-up com template no próximo dia útil

Trigger: Manual — vendedor marca lead como "callback tomorrow".

Fluxo:

  1. Variable — calcula timestamp ISO next_morning
  2. Message queueTemplate (Meta API)
    • template_name: sales_followup
    • components: variáveis do body com nome do lead
    • scheduled_at: {{variables.next_morning}}
  3. CRM — comentário no card: "Follow-up queued"

Exemplo 3 — Verificar antes de agendar duplicata

Trigger: Webhook — agendamento confirmado.

Fluxo:

  1. Message queueList queue
    • contact_phone_number: {{trigger.body.phone}}
  2. Condition — se {{message_queue_1.data.length}} == 0 → enfileira confirmação; Senão → pula
  3. Message queueText 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

Central de Ajuda