# Avisos de pedidos de WooCommerce con Honk Me

> Instala el plugin Honk Me en WordPress, añade una clave y elige qué dice cada notificación. Pedidos, pagos fallidos, existencias y formularios en tu iPhone.

Source: https://honk-me.app/es/guias/notificaciones-pedidos-woocommerce

WooCommerce te avisa de los pedidos nuevos por correo, y esos correos se mezclan con todo lo demás. Si tienes una tienda, lo que quieres en el teléfono es otra cosa: una nota breve por cada pedido pagado y una alerta que se oiga cuando los pagos empiezan a fallar, antes de que los clientes se cansen y se vayan.

El plugin Honk Me para WordPress te envía las dos, sin código. También cubre reembolsos, alertas de existencias, clientes nuevos, valoraciones, formularios, accesos y la salud del sitio, y en una sola pantalla de ajustes eliges qué dice cada notificación.

## Antes de empezar

- Una cuenta de Honk. Por ahora, Honk funciona solo con invitación: [solicita acceso](https://honk-me.app/es/solicitar-acceso).
- Un proyecto para la tienda, por ejemplo «Tienda».
- WordPress 6.4 o posterior con PHP 7.4 o posterior. WooCommerce es opcional: sin él sigues recibiendo los avisos de accesos, salud del sitio, comentarios y formularios.

## 1. Instala el plugin

El plugin está pendiente de aprobación en el directorio de plugins de WordPress. Cuando aparezca, abre **Plugins ▸ Añadir plugin** en WordPress, busca **Honk Me** y haz clic en **Instalar ahora** y luego en **Activar**. Mientras tanto, usa una de las opciones de «Sin el plugin», al final de esta guía.

No se envía nada hasta que añadas una clave, así que puedes instalarlo en una tienda que ya esté en marcha.

## 2. Conéctalo con Honk

En la app web de Honk, abre el proyecto de la tienda, entra en **Claves** y crea una. Cópiala en ese momento: Honk solo la muestra una vez.

En WordPress, abre **Ajustes ▸ Honk** y pega la clave en **Clave API**. Deja la URL del servidor como está, salvo que tengas tu propio servidor de Honk, y haz clic en **Guardar cambios**.

## 3. Elige de qué quieres enterarte

En **Eventos**, cada evento tiene su propia casilla para activarlo, un nivel en la escala de Honk y una prioridad. Los valores predeterminados son un buen punto de partida: un pedido pagado es un Bip-bip, un pago fallido un Bocinazo fuerte y un producto agotado un Bocinazo largo.

_Los eventos de WooCommerce en Ajustes ▸ Honk, cada uno con su casilla, su nivel y su prioridad._

Honk agrupa las repeticiones, así que 30 pagos fallidos en una hora son un solo episodio con un recuento, no 30 notificaciones. Lo que empieza y termina, como un producto con pocas existencias o una racha de accesos fallidos, te envía otro aviso cuando se resuelve.

## 4. Elige qué dice cada notificación

Haz clic en **Detalles** debajo de un evento para ver qué puede decir su notificación. Un pedido nuevo siempre lleva su número y un enlace al pedido en WordPress. El resto son casillas: el total, el número de artículos, el estado, el método de pago y el de envío, los tres primeros productos, y el nombre, el correo, el teléfono, la ciudad de facturación y la nota del cliente. La vista previa, al lado, muestra cómo se verá la notificación en Honk y cambia a medida que marcas casillas.

_Los detalles de «Nuevo pedido»: las casillas y la vista previa de la notificación._

Los datos del cliente son datos personales, así que solo se envían mientras **Incluir nombres y correos electrónicos de los clientes** está activado, en **Privacidad e idioma**. Mientras esa opción está desactivada, esas casillas aparecen en gris y no sale ningún dato personal, marques lo que marques. Con Contact Form 7, WPForms y Gravity Forms también puedes quitar campos concretos de cada formulario.

Haz clic en **Guardar cambios** cuando termines.

## 5. Envía una prueba

Arriba, en **Ajustes ▸ Honk**, haz clic en **Enviar notificación de prueba**. La prueba usa la clave que haya en el campo, aunque aún no la hayas guardado, y la respuesta de Honk aparece justo debajo. La prueba llega a tu bandeja de entrada de Honk en unos segundos.

_La respuesta a «Enviar notificación de prueba»: funciona, con el ID del mensaje._

Para ver un pedido de verdad, haz uno de prueba con un método de pago como **Contra reembolso**. **Ajustes ▸ Honk ▸ Registro de notificaciones** muestra cada notificación que ha enviado el sitio, con su estado.

## Noches tranquilas para la tienda

Un pedido a las 3 de la madrugada es una buena noticia que puede esperar. En la app web de Honk, abre el proyecto de la tienda ▸ **Mis notificaciones** y configura las horas de silencio; recibirás un solo resumen por la mañana. O sube tu umbral de push a Alta: los pedidos pagados esperarán al resumen, y un producto agotado te seguirá avisando al instante, porque un Bocinazo largo tiene siempre al menos prioridad Alta. Si quieres que los pagos fallidos también te avisen al instante, pon su prioridad en Alta en **Eventos**.

## Sobre los datos de los clientes

Con los ajustes predeterminados del plugin, las notificaciones no llevan datos personales: un pedido aparece como «Pedido #1234 · 84,00 € · 2 artículos». Los nombres, los correos y lo demás solo se envían si los activas, y solo los que marques. Honk guarda los mensajes solo durante el periodo de conservación de tu plan (3, 14 o 30 días) y solo para mostrártelos. El plugin también te propone un párrafo para tu política de privacidad, en **Ajustes ▸ Privacidad** de WordPress.

## Sin el plugin

Mientras el plugin esté pendiente de aprobación, o si prefieres no instalar ningún plugin, hay otras dos formas.

**Una herramienta de automatización.** WooCommerce puede enviar cada pedido a un webhook, en su propio formato. Pon en medio n8n, Make o Zapier para elegir los campos y enviárselos a Honk. Con n8n y el [nodo de Honk](https://honk-me.app/es/integraciones/n8n):

```text
WooCommerce ▸ Settings ▸ Advanced ▸ Webhooks ▸ Add webhook
  Status:        Active
  Topic:         Order updated
  Delivery URL:  https://your-n8n.example.com/webhook/woocommerce

n8n workflow
  1. Webhook (POST /webhook/woocommerce)
  2. If: {{ $json.body.status }} is "processing"
  3. Honk → Send message
       Message:   {{ $json.body.billing.first_name }} {{ $json.body.billing.last_name }}: {{ $json.body.line_items.map(i => i.quantity + ' × ' + i.name).join(', ') }}
       Title:     New order #{{ $json.body.number }} · {{ $json.body.total }} {{ $json.body.currency }}
       Severity:  Beep-Beep (Success)
     Additional Fields
       Category:   Sales
       Group Key:  orders/{{ $json.body.id }}
     Options
       Idempotency Key: wc-{{ $json.body.id }}-paid
```

En Make o Zapier, usa su módulo HTTP con los mismos campos; la [guía de formularios](https://honk-me.app/es/guias/formularios-al-movil) muestra uno ya rellenado.

**Unas líneas de código.** Pon la clave en `wp-config.php`, donde queda fuera de las exportaciones y de las copias de seguridad de tu contenido:

```php
// wp-config.php, above the line "That's all, stop editing!"
define('HONK_KEY', 'honk_…');
```

Después crea `wp-content/mu-plugins/honk.php` con una pequeña función auxiliar. WordPress carga por sí solo los plugins imprescindibles (must-use), y `'blocking' => false` hace que el proceso de pago nunca espere a Honk:

```php
<?php
/*
 * Plugin Name: Honk notifications
 * Description: Sends store and form events to Honk (honk-me.app). Not an official Honk plugin: a starting point to adapt.
 */

// Sends one event to Honk without slowing the page down. The key comes from wp-config.php.
function honk_send(array $event, string $idempotency_key): void
{
    if (!defined('HONK_KEY')) {
        return;
    }
    // Honk accepts https links only; drop the link on an http:// development site
    if (isset($event['url']) && !str_starts_with($event['url'], 'https://')) {
        unset($event['url']);
    }
    $event['message'] = mb_strcut($event['message'], 0, 8000); // a message holds up to 8192 bytes
    wp_remote_post('https://honk-me.app/v1/messages', [
        'timeout' => 5,
        'blocking' => false, // fire and forget: checkout never waits for Honk
        'headers' => [
            'Authorization' => 'Bearer ' . HONK_KEY,
            'Content-Type' => 'application/json',
            'Idempotency-Key' => $idempotency_key,
        ],
        'body' => wp_json_encode($event),
    ]);
}
```

Añade los eventos de pedidos al mismo archivo. Cada uno lleva una clave de idempotencia basada en el pedido, así que repetir un hook nunca genera un aviso doble:

```php
// A paid order: a Beep-beep with what was bought.
add_action('woocommerce_payment_complete', function ($order_id) {
    $order = wc_get_order($order_id);
    if (!$order) {
        return;
    }
    $items = [];
    foreach ($order->get_items() as $item) {
        $items[] = $item->get_quantity() . ' × ' . $item->get_name();
    }
    honk_send([
        'title' => sprintf('New order #%s · %s %s', $order->get_order_number(), $order->get_total(), $order->get_currency()),
        'message' => $order->get_formatted_billing_full_name() . "\n" . implode("\n", $items),
        'severity' => 'beep',
        'category' => 'sales',
        'source' => 'woocommerce',
        'group_key' => 'orders/' . $order->get_id(),
        'url' => $order->get_edit_order_url(),
    ], 'wc-' . $order->get_id() . '-paid');

    // the gateway works again after a failure: close that incident
    $gateway = $order->get_payment_method();
    if (get_transient('honk_failed_' . $gateway)) {
        delete_transient('honk_failed_' . $gateway);
        honk_send([
            'title' => sprintf('Payments via %s work again', $order->get_payment_method_title()),
            'message' => sprintf('Order #%s was paid.', $order->get_order_number()),
            'event_type' => 'recovery',
            'category' => 'payments',
            'source' => 'woocommerce',
            'group_key' => 'payments/' . $gateway,
        ], 'wc-' . $order->get_id() . '-gateway-ok');
    }
});

// A failed payment: one group per payment method, so a broken gateway is one incident, not 30 pushes.
add_action('woocommerce_order_status_failed', function ($order_id, $order) {
    $gateway = $order->get_payment_method();
    set_transient('honk_failed_' . $gateway, 1, DAY_IN_SECONDS);
    honk_send([
        'title' => sprintf('Payment failed: order #%s', $order->get_order_number()),
        'message' => sprintf('%s, %s %s via %s', $order->get_formatted_billing_full_name(), $order->get_total(), $order->get_currency(), $order->get_payment_method_title()),
        'severity' => 'long',
        'event_type' => 'problem',
        'category' => 'payments',
        'source' => 'woocommerce',
        'group_key' => 'payments/' . $gateway,
        'url' => $order->get_edit_order_url(),
    ], 'wc-' . $order->get_id() . '-failed');
}, 10, 2);
```
