¡Guau! Crea tu integración de WhatsApp. Empieza gratis. Regístrate ahora
Anuncios CTWA · caso de uso de la WhatsApp API

De un clic de anuncio de WhatsApp a un lead en el CRM y la primera respuesta

El interesado recibe una primera respuesta en el chat de WhatsApp que abrió el anuncio; si no, los clics de pago esperan a que alguien escriba a mano. Cuando alguien pulsa un anuncio Click-to-WhatsApp de Meta, tu backend puede crear un Lead o un Purchase y enviar ese calentamiento a través de Whapi.Cloud. Aquí ves cómo montar ese recorrido con la WhatsApp API.

Entrada messages.post con context.ad El cuerpo del calentamiento es texto de chat normal
Un anuncio de Meta en un teléfono junto a un chat de WhatsApp que espera la primera respuesta, con una ficha de lead del CRM al lado del hilo.
Burbuja decorativa
Caso de uso

Cuándo encaja este recorrido

El disparador es un clic Click-to-WhatsApp de Meta

Encaja si la persona llega pulsando un anuncio Click-to-WhatsApp de Meta, no si marcó el número a mano sin contexto de anuncio.

El clic debe crear un registro en el CRM

Encaja si ese clic debe crear en tu backend un Lead o un Purchase, no si solo dejas el hilo dentro de WhatsApp.

La primera respuesta se queda en ese chat personal

Encaja si el calentamiento debe aparecer en el mismo chat directo que abrió el anuncio, no como preguntas de cualificación, invitación a un grupo ni un envío saliente desde HubSpot.

Pantalla de un teléfono con un chat de WhatsApp donde el interesado acaba de recibir la primera respuesta tras pulsar un anuncio Click-to-WhatsApp, con una ficha de CRM marcada Lead.
Experiencia del cliente

El interesado recibe una primera respuesta tras el anuncio

Sin automatizar, el chat queda vacío tras el toque del anuncio hasta que un comercial escribe, y ventas nunca ve el clic en el CRM.

Cuando el recorrido termina, el interesado ve un calentamiento en ese chat de WhatsApp y el equipo tiene un Lead o un Purchase en la ficha del CRM. Los integradores construyen este resultado con la WhatsApp API.

Flujo

Del clic del anuncio a la primera respuesta

1

Clic en un anuncio Click-to-WhatsApp de Meta

Alguien pulsa un anuncio Click-to-WhatsApp de Meta y el chat de entrada llega a tu canal. El payload de messages.post lleva context.ad y, si existe, context.conversion. Tu backend escribe el Lead o el Purchase en el CRM a partir de ese payload. Whapi.Cloud no aloja el CRM.

2

Envía el mensaje de calentamiento

POST /messages/text

sendMessageText envía al mismo chat personal el cuerpo de calentamiento que eligió tu backend. Pon en to el teléfono del remitente o el id del chat que viene en el webhook.

¿Necesitas seguimiento de entrega? Si el calentamiento se queda en pending, no se entregó. Los cambios posteriores llegan en statuses.post y statuses.put. Ver el estado de entrega →

Requisitos previos

Antes de ejecutar el recorrido

Conecta el número de WhatsApp que recibe esos chats de anuncio y autentica cada petición con el token de API de ese número. El mapeo al CRM y el texto de calentamiento se quedan en tu backend.

Opcional — profundiza en este recorrido

  • Seguimiento de leads de WhatsApp desde anuncios de Meta: Abrir la guía
  • Cómo un evento de entrada lleva a la siguiente llamada de API: Abrir la guía
Implementación de API

La llamada que envía el calentamiento

Tu backend ya leyó la entrada atribuida al anuncio y escribió el evento en el CRM. Esta llamada entrega el texto de calentamiento en el mismo chat personal.

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

Envía el mensaje de calentamiento

Envía el texto de calentamiento cuando llega la entrada Click-to-WhatsApp de Meta.

curl --request POST \
     --url https://gate.whapi.cloud/messages/text \
     --header 'accept: application/json' \
     --header 'authorization: Bearer Your_Token' \
     --header 'content-type: application/json' \
     --data '
{
  "to": "15052462002",
  "body": "Hello"
}
'
$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{  \"to\": \"15052462002\",  \"body\": \"Hello\"}",
  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/text"
payload = {"to": "15052462002", "body": "Hello"}
headers = {
    "accept": "application/json",
    "authorization": "Bearer Your_Token",
    "content-type": "application/json"
}

response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
const response = await fetch("https://gate.whapi.cloud/messages/text", {
  method: "POST",
  headers: {
    accept: "application/json",
    authorization: "Bearer Your_Token",
    "content-type": "application/json"
  },
  body: JSON.stringify({ to: "15052462002", body: "Hello" })
});

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

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{  \"to\": \"15052462002\",  \"body\": \"Hello\"}");
Request request = new Request.Builder()
  .url("https://gate.whapi.cloud/messages/text")
  .method("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/text");
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 = "15052462002", body = "Hello" });
var response = await client.ExecuteAsync(request);

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

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

func main() {
	body := []byte(`{
  "to": "15052462002",
  "body": "Hello"
}`)
	req, _ := http.NewRequest("POST", "https://gate.whapi.cloud/messages/text", 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

Mira cuándo llega el calentamiento

Una respuesta de envío correcta no significa que el interesado ya tenga el calentamiento. 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 ack posterior, el mensaje no se entregó: revisa el payload y el permiso de la cuenta para enviar ese tipo.

  • Un estado que se queda en pending significa que el calentamiento no se entregó.

  • Observa statuses.post y statuses.put para sent, delivered y read.

  • No trates el clic como calentado hasta que el calentamiento salga de pending o el interesado responda.

Qué leer sobre entrega y webhooks

Contacta a soporte si algo salió mal
Cuando algo falla

Gestiona los fallos en cada paso

Si messages.post llega sin un context.ad o context.conversion usable, sendMessageText se rechaza o no se entrega, o falla la escritura al CRM en tu backend, reintenta o avisa y no trates el clic como calentado ni registrado.

¿El clic del anuncio llegó, pero no se registró nada?

Mantén la escritura al CRM en tu backend separada de la entrega por WhatsApp. Si falta el contexto del anuncio, no envíes y avisa. Si el calentamiento falla, reintenta sendMessageText o avisa al equipo, y no marques el clic como Lead o Purchase. Si el envío sigue fallando tras un reintento, contacta con el soporte de Whapi con el id del canal y el id de la solicitud fallida.

Contacta a soporte si algo salió mal

Revisa por paso de API

Estado Qué significa Qué hacer
200 Created
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
413 Request body too large
429 Too many requests
500 Internal Error
Preguntas frecuentes

Dudas sobre leads de anuncio

No. Este recorrido escribe un Lead o un Purchase en el CRM y envía un calentamiento. Las preguntas de cualificación en el chat del anuncio son otra rama.
No. Tu backend elige Lead o Purchase y escribe el registro. Whapi.Cloud entrega el contexto del anuncio de entrada y el envío de calentamiento.
Hay atribución cuando el clic del anuncio produce un mensaje y los campos de anuncio van en esa entrada. Si falta context.ad, reintenta o avisa y no trates el clic como registrado.
No. El WhatsApp saliente de HubSpot parte de un evento del CRM. Este recorrido parte de un clic Click-to-WhatsApp de Meta.
No. Los ítems de un pedido de catálogo son otra fuente. Aquí Purchase es el evento de CRM que escribe tu backend tras el chat atribuido al anuncio.
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