Wow! Redução de 65% no preço para clientes brasileiros! Registre-se agora
WhatsApp API

Uma pesquisa NPS num chat do WhatsApp após a interação

A pessoa pode avaliar essa interação no chat que já usa. Quando a interação termina, o seu backend pode enviar essa pesquisa através da Whapi.Cloud. Este caso de uso mostra aos integradores como implementar esse fluxo com a WhatsApp API.

Chat pessoal, não um grupo Uma única nota
Uma conversa terminada ao lado de um telefone cujo chat do WhatsApp mostra uma pesquisa NPS que a pessoa pode responder.
Caso de uso

Quando usar este fluxo

A interação já terminou

Use este fluxo quando a interação já terminou, não enquanto ainda está aberta.

A nota vai para um chat pessoal

Use este fluxo quando a pessoa deve receber a pesquisa num chat pessoal, não num grupo.

A mensagem é uma pesquisa NPS

Use este fluxo quando a mensagem é uma pesquisa NPS, não perguntas de qualificação a partir de um anúncio nem um lembrete de visita.

Chat do WhatsApp num telefone com uma pesquisa NPS que a pessoa pode responder com uma nota.
Experiência do cliente

A pessoa pode avaliar no chat

Quando uma interação termina, a equipa pede a nota à mão ou salta a pesquisa, e o feedback chega tarde ou não chega.

Depois do fluxo, a pessoa vê uma pesquisa NPS no chat pessoal do WhatsApp e pode escolher uma nota. Os integradores constroem este resultado com a WhatsApp API.

Fluxo

Envie a pesquisa NPS para o chat

1

A interação terminou

O seu backend já sabe que a interação acabou e tem o telefone da pessoa.

2

Envie a pesquisa NPS

POST /messages/poll

sendMessagePoll sends the poll into that personal chat. The title and the score options are on that send. count is 1, so the person picks one score.

Precisa de acompanhar a entrega? Um envio aceite não significa que a pessoa já tenha a pesquisa. Saiba mais sobre o estado de entrega →

Pré-requisitos

Antes de executar o fluxo

Ligue o número de WhatsApp que envia a pesquisa e autentique cada pedido com o token desse número. O evento de interação terminada fica no seu backend.

Opcional — aprofunde este fluxo

Implementação da API

Uma chamada envia a pesquisa

Esta chamada é a pesquisa. Coloca o título e as opções de nota no chat pessoal de quem acabou de terminar a interação.

Obtenha o token da API grátis depois de se registar em whapi.cloud e use esse token no código em vez de Your_Token dos exemplos.

Envie a pesquisa NPS

Envie a pesquisa NPS para o chat pessoal, com o título e as opções desta interação, para a pessoa escolher uma nota.

curl --request POST \
     --url https://gate.whapi.cloud/messages/poll \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "to": "447123456789",
  "title": "How likely are you to recommend us?",
  "options": ["0", "10"],
  "count": 1
}
'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/messages/poll",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"to\":\"447123456789\",\"title\":\"How likely are you to recommend us?\",\"options\":[\"0\",\"10\"],\"count\":1}",
  CURLOPT_HTTPHEADER => [
    "accept: application/json",
    "authorization: Bearer Your_Token",
    "content-type: application/json"
  ],
]);

$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests

url = "https://gate.whapi.cloud/messages/poll"
payload = {
    "to": "447123456789",
    "title": "How likely are you to recommend us?",
    "options": ["0", "10"],
    "count": 1
}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
const response = await fetch('https://gate.whapi.cloud/messages/poll', {
  method: 'POST',
  headers: {
    accept: 'application/json',
    authorization: 'Bearer Your_Token',
    'content-type': 'application/json',
  },
  body: JSON.stringify({
    to: '447123456789',
    title: 'How likely are you to recommend us?',
    options: ['0', '10'],
    count: 1,
  }),
});

console.log(await response.text());
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"447123456789\",\"title\":\"How likely are you to recommend us?\",\"options\":[\"0\",\"10\"],\"count\":1}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/messages/poll")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer Your_Token")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
using RestSharp;

var options = new RestClientOptions("https://gate.whapi.cloud/messages/poll");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer Your_Token");
request.AddHeader("content-type", "application/json");
request.AddJsonBody(new { to = "447123456789", title = "How likely are you to recommend us?", options = new[] { "0", "10" }, count = 1 });
var response = await client.PostAsync(request);

Console.WriteLine("{0}", response.Content);
package main

import (
	"bytes"
	"fmt"
	"io"
	"net/http"
)

func main() {
	body := []byte(`{"to":"447123456789","title":"How likely are you to recommend us?","options":["0","10"],"count":1}`)
	req, _ := http.NewRequest("POST", "https://gate.whapi.cloud/messages/poll", bytes.NewReader(body))
	req.Header.Set("accept", "application/json")
	req.Header.Set("authorization", "Bearer Your_Token")
	req.Header.Set("content-type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
Entrega

Saiba quando a pesquisa chegou

Uma resposta de envio com sucesso não significa que a pessoa já tenha a pesquisa. O primeiro estado visível antes de um webhook é pending. As mudanças seguintes chegam só em statuses.post e statuses.put. Se o estado ficar em pending e não passar a sent, delivered ou um aviso posterior, a mensagem não foi entregue. Verifique o payload e a permissão da conta para enviar esse tipo.

  • Uma resposta de sendMessagePoll não prova que a pessoa tem a pesquisa.

  • Um pending que não avança significa que a pesquisa não foi entregue.

  • Acompanhe statuses.post e statuses.put para os avisos seguintes.

  • Um voto chega em messages.post como uma ação do tipo vote.

  • Ative messages.patch para ver total, o count de cada opção e voters.

  • read pode não chegar até a pessoa responder ou guardar o número.

O que ler sobre entrega e webhooks

Contacte o suporte se algo correu mal
Quando algo falha

Trate as falhas em cada passo

Se o envio da pesquisa for rejeitado ou não for entregue, a pessoa não recebe a pesquisa. Repita esse envio ou alerte a equipa, e não conte a pesquisa como enviada.

A interação terminou, mas a pesquisa falhou?

O envio pode ser rejeitado ou não entregue depois de a interação já ter terminado. Repita sendMessagePoll ou alerte a equipa, e não conte a pesquisa como enviada. Os clientes costumam dizer que o nosso suporte responde. Não hesite em pedir ajuda.

Contacte o suporte se algo correu mal

Diagnostique por passo da API

Estado O que significa O que fazer
400 Wrong request parameters
401 Need channel authorization for send message
402 Trial version limit exceeded
403 It is forbidden to send to this group/recipient
429 Too many requests
500 Internal Error
FAQ

Perguntas de integradores

Não. Este fluxo começa depois de uma interação ter terminado. Não são perguntas de qualificação num chat de anúncio.
Não. A mensagem é uma pesquisa NPS depois da interação. Não é um lembrete de visita com essas três respostas.
Se o envio for rejeitado ou não for entregue, repita esse envio ou alerte a equipa e não conte a pesquisa como enviada.
Não. Define o título e as opções no envio. O envio não espera uma mensagem escrita antes e não acrescenta um custo por essa mensagem.
Um voto chega em messages.post como uma ação do tipo vote. Ative messages.patch para obter total, o count de cada opção e voters. Também pode ler essa pesquisa com getMessage se guardou o id. Essa leitura não é um passo do envio nesta página.
Recursos compatíveis do WhatsApp

Tudo o que você precisa para criar automações no WhatsApp

O Whapi.Cloud oferece acesso a um conjunto completo de recursos do WhatsApp — mensagens, mídia, grupos, canais, webhooks e muito mais. Crie bots, automações e integrações sem limitações de funcionalidades.

Escolhido por desenvolvedores

Confiado por mais de 3.300 desenvolvedores e equipes SaaS

Desenvolvedores no mundo inteiro utilizam o Whapi.Cloud para criar automações, bots, integrações com CRM, ferramentas de envio em massa e fluxos avançados de WhatsApp. Nossa infraestrutura processa milhões de requisições API com alta estabilidade — e esse número cresce a cada mês.

Ícone de recurso

5,5K+

canais de API ativos

Ícone de recurso

21M+

requisições API por mês

“Tudo é simples, intuitivo e fácil de navegar. A documentação é clara e todas as informações estão bem à mão. Trabalho excelente.”

Roberto K. / Desenvolvedor Web

“Conectamos o WhatsApp aos nossos fluxos usando o n8n em apenas alguns minutos. Sem código, sem complicações — funcionou de primeira.”

Martin P. / Desenvolvedor

“O Whapi.Cloud se tornou uma parte essencial da nossa comunicação com clientes. Automatizamos atualizações de produtos, notificações de pedidos e mensagens de suporte — tudo sem templates nem aprovações da Meta.”

Oscar T. / CTO

Balão decorativo