---
title: "Enviar a un grupo de WhatsApp"
description: "Envía un mensaje de grupo de WhatsApp con un ID de grupo en to, luego sigue la distribución a través de los tres contadores de destinatarios y un evento por participante."
canonical: "https://bird.com/es-es/documentacion/guides/whatsapp/groups/sending"
---

# Enviar a un grupo de WhatsApp

Un envío a grupo es un `POST /v1/whatsapp/messages` normal cuyo `to` nombra un grupo en lugar de una persona: una solicitud, un mensaje, y cada participante de ese chat grupal lo recibe y puede responder donde los demás lo ven. Lo que cambia es el reporte. El mensaje lleva contadores de cuántos lo recibieron, y la entrega se confirma un participante a la vez.

Crear y administrar un grupo es independiente de enviarle mensajes. [Gestión de grupos de WhatsApp](/docs/guides/whatsapp/groups/management) cubre cómo crear uno a través de la API y compartir su enlace de invitación, y [Grupos de WhatsApp](/docs/guides/whatsapp/groups) cubre para qué sirve un grupo y los límites que WhatsApp impone.

## Requisitos previos

Necesitas una clave de API con permiso de escritura de WhatsApp y el ID de un grupo **Active** (`wag_…`). Cópialo desde la pestaña **Details** del grupo en la página de [**Groups**](https://bird.com/dashboard/w/whatsapp/groups), léelo de `to.group_id` en un mensaje que llegó a través del grupo, o [lista tus grupos](/docs/guides/whatsapp/groups/management#list-your-groups).

Reemplaza el ID de grupo de ejemplo con el tuyo. Inicializa el cliente para tu lenguaje usando la guía de SDK de [TypeScript](/docs/sdks/typescript), [Python](/docs/sdks/python), [Go](/docs/sdks/go) o [PHP](/docs/sdks/php). Para ejemplos de CLI, [instala y autentica el CLI](/docs/cli#authenticate) con acceso de escritura de WhatsApp. Usa el host API de tu [región del espacio de trabajo](/docs/api/regions) en las solicitudes cURL.

## 1. Envía el mensaje

Pon el ID del grupo en `to` y omite `from`. Un grupo está vinculado al número de negocio con el que fue creado, así que ese número es el único por el que puede salir el mensaje; indicar un remitente devuelve una [`E15018`](/docs/api/errors/E15018) `422`.

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "wag_01krdgeqcxet5s7t44vh8rt9mg",
  text: { body: "The route sheet for Tuesday is up." },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/es-es/documentacion/guides/whatsapp/groups/sending.ts.md) · [Python](/es-es/documentacion/guides/whatsapp/groups/sending.py.md) · [Go](/es-es/documentacion/guides/whatsapp/groups/sending.go.md) · [PHP](/es-es/documentacion/guides/whatsapp/groups/sending.php.md) · [CLI](/es-es/documentacion/guides/whatsapp/groups/sending.cli.md) · [MCP](/es-es/documentacion/guides/whatsapp/groups/sending.mcp.md) · [cURL](/es-es/documentacion/guides/whatsapp/groups/sending.curl.md)

La API devuelve `202` con el grupo reflejado en `to.group_id`, `status: accepted` y `recipient_count`: cuántas personas había en el grupo cuando se aceptó el envío. Ese conteo es el denominador para todo en el paso 3, y queda fijo en ese momento. Alguien que se una por el enlace de invitación mientras el mensaje está en tránsito no lo recibe y no cambia el conteo.

## 2. Qué acepta un grupo

Un grupo acepta texto, imágenes, video, audio, stickers, documentos, una ubicación, tarjetas de contacto y una plantilla creada en tu espacio de trabajo en cualquier categoría excepto autenticación. Dos tipos de contenido se rechazan con una [`E15052`](/docs/api/errors/E15052) `422`, antes de que el mensaje se cree o se cobre, porque WhatsApp no entrega ninguno de los dos a un chat grupal:

- **Cualquier elemento interactivo**: botones de respuesta, menús de lista, botones de enlace, carruseles, y las solicitudes de ubicación e información de contacto.
- **Una plantilla de autenticación.** Envía el código de verificación de un solo uso directamente al participante.

Una [plantilla gestionada por Bird](/docs/guides/whatsapp/templates) se envía desde un número propiedad de Bird, que nunca es el número al que está vinculado un grupo, así que dirigir una a un grupo devuelve una [`E15001`](/docs/api/errors/E15001) `422`.

El contenido de formato libre aún necesita una [ventana de servicio al cliente](/docs/knowledge-base/whatsapp/customer-service-window) abierta, y un grupo tiene la suya propia: cualquier participante que escriba al grupo abre una sola ventana de 24 horas para todo el grupo, y que esa persona te escriba fuera del grupo no la abre. Cuando la ventana expira, lo que llega al grupo es una plantilla.

## 3. Sigue la distribución

[Recupera el mensaje](/docs/api/reference/get-whatsapp-message) para ver hasta dónde ha llegado. Tres contadores reportan la distribución:

| Campo             | Qué reporta                                                                                             |
| ----------------- | ------------------------------------------------------------------------------------------------------- |
| `recipient_count` | Participantes al momento de aceptación, el denominador para los otros dos                               |
| `delivered_count` | Cuántos ha confirmado WhatsApp que el mensaje alcanzó, incluyendo a quienes solo reportaron una lectura |
| `read_count`      | Cuántos lo han abierto                                                                                  |

En un mensaje de grupo, `status` reporta el punto más avanzado que **todos** los destinatarios han alcanzado: cambia a `delivered` solo cuando `delivered_count` es igual a `recipient_count`, y permanece en `sent` mientras algunos han confirmado y otros no. Ningún mensaje de WhatsApp tiene un estado `read`, así que la lectura se refleja en `read_count` y `read_at`. `delivered_at` y `read_at` son los del primer destinatario, no los del último. `failed` y `rejected` nunca son por participante, porque hay una sola entrega a WhatsApp y una sola forma de que sea rechazada.

Un envío a un grupo al que nadie se había unido no lleva contadores en absoluto, ya que no hay denominador que reportar, así que usa `to.group_id` en lugar de los contadores para distinguir un mensaje de grupo de uno individual.

Para ver a qué participante corresponde una confirmación, [lista los eventos del mensaje](/docs/api/reference/list-whatsapp-message-events). Un envío a grupo se despliega en como máximo un `whatsapp.delivered` y como máximo un `whatsapp.read` por participante, cada uno con `recipient` que contiene el número de teléfono de esa persona, su [ID de usuario con alcance de negocio](/docs/guides/whatsapp/business-scoped-user-ids), o ambos. Ninguno está garantizado para nadie: WhatsApp omite el acuse de entrega de un participante que ya está viendo el chat, y un acuse de lectura llega solo si abre el mensaje. Cuenta lo que llega en lugar de esperar uno de cada tipo por participante, y consulta los contadores para los totales. El único evento `whatsapp.sent` no lleva `recipient`: es la única entrega a WhatsApp, que no nombra a nadie. Los [webhooks](/docs/guides/whatsapp/webhooks/message-status) `whatsapp.delivered` y `whatsapp.read` llevan el mismo campo, que es como distingues callbacks que de otro modo serían idénticos.

## 4. Lee la conversación de un grupo

Pasa `group_id` a [listar mensajes](/docs/api/reference/list-whatsapp-messages) para el hilo de un grupo, en ambas direcciones:

**TypeScript**

```typescript
for await (const msg of bird.whatsapp.list({ group_id: "wag_01krdgeqcxet5s7t44vh8rt9mg" })) {
  console.log(msg.id, msg.direction, msg.status);
}
```

Examples: [TypeScript](/es-es/documentacion/guides/whatsapp/groups/sending.ts.md) · [Python](/es-es/documentacion/guides/whatsapp/groups/sending.py.md) · [Go](/es-es/documentacion/guides/whatsapp/groups/sending.go.md) · [PHP](/es-es/documentacion/guides/whatsapp/groups/sending.php.md) · [CLI](/es-es/documentacion/guides/whatsapp/groups/sending.cli.md) · [cURL](/es-es/documentacion/guides/whatsapp/groups/sending.curl.md)

Un mensaje entrante de grupo se lee con el participante que lo escribió en `from`, y un `to` que lleva **tanto** tu número de negocio como `group_id`: el número que lo recibió, calificado por el grupo a través del cual llegó. Ni `to` ni `from` coinciden con un grupo, así que `group_id` es el único filtro que limita la lista a un solo grupo. Los mismos mensajes están en el [registro de WhatsApp](/docs/guides/whatsapp/message-log) en el dashboard.

## Costo

Un envío a grupo se cobra en los dos componentes que describe [Enviar mensajes de WhatsApp](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing), con una diferencia en cómo se tarifica cada uno. La tarifa de Bird se cobra una vez por el envío y se basa en el país del número de negocio por el que salió, porque un grupo puede abarcar varios países y no tiene un solo país de destino. La parte de Meta se acumula por participante al que el mensaje llegó, cada uno tarifado a la tarifa individual normal del país de ese participante, así que `passthrough_amount` crece a medida que llegan sus acuses. A partir del 1 de octubre de 2026, esa parte también cubre el contenido de formato libre enviado al grupo, que Meta cobra por participante alcanzado y descuenta de los 1000 mensajes de servicio gratuitos al mes del número emisor: [Cambios de precios de octubre de 2026](/docs/knowledge-base/whatsapp/october-2026-pricing-changes).

## Solución de problemas

- **`404` ([E15046](/docs/api/errors/E15046))**: El ID de grupo no corresponde a ningún grupo de este espacio de trabajo. Un grupo pertenece al espacio de trabajo que lo creó, así que un ID de otro espacio de trabajo no se encuentra aquí.
- **`409` ([E15047](/docs/api/errors/E15047))**: El grupo está pendiente, suspendido, eliminado o fallido. Solo se puede enviar a un grupo **Active**, y un grupo permanece pendiente hasta que WhatsApp lo confirma.
- **`422` ([E15018](/docs/api/errors/E15018))**: Elimina `from`. El grupo envía con el número con el que fue creado.
- **`422` ([E15052](/docs/api/errors/E15052))**: Contenido interactivo o una plantilla de autenticación. Consulta [qué acepta un grupo](#2-qué-acepta-un-grupo).
- **`422` ([E15044](/docs/api/errors/E15044))**: La ventana de servicio del grupo está cerrada. Envía una plantilla, o espera a que un participante escriba al grupo.
- **`status` atascado en `sent`**: Menos de `recipient_count` participantes han confirmado la entrega. Lee los eventos del mensaje para ver quién falta.

## Próximos pasos

- [Recibir mensajes de grupo de WhatsApp](/docs/guides/whatsapp/groups/receiving): identifica al remitente y responde al grupo
- [Gestionar grupos de WhatsApp](/docs/guides/whatsapp/groups/management): administra participantes, enlaces de invitación y solicitudes de unión
- [Webhooks de estado de mensajes](/docs/guides/whatsapp/webhooks/message-status): recibe actualizaciones de entrega de tus mensajes
- [IDs de usuario con alcance de negocio](/docs/guides/whatsapp/business-scoped-user-ids): identifica a un participante cuyo número de teléfono no tienes

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/whatsapp-api) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
