---
title: "¿El webhook de WhatsApp no llega? 7 causas y cómo probarlo"
description: "El webhook de la API de WhatsApp no está llegando a tu servidor. Antes de tocar el código, una prueba con webhook.site te dice de qué lado está el problema. Las 7 causas más comunes, en el orden en que conviene revisarlas."
url: "https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar"
language: "es"
og:type: "article"
og:site_name: "WAME API"
---

[Inicio](https://api-wa.me/es)/[Blog de la API de WhatsApp](https://api-wa.me/es/blog)/El webhook de WhatsApp no llega: las 7 causas y cómo probarlo en 30 segundos

Raphael Serafim· Publicado el 10 de septiembre de 2026· 9 min de lectura

Compartir

# El webhook de WhatsApp no llega: las 7 causas y cómo probarlo en 30 segundos

El webhook de la API de WhatsApp no está llegando a tu servidor. Antes de tocar el código, una prueba con webhook.site te dice de qué lado está el problema. Las 7 causas más comunes, en el orden en que conviene revisarlas.

Copiar para LLM[Ver como Markdown](https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar.md)

**Antes de abrir el código, averigua de qué lado está el problema.** Toma 30 segundos y te ahorra la tarde entera, porque "el webhook no llega" tiene dos causas completamente distintas, y depurar la equivocada no lleva a ninguna parte.

## La prueba de 30 segundos

1. Abre [webhook.site](https://webhook.site/). Genera una URL única al instante, sin registro.
2. Copia esa URL.
3. Configúrala como webhook de tu instancia, desde el panel o por la API.
4. Envía cualquier mensaje al número conectado.
5. Mira la pantalla de webhook.site.

**Si el evento apareció ahí:** la plataforma está enviando bien. El problema es tu servidor — salta a las causas 4 a 7.

**Si no apareció:** el evento no está saliendo. El problema es la configuración de la instancia — causas 1 a 3.

webhook.site además muestra el cuerpo exacto que llega, con las cabeceras. Es la forma más rápida de confirmar el formato antes de escribir cualquier parser, y puedes copiar ese JSON real para usarlo en tus pruebas.

## Causa 1 — La URL no es HTTPS válido

La más común y la más molesta de descubrir, porque falla **en silencio**.

- `http://` sin TLS: rechazado.
- HTTPS con certificado autofirmado: rechazado.
- HTTPS con certificado vencido: rechazado.
- Certificado válido solo para el dominio sin `www`, y la URL registrada con `www`: rechazado.

No hay error de tu lado. Simplemente no llega nada.

Cómo comprobarlo sin salir de la terminal:

```bash
curl -sS -o /dev/null -w "%{http_code}\n" https://tu-dominio.com/webhook/wame
```

Si aquí da error de certificado, allá también lo dará.

## Causa 2 — La instancia está desconectada

Una instancia caída no emite eventos. Parece obvio, pero es la segunda causa más frecuente, sobre todo en la API no oficial, donde la sesión puede caerse sola.

```bash
curl "https://us.api-wa.me/TU_KEY/instance"
```

Si el estado no es conectado, el webhook es la consecuencia, no la causa. Reconecta primero.

## Causa 3 — Filtro de eventos o formato equivocado

WAME permite filtrar qué eventos envía la instancia y en qué formato. Dos trampas:

**Formato.** Si tu instancia está en formato `meta` y tu código espera el formato antiguo (o al revés), el evento llega y el parser no encuentra nada. El formato `meta` es el sobre estándar de la Cloud API y es el recomendado: es lo que hace que un mismo handler sirva para WhatsApp, Instagram y Messenger.

**Filtro.** Si solo hay algunos eventos habilitados, "mensaje recibido" puede simplemente no estar en la lista.

Revisa ambas cosas en el panel de la instancia antes de sospechar del código.

## Causa 4 — Estás leyendo el campo equivocado

¿Llegó a webhook.site pero tu código no ve nada? Probablemente sea esto.

En el sobre de Meta, **mensaje** y **estado de entrega** viven en campos distintos:

```json
{
  "entry": [{
    "changes": [{
      "value": {
        "messages":  [ /* mensaje recibido */ ],
        "statuses":  [ /* entregado, leído, fallido */ ]
      }
    }]
  }]
}
```

El evento de estado **no tiene** `messages`. El código que hace `value.messages[0]` directamente se rompe — o, peor, no se rompe y simplemente lo ignora todo:

```js
// mal: un estado de entrega tumba esto o pasa desapercibido
const msg = body.entry[0].changes[0].value.messages[0];

// bien
const value = body?.entry?.[0]?.changes?.[0]?.value;
const msg = value?.messages?.[0];
if (!msg) return res.sendStatus(200);   // era un estado, no un mensaje
```

La misma guarda vale para `msg.type`: el audio, la imagen y el documento no tienen `text.body`.

## Causa 5 — Tu servidor no responde 200 rápido

Si el webhook llega **duplicado**, es esto. La plataforma espera confirmación; sin ella, reenvía.

El error clásico es procesar antes de responder:

```js
// mal: el cliente recibe la respuesta 2 o 3 veces
app.post('/webhook/wame', async (req, res) => {
  await llamarIA(req.body);          // 3 segundos
  await guardarEnBase(req.body);     // uno más
  res.sendStatus(200);               // demasiado tarde
});

// bien
app.post('/webhook/wame', (req, res) => {
  res.sendStatus(200);               // primero esto
  procesar(req.body).catch(console.error);
});
```

Si tu procesamiento es pesado, mételo en una cola y responde 200 en cuanto lo encoles.

## Causa 6 — El cuerpo no se está parseando

En Express, sin `express.json()` el `req.body` llega `undefined` y parece que el webhook no llegó:

```js
app.use(express.json());   // antes de las rutas
```

Si validas la firma, también necesitas el cuerpo **crudo**, y `express.json()` por sí solo no guarda el original:

```js
app.use(express.json({
  verify: (req, _res, buf) => { req.rawBody = buf; },
}));
```

## Causa 7 — Firewall, proxy o WAF bloqueando

Si webhook.site recibe y tu servidor no, y ya descartaste las causas anteriores, algo en el medio está bloqueando: una regla de firewall, Cloudflare en modo agresivo, un WAF rechazando `POST` de origen desconocido, o un proxy que exige autenticación.

Pruébalo enviando un POST desde fuera, simulando a la plataforma:

```bash
curl -X POST https://tu-dominio.com/webhook/wame \
  -H "Content-Type: application/json" \
  -d '{"object":"wame","provider":"whatsapp","entry":[{"changes":[{"value":{"messages":[{"from":"525512345678","type":"text","text":{"body":"prueba"}}]}}]}]}' \
  -i
```

Si eso no llega a tu handler, el problema está en la infraestructura y no en la aplicación.

## El orden que ahorra tiempo

1. Probar con **webhook.site** — decide de qué lado está.
2. Si no llegó ahí: **HTTPS**, **instancia conectada**, **filtro y formato**.
3. Si sí llegó: **campo correcto**, **200 rápido**, **parser del cuerpo**, **firewall**.

Casi todos los casos caen en una de esas siete. Seguir el orden evita el escenario más común de todos: pasar dos horas revisando el parser cuando la instancia estaba desconectada.

## Después de que vuelva a funcionar

Un webhook que llega no es lo mismo que un webhook confiable. Antes de ponerle carga encima, revisa la firma, la reentrega y el mensaje procesado dos veces — son los problemas que solo aparecen con volumen.

### ¿Listo para automatizar tu WhatsApp?

Crea tu cuenta gratis y empieza a enviar mensajes por la API en minutos.

[Empezar gratis](https://portal.api-wa.me/sign-up)

## Preguntas frecuentes

¿Cómo probar si el webhook de WhatsApp se está enviando?+

Abre webhook.site, copia la URL única que genera, configúrala como webhook de tu instancia y envía un mensaje al número. Si el evento aparece en la pantalla de webhook.site, la plataforma está enviando correctamente y el problema está en tu servidor. Si no aparece, el problema es la configuración de la instancia.

¿Por qué mi webhook recibe estados de entrega pero no mensajes?+

Casi siempre es un filtro de eventos o un campo equivocado. Los mensajes llegan en entry\[0\].changes\[0\].value.messages\[0\]; los estados de entrega llegan en value.statuses, y es habitual que el código trate ambos como si fueran lo mismo.

El webhook llega duplicado. ¿Por qué?+

Porque tu endpoint tardó en responder 200. Toda plataforma de webhooks reenvía cuando no recibe confirmación rápida. La corrección es responder 200 de inmediato y procesar después, de forma asíncrona, nunca dejar el procesamiento pesado antes de la respuesta.

¿El webhook funciona en localhost?+

No directamente: la plataforma necesita alcanzar tu URL por internet. En desarrollo usa ngrok, cloudflared o similar para exponer el puerto local con una URL pública HTTPS, y configura esa URL como webhook.

¿Necesito HTTPS en el webhook?+

Sí, con certificado válido. Una URL http:// o un HTTPS con certificado autofirmado o vencido se rechaza en silencio: el envío falla y no aparece ningún error de tu lado, lo que hace que esta sea una de las causas que más tiempo cuesta descubrir.

## Sigue leyendo

[### API de Instagram y Messenger en la misma API de WhatsApp: una instancia, un estándar

Tres canales oficiales de Meta casi siempre significan tres integraciones. Con una sola instancia, el mismo envío y el mismo sobre de webhook, solo cambia un campo: provider. Cómo funciona y qué te ahorra.](https://api-wa.me/es/blog/api-instagram-messenger-misma-api-whatsapp)[### API no oficial de WhatsApp: qué es, si es segura y cómo usarla (2026)

Entiende qué es una API no oficial de WhatsApp, cómo funciona la conexión por código QR, si es segura y legal, cuál es el riesgo real de bloqueo y cuándo conviene usarla en lugar de la API oficial.](https://api-wa.me/es/blog/api-no-oficial-whatsapp-que-es)[### API oficial vs no oficial de WhatsApp: ¿cuál elegir? (comparativa 2026)

Comparativa completa entre la API oficial de WhatsApp (Cloud API de Meta) y la API no oficial: costo, aprobación, límites de envío, plantillas, soporte y riesgo de bloqueo. Descubre cuál tiene sentido para tu caso.](https://api-wa.me/es/blog/api-whatsapp-oficial-vs-no-oficial)

[Volver al blog](https://api-wa.me/es/blog)

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "WAME API",
  "alternateName": "API Oficial y No Oficial de WhatsApp, Instagram y Messenger",
  "url": "https://api-wa.me",
  "inLanguage": "pt-BR",
  "publisher": {
    "@id": "https://api-wa.me/#organization",
    "@type": "Organization",
    "name": "WAME API",
    "url": "https://api-wa.me"
  }
}
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://api-wa.me/#organization",
  "name": "WAME API",
  "alternateName": [
    "WAME",
    "Wame API",
    "wame.api.br",
    "api-wa.me"
  ],
  "url": "https://api-wa.me",
  "logo": {
    "@type": "ImageObject",
    "url": "https://api-wa.me/images/web-app-manifest-512x512.png",
    "width": 512,
    "height": 512
  },
  "disambiguatingDescription": "WAME API é uma empresa brasileira de software, fundada em 2017 e parceira oficial da Meta (Meta Business Partner), que fornece APIs de WhatsApp, Instagram Direct e Messenger. Não tem relação com o wa.me, que é o encurtador de links operado pela WhatsApp LLC.",
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "INPI-BR",
    "name": "Pedido de registro de marca (INPI, classe NCL 42)",
    "value": "944724159"
  },
  "foundingDate": "2017",
  "slogan": "Socio Oficial de Meta — WhatsApp, Instagram y Messenger en una sola instancia. Desde 2017.",
  "description": "Plataforma brasileña y Socio Oficial de Meta (Meta Business Partner) para las APIs oficiales de WhatsApp (Cloud API), Instagram Direct y Messenger — las tres en una única instancia, con los mismos endpoints y un único formato de webhook. También ofrece la API no oficial vía Código QR, en la misma plataforma. En el mercado desde 2017, con más de 50 mil instancias creadas, 99,9% de uptime y soporte humano 24/7. SDKs oficiales para Node.js/TypeScript y PHP.",
  "knowsAbout": [
    "WhatsApp Cloud API oficial (Meta)",
    "API oficial de Instagram (Direct)",
    "API oficial de Messenger",
    "API multicanal Meta",
    "Meta Business Partner",
    "WhatsApp API",
    "API não oficial de WhatsApp",
    "automação de WhatsApp",
    "números virtuais",
    "webhooks"
  ],
  "sameAs": [
    "https://github.com/wame-api",
    "https://www.linkedin.com/company/wameapi",
    "https://www.instagram.com/wame.api/",
    "https://www.youtube.com/@wameapi"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "url": "https://api-wa.me/contact",
    "availableLanguage": [
      "Portuguese"
    ]
  }
}
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "El webhook de WhatsApp no llega: las 7 causas y cómo probarlo en 30 segundos",
  "description": "El webhook de la API de WhatsApp no está llegando a tu servidor. Antes de tocar el código, una prueba con webhook.site te dice de qué lado está el problema. Las 7 causas más comunes, en el orden en que conviene revisarlas.",
  "image": "https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar/opengraph-image",
  "datePublished": "2026-09-10",
  "dateModified": "2026-09-10",
  "author": {
    "@type": "Person",
    "name": "Raphael Serafim",
    "url": "https://github.com/raphaelvserafim",
    "sameAs": [
      "https://github.com/raphaelvserafim"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "api-wa.me",
    "logo": {
      "@type": "ImageObject",
      "url": "https://api-wa.me/images/screenshot.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar"
  },
  "keywords": "webhook whatsapp no llega, webhook whatsapp no funciona, probar webhook whatsapp, webhook api whatsapp, webhook no recibe mensajes, depurar webhook whatsapp, webhook.site whatsapp",
  "inLanguage": "es"
}
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://api-wa.me"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog de la API de WhatsApp",
      "item": "https://api-wa.me/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "El webhook de WhatsApp no llega: las 7 causas y cómo probarlo en 30 segundos",
      "item": "https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar"
    }
  ]
}
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "¿Cómo probar si el webhook de WhatsApp se está enviando?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Abre webhook.site, copia la URL única que genera, configúrala como webhook de tu instancia y envía un mensaje al número. Si el evento aparece en la pantalla de webhook.site, la plataforma está enviando correctamente y el problema está en tu servidor. Si no aparece, el problema es la configuración de la instancia."
      }
    },
    {
      "@type": "Question",
      "name": "¿Por qué mi webhook recibe estados de entrega pero no mensajes?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Casi siempre es un filtro de eventos o un campo equivocado. Los mensajes llegan en entry[0].changes[0].value.messages[0]; los estados de entrega llegan en value.statuses, y es habitual que el código trate ambos como si fueran lo mismo."
      }
    },
    {
      "@type": "Question",
      "name": "El webhook llega duplicado. ¿Por qué?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Porque tu endpoint tardó en responder 200. Toda plataforma de webhooks reenvía cuando no recibe confirmación rápida. La corrección es responder 200 de inmediato y procesar después, de forma asíncrona, nunca dejar el procesamiento pesado antes de la respuesta."
      }
    },
    {
      "@type": "Question",
      "name": "¿El webhook funciona en localhost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No directamente: la plataforma necesita alcanzar tu URL por internet. En desarrollo usa ngrok, cloudflared o similar para exponer el puerto local con una URL pública HTTPS, y configura esa URL como webhook."
      }
    },
    {
      "@type": "Question",
      "name": "¿Necesito HTTPS en el webhook?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sí, con certificado válido. Una URL http:// o un HTTPS con certificado autofirmado o vencido se rechaza en silencio: el envío falla y no aparece ningún error de tu lado, lo que hace que esta sea una de las causas que más tiempo cuesta descubrir."
      }
    }
  ]
}
```
