# Postmark et wp-cli : superviser la délivrabilité d’un parc en ligne de commande

> Une commande wp-cli personnalisée qui interroge l'API Postmark pour remonter les taux de rebond de plusieurs sites WordPress, sans ouvrir un tableau de bord par projet.

- Auteur : WordPress Développement
- Publié le : 2024-03-06
- Mis à jour le : 2024-03-06
- Catégorie : Outils &amp; workflow
- URL : https://www.wpmoderne.fr/outils/postmark-wp-cli-superviser-delivrabilite-parc/

## L’essentiel

- Créer une commande wp-cli personnalisée avec WP_CLI::add_command
- interroger l'API Postmark en PHP
- seuils d'alerte adaptés à un parc multi-sites

`wp postmark:stats --domaine=exemple.fr --jours=7` : cette commande n'existe dans aucune extension du dépôt officiel, mais elle peut être écrite en une trentaine de lignes de PHP pour qui gère plusieurs sites sous Postmark et veut éviter d'ouvrir un tableau de bord différent pour chacun d'eux.

Postmark expose une API REST complète pour consulter les statistiques de livraison, mais son interface web, pensée pour un compte à la fois, devient vite un point de friction dès qu'une agence supervise plusieurs domaines d'envoi. L'idée : ramener cette information dans le terminal, au même endroit que les autres commandes d'exploitation quotidienne.

## Créer une commande wp-cli personnalisée

WP-CLI permet d'enregistrer une commande personnalisée depuis un plugin ou un fichier chargé via `wp-cli.yml`, en s'appuyant sur `WP_CLI::add_command()`. La commande a besoin d'une classe qui implémente la logique d'appel à l'API Postmark et formate le résultat pour un affichage lisible en terminal.

```
class Postmark_Stats_Command {
    public function stats( $args, $assoc_args ) {
        $token = getenv( 'POSTMARK_SERVER_TOKEN' );
        $jours = $assoc_args['jours'] ?? 7;

        $response = wp_remote_get(
            'https://api.postmarkapp.com/stats/outbound/bounces?count=100',
            array(
                'headers' => array(
                    'X-Postmark-Server-Token' => $token,
                    'Accept'                  => 'application/json',
                ),
            )
        );

        if ( is_wp_error( $response ) ) {
            WP_CLI::error( $response->get_error_message() );
        }

        $data = json_decode( wp_remote_retrieve_body( $response ), true );
        WP_CLI::log( sprintf( 'Rebonds sur %d jours : %d', $jours, $data['TotalCount'] ?? 0 ) );
    }
}
WP_CLI::add_command( 'postmark', new Postmark_Stats_Command() );
```

## Étape 1 : préparer les jetons d'API par domaine

> L'essentiel à retenir : Créer une commande wp-cli personnalisée avec WP_CLI::add_command ; interroger l'API Postmark en PHP ; seuils d'alerte adaptés à un parc multi-sites

Chaque domaine d'envoi Postmark dispose de son propre jeton de serveur. Pour couvrir un parc de plusieurs sites, la commande doit accepter un paramètre identifiant le domaine et retrouver le bon jeton, stocké dans une variable d'environnement ou un fichier de configuration séparé du dépôt de code, jamais commité.

## Étape 2 : interroger les trois métriques utiles

Trois appels à l'API suffisent pour couvrir l'essentiel de la supervision quotidienne : le nombre de rebonds (`/stats/outbound/bounces`), le taux d'ouverture agrégé (`/stats/outbound/opens`) et le nombre d'envois totaux (`/stats/outbound`). Multiplier les appels au-delà de ces trois métriques alourdit la commande sans apporter d'information réellement actionnable au quotidien.

## Étape 3 : fixer des seuils d'alerte adaptés au parc

Un taux de rebond acceptable pour un site n'a pas la même signification pour tous les projets d'un parc : un site e-commerce avec des adresses clientes ponctuelles tolère un taux plus élevé qu'une newsletter à base d'abonnés fidèles. La commande gagne à accepter un seuil configurable par domaine plutôt qu'un seuil unique appliqué à l'ensemble du parc.

- Un taux de rebond supérieur à 5 % mérite une vérification manuelle de la liste d'envoi.
- Un taux supérieur à 10 % justifie une alerte immédiate, le domaine d'envoi risquant une mise en liste noire.
- Une baisse brutale du taux d'ouverture peut signaler un problème d'authentification (SPF, DKIM) plutôt qu'un désintérêt des destinataires.

## Étape 4 : automatiser l'exécution régulière

Une fois la commande fiable, elle s'intègre à une tâche planifiée du serveur qui l'exécute chaque matin pour l'ensemble des domaines du parc, avec une sortie au format JSON via l'option native `--format=json` de WP-CLI, réutilisable par un script de notification existant.

```
wp postmark stats --domaine=exemple.fr --jours=7 --format=json
```

> Une métrique qu'on ne consulte jamais n'a aucune valeur, même si l'API qui la fournit est irréprochable.

## En résumé

Une commande wp-cli personnalisée qui interroge Postmark ramène la supervision de la délivrabilité au même endroit que le reste de l'exploitation d'un parc de sites, sans multiplier les onglets de tableau de bord. La configuration DNS de délivrabilité reste un sujet distinct, à traiter en amont : cette commande suppose que SPF, DKIM et DMARC sont déjà correctement en place sur chaque domaine.
