# Notifications WooCommerce avec l’extension Honk Me

> Recevez commandes, paiements échoués, alertes de stock et formulaires sur iPhone grâce à l’extension Honk Me, et choisissez ce que dit chaque notification.

Source: https://honk-me.app/fr/guides/notifications-commandes-woocommerce

WooCommerce vous prévient des nouvelles commandes par e-mail, et ces e-mails se noient dans le reste de votre boîte. Sur leur téléphone, la plupart des e-commerçants veulent plutôt deux choses : une courte note pour chaque commande payée, et une alerte bien audible quand les paiements se mettent à échouer, avant que les clients ne renoncent.

L’extension Honk Me pour WordPress envoie les deux, sans code. Elle couvre aussi les remboursements, les alertes de stock, les nouveaux clients, les avis, les formulaires, les connexions et la santé du site, et un seul écran de réglages vous permet de choisir ce que dit chaque notification.

## Avant de commencer

- Un compte Honk. Honk est pour l’instant sur invitation : [demandez un accès](https://honk-me.app/fr/demander-un-acces).
- Un projet pour la boutique, par exemple « Boutique ».
- WordPress 6.4 ou plus récent, avec PHP 7.4 ou plus récent. WooCommerce est facultatif : sans lui, vous recevez quand même les connexions, la santé du site, les commentaires et les formulaires.

## 1. Installer l’extension

L’extension arrive bientôt dans le répertoire des extensions WordPress, où elle est en cours de validation. Une fois qu’elle y figure, ouvrez **Extensions ▸ Ajouter une extension** dans WordPress, cherchez **Honk Me**, puis cliquez sur **Installer maintenant** et sur **Activer**. D’ici là, utilisez l’une des méthodes de la partie « Sans l’extension », à la fin de ce guide.

Rien n’est envoyé tant que vous n’avez pas ajouté de clé : vous pouvez donc l’installer sans risque sur une boutique en activité.

## 2. La connecter à Honk

Dans l’app web Honk, ouvrez le projet de la boutique, puis **Clés**, et créez une clé. Copiez-la tout de suite : Honk ne l’affiche qu’une fois.

Dans WordPress, ouvrez **Réglages ▸ Honk** et collez la clé dans **Clé API**. Laissez l’URL du serveur telle quelle, sauf si vous hébergez votre propre serveur Honk, et cliquez sur **Enregistrer les modifications**.

## 3. Choisir ce que vous voulez suivre

Sous **Événements**, chaque événement a sa propre case d’activation, un niveau sur l’échelle Honk et une priorité. Les réglages par défaut sont un bon début : une commande payée est un Bip-bip, un paiement échoué un Coup de klaxon appuyé, et un produit en rupture un Long coup de klaxon.

_Les événements WooCommerce dans Réglages ▸ Honk, chacun avec sa case, son niveau et sa priorité._

Honk regroupe les répétitions : 30 paiements échoués en une heure forment un seul épisode avec un compteur, pas 30 push. Pour ce qui a un début et une fin, comme un stock faible ou une série d’échecs de connexion, vous recevez aussi un message quand tout rentre dans l’ordre.

## 4. Choisir ce que dit chaque notification

Cliquez sur **Détails** sous un événement pour voir ce que sa notification peut contenir. La notification d’une nouvelle commande indique toujours son numéro et un lien vers la commande dans WordPress. Le reste se coche : le total, le nombre d’articles, l’état, le moyen de paiement et le mode d’expédition, les trois premiers produits, ainsi que le nom, l’e-mail, le téléphone, la ville de facturation et la note du client. L’aperçu, à côté, montre comment la notification s’affichera dans Honk, et se met à jour à chaque case cochée.

_Les détails de « Nouvelle commande » : les cases à cocher et l’aperçu de la notification._

Les informations du client sont des données personnelles : elles ne sont envoyées que si **Inclure les noms et e-mails des clients** est activé, dans **Confidentialité et langue**. Tant que ce réglage est désactivé, elles apparaissent en grisé et rien de personnel n’est envoyé, quelles que soient les cases cochées. Avec Contact Form 7, WPForms et Gravity Forms, vous pouvez aussi écarter certains champs de chaque formulaire.

Cliquez sur **Enregistrer les modifications** une fois terminé.

## 5. Envoyer un test

En haut de **Réglages ▸ Honk**, cliquez sur **Envoyer une notification de test**. Le test utilise la clé saisie dans le champ, même si vous ne l’avez pas encore enregistrée, et affiche juste en dessous la réponse de Honk. Il arrive dans votre boîte de réception Honk en quelques secondes.

_La réponse à « Envoyer une notification de test » : tout fonctionne, avec l’identifiant du message._

Pour voir une vraie commande, passez-en une avec un moyen de paiement comme le paiement à la livraison. **Réglages ▸ Honk ▸ Journal d’envoi** liste chaque notification envoyée par le site, avec son état.

## Des nuits calmes pour la boutique

Une commande à 3 h du matin est une bonne nouvelle qui peut attendre. Dans l’app web Honk, ouvrez le projet de la boutique ▸ **Mes notifications** et définissez des heures calmes : vous recevrez un seul résumé le matin. Vous pouvez aussi régler votre seuil de push sur Haute : les commandes payées attendent alors le récapitulatif, mais un produit en rupture déclenche toujours un push immédiat, car un Long coup de klaxon est au moins en priorité Haute. Pour que les paiements échoués déclenchent aussi un push, réglez leur priorité sur Haute dans **Événements**.

## À propos des données clients

Avec les réglages par défaut de l’extension, les notifications ne contiennent aucune donnée personnelle : une commande apparaît sous la forme « Commande n°1234 · 84,00 € · 2 articles ». Les noms, les e-mails et le reste ne sont envoyés que si vous les activez, et seulement ceux que vous cochez. Honk ne conserve les messages que le temps prévu par votre forfait (3, 14 ou 30 jours), et uniquement pour vous les afficher. L’extension propose aussi un paragraphe pour votre politique de confidentialité, dans **Réglages ▸ Confidentialité** de WordPress.

## Sans l’extension

Pendant la validation de l’extension, ou si vous préférez ne pas en installer, deux autres méthodes fonctionnent aussi.

**Un outil d’automatisation.** WooCommerce sait envoyer chaque commande à un webhook, dans son propre format. Placez n8n, Make ou Zapier entre les deux pour garder les champs utiles et les transmettre à Honk. Avec n8n et le [nœud Honk](https://honk-me.app/fr/integrations/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
```

Dans Make ou Zapier, utilisez leur module HTTP avec les mêmes champs ; le [guide des formulaires](https://honk-me.app/fr/guides/formulaires-sur-telephone) montre ce module une fois rempli.

**Quelques lignes de code.** Placez la clé dans `wp-config.php`, pour qu’elle reste hors des exports et des sauvegardes de votre contenu :

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

Créez ensuite `wp-content/mu-plugins/honk.php` avec une petite fonction d’envoi. WordPress charge tout seul les extensions indispensables (must-use), et avec `'blocking' => false`, la validation de la commande n’attend jamais 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),
    ]);
}
```

Ajoutez les événements de commande au même fichier. Chacun a une clé d’idempotence construite à partir de la commande : un hook relancé ne notifie jamais deux fois.

```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);
```
