¡Guau! Crea tu integración de WhatsApp. Empieza gratis. Regístrate ahora
WhatsApp API

Una encuesta NPS en un chat de WhatsApp tras la interacción

La persona puede valorar esa interacción en el chat que ya usa. Cuando la interacción ha terminado, tu backend puede enviar esa encuesta a través de Whapi.Cloud. Este caso de uso muestra a los integradores cómo implementar ese flujo con la WhatsApp API.

Chat personal, no un grupo Una sola puntuación
Una conversación terminada junto a un teléfono cuyo chat de WhatsApp muestra una encuesta NPS que la persona puede responder.
Caso de uso

Cuándo usar este flujo

La interacción ya ha terminado

Usa este flujo cuando la interacción ya ha terminado, no mientras sigue abierta.

La puntuación va a un chat personal

Usa este flujo cuando la persona debe recibir la encuesta en un chat personal, no en un grupo.

El mensaje es una encuesta NPS

Usa este flujo cuando el mensaje es una encuesta NPS, no preguntas de cualificación desde un anuncio ni un recordatorio de visita.

Chat de WhatsApp en un teléfono con una encuesta NPS que la persona puede responder con una sola nota.
Experiencia del cliente

La persona puede puntuar en el chat

Cuando termina una interacción, el equipo pide la nota a mano o se salta la encuesta, y la opinión llega tarde o no llega.

Cuando el flujo corre, la persona ve una encuesta NPS en su chat personal de WhatsApp y puede elegir una nota. Los integradores construyen este resultado con la WhatsApp API.

Flujo

Envía la encuesta NPS al chat

1

La interacción ha terminado

Tu backend ya sabe que la interacción acabó y tiene el teléfono de la persona.

2

Envía la encuesta 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.

¿Necesitas el seguimiento de entrega? Un envío aceptado no significa que la persona ya tenga la encuesta. Más sobre el estado de entrega →

Requisitos

Antes de ejecutar el flujo

Conecta el número de WhatsApp que envía la encuesta y autentica cada petición con el token de ese número. El evento de interacción terminada se queda en tu backend.

Opcional — profundiza en este flujo

Implementación de la API

Una llamada envía la encuesta

Esta llamada es la encuesta. Pone el título y las opciones de puntuación en el chat personal de quien acaba de terminar la interacción.

Obtén tu token de API gratis después de registrarte en whapi.cloud y usa ese token en el código en lugar de Your_Token de los ejemplos.

Envía la encuesta NPS

Envía la encuesta NPS al chat personal, con el título y las opciones de esta interacción, para que la persona elija una 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

Sabe cuándo la encuesta llegó

Una respuesta de envío correcta no significa que la persona ya tenga la encuesta. El primer estado visible antes de un webhook es pending. Los cambios posteriores llegan solo en statuses.post y statuses.put. Si el estado se queda en pending y no pasa a sent, delivered o un acuse posterior, el mensaje no se entregó. Revisa el payload y el permiso de la cuenta para enviar ese tipo.

  • Una respuesta de sendMessagePoll no prueba que la persona tenga la encuesta.

  • Un pending que no avanza significa que la encuesta no se entregó.

  • Observa statuses.post y statuses.put para los acuses posteriores.

  • Un voto llega en messages.post como una acción de tipo vote.

  • Activa messages.patch para ver total, el count de cada opción y voters.

  • read puede no llegar hasta que la persona responda o guarde el número.

Qué leer sobre entrega y webhooks

Contacta con soporte si algo salió mal
Cuando algo falla

Trata los fallos en cada paso

Si el envío de la encuesta se rechaza o no se entrega, la persona no recibe la encuesta. Reintenta ese envío o avisa al equipo, y no cuentes la encuesta como enviada.

¿La interacción terminó, pero la encuesta falló?

El envío puede rechazarse o no entregarse después de que la interacción ya terminó. Reintenta sendMessagePoll o avisa al equipo, y no cuentes la encuesta como enviada. Los clientes suelen decir que nuestro soporte responde. No dudes en pedir ayuda.

Contacta con soporte si algo salió mal

Diagnostica por paso de API

Estado Qué significa Qué hacer
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

Preguntas de integradores

No. Este flujo empieza cuando una interacción ya terminó. No son preguntas de cualificación en un chat de anuncio.
No. El mensaje es una encuesta NPS después de la interacción. No es un recordatorio de visita con esas tres respuestas.
Si el envío se rechaza o no se entrega, reinténtalo o avisa al equipo y no cuentes la encuesta como enviada.
No. Pones el título y las opciones en el envío. El envío no espera un mensaje escrito de antemano y no añade un cargo por ese mensaje.
Un voto llega en messages.post como una acción de tipo vote. Activa messages.patch para obtener total, el count de cada opción y voters. También puedes leer esa encuesta con getMessage si guardaste su id. Esa lectura no es un paso del envío en esta página.
Funciones compatibles de WhatsApp

Todo lo que necesitas para crear automatizaciones en WhatsApp

Whapi.Cloud te da acceso a un conjunto completo de funciones de WhatsApp — mensajería, multimedia, grupos, canales, webhooks y más. Crea bots, automatizaciones e integraciones sin limitaciones de funciones.

Elegido por desarrolladores

Confiado por más de 3.300 desarrolladores y equipos SaaS

Desarrolladores de todo el mundo confían en Whapi.Cloud para crear automatizaciones, bots, integraciones con CRM, herramientas de mensajería masiva y flujos avanzados de WhatsApp. Nuestra infraestructura procesa millones de solicitudes API con alta estabilidad, y este número crece cada mes.

Icono de característica

5,5K+

canales API activos

Icono de característica

21M+

solicitudes API al mes

“Todo es simple, intuitivo y fácil de usar. La documentación es clara y toda la información está justo donde la necesito. Excelente trabajo.”

Roberto K. / Desarrollador Web

“Conectamos WhatsApp a nuestros flujos en n8n en solo unos minutos. Sin código, sin complicaciones — todo funcionó a la primera.”

Martin P. / Desarrollador

“Whapi.Cloud se convirtió en una parte clave de nuestra comunicación con clientes. Automatizamos actualizaciones de productos, notificaciones de pedidos y mensajes de soporte — sin plantillas ni aprobaciones de Meta.”

Oscar T. / CTO

Burbuja decorativa