Skip to main content
Para tipos de conteúdo que o WhatsApp suporta mas o zapo ainda não empacota num builder tipado, o client.message.send também aceita um Proto.IMessage bruto. Preencha o campo que nomeia o tipo — locationMessage, contactMessage, contactsArrayMessage, interactiveMessage, e assim por diante — e a lib encoda literalmente. Tipos que já têm um builder tipado — enquetes, reações, edições, revogações, fixação, manter no chat, wrapping view-once e citações / menções / previews de link — pertencem a Enviando mensagens e Mensagens interativas. Esta página é para os tipos que só existem em modo bruto. O conjunto completo de campos Proto.IMessage reconhecidos (localização, localização ao vivo, contatos, convite de grupo, produto, pedido, …) está na referência de tipos de mensagem. Alguns exemplos abaixo usam valores de enum do namespace proto:

Localizações

name e address são opcionais. Para uma mensagem de live location, use o campo liveLocationMessage — ele carrega os metadados de movimento (accuracyInMeters, speedInMps, sequenceNumber).

Contatos

Um cartão de contato único é um contactMessage com uma string vCard:
O parâmetro waid=<digits> na linha TEL é o que permite ao cliente WhatsApp vincular o cartão a uma conta WhatsApp — use o telefone E.164 do destinatário sem o +. Para vários cartões de uma vez, use contactsArrayMessage:

Convite de grupo

Botões

Até três botões de quick-reply. O header é um oneof — escolha texto, imagem, vídeo, localização ou documento (pré-upload para mídia):

Menu de lista

Uma lista single-select de rows agrupadas em sections:

Interactive native flow (cta_url)

A superfície interativa moderna — botões cujos parâmetros são payloads ad-hoc codificados em JSON:
É o mesmo formato de wire dos cards PIX / review-and-pay em Pagamentos abaixo — só o name do botão e o buttonParamsJson mudam.

Produto

Envie um produto do catálogo. O productImage interno precisa estar pré-uploadado:

Pedido

Confirmação / consulta de pedido:

Convite de admin de newsletter

Convide um contato para ser co-admin de uma das suas newsletters:

Alternar mensagens temporárias (configuração ephemeral)

Alternância do timer para o chat inteiro — diferente da opção de envio expirationSeconds (uma mensagem) e do wrapper ephemeralMessage (uma mensagem herdando o timer do chat).

Solicitar número de telefone

Pagamentos (PIX e review-and-pay)

Envie cards de pagamento do WhatsApp Business — PIX estático (payment_info) e checkout de pedido (review_and_pay) — como payloads brutos interactiveMessage / nativeFlowMessage via client.message.send. Ainda não existe builder tipado, então monte o shape você mesmo do mesmo jeito que os cards de localização/contato acima. A lib apenas relaya os botões native-flow interativos; os clientes WhatsApp renderizam a UI do card.
Cards de pagamento são um recurso Business / native-flow. A renderização difere entre WhatsApp mobile e WhatsApp Web — prefira o flow que combina com a UI que você quer (payment_info para o card só-PIX, review_and_pay para o card “Nº da cobrança” / pedido) e valide nos dois clients.
Valores são unidades monetárias inteiras mais um divisor offset: { value: 1000, offset: 100 } renderiza como R$ 10,00. key_type do PIX é um de EVP (chave aleatória), EMAIL, PHONE (E.164 preferido), CPF, CNPJ.

Card PIX (payment_info)

Renderiza o card PIX (chave / merchant). Use para uma chave PIX estática sem card de pedido.

Card review-and-pay (review_and_pay)

Renderiza o card de pedido / cobrança (número, itens, total). Use para um resumo estilo checkout.
buttonParamsJson precisa ser uma string JSON — monte o objeto em código e faça o stringify. body / footer em interactiveMessage são opcionais. Não misture payment_info e review_and_pay esperando a mesma UI — eles renderizam cards diferentes, e adicionar cta_copy / botões CTA extras no mesmo nativeFlowMessage pode renderizar diferente no mobile vs Web.

Veja também

Última modificação em 19 de agosto de 2026