Le WordPress d'aujourd'hui, décodé pour les développeurs

Outils & workflow

« Quota exceeded » sur l’API Brevo en pleine campagne d’un client associatif

Une association a vu ses e-mails de campagne s'arrêter en pleine diffusion. Diagnostic d'un dépassement de quota Brevo et mise en place d'une file d'attente.

Par Clément Hadrot • 11 août 2024 • 4 min de lecture • Aucun commentaire
« Quota exceeded » sur l'API Brevo en pleine campagne d'un client associatif

{"code":"limit_reached","message":"Insufficient credits"}. Cette réponse est tombée en plein milieu de l’envoi d’une campagne de rentrée pour une association qui communique auprès de plusieurs milliers d’adhérents et de donateurs. Sur les 9 000 destinataires ciblés, un peu plus de la moitié avaient déjà reçu le message quand les envois se sont brutalement arrêtés, laissant l’autre moitié sans nouvelle et l’équipe de l’association dans l’incompréhension.

Ce texte reconstitue le diagnostic mené dans l’heure qui a suivi le signalement, puis la solution mise en place pour que ce type d’interruption ne se reproduise plus lors d’une future campagne, sur un compte Brevo — anciennement Sendinblue, la plateforme ayant changé de nom en mai 2023.

Symptôme : des envois qui s’arrêtent sans message clair côté WordPress

Le site utilisait le plugin officiel Brevo pour WordPress afin de synchroniser les contacts et déclencher les campagnes depuis l’interface de l’association. Côté WordPress, aucune erreur visible n’apparaissait dans le tableau de bord : les campagnes semblaient simplement rester bloquées à un pourcentage d’envoi figé, sans message d’échec explicite remonté à l’utilisatrice qui gérait la communication.

La seule trace exploitable se trouvait dans les journaux du plugin, où l’appel à l’API Brevo renvoyait un code d’erreur HTTP 402, accompagné du message Insufficient credits, correspondant à un dépassement du quota d’envoi souscrit sur l’offre en cours.

Diagnostic : un pic saisonnier jamais anticipé par l’offre souscrite

L'essentiel à retenir : Le quota se déclenche sans prévenir en cours d'envoi ; Une file d'attente absorbe les pics au lieu de les subir ; Le suivi du volume doit être proactif, pas réactif

En creusant l’historique de facturation, le compte Brevo de l’association disposait d’une offre calibrée sur son volume moyen mensuel, largement suffisante en temps normal. Le problème : la campagne de rentrée concentrait, en une seule journée, un volume d’envoi représentant à lui seul plus de 60 % du quota mensuel habituel. Rien dans la configuration ne prévenait ce dépassement avant qu’il ne survienne réellement, et aucune alerte proactive n’avait été configurée sur le compte.

Le quota Brevo se comporte comme un mur plutôt que comme une pente : les envois fonctionnent normalement jusqu’au dernier crédit disponible, puis s’arrêtent net, sans dégradation progressive qui aurait pu servir de signal d’alerte.

Correctif immédiat : mettre les envois en file d’attente plutôt que de les relancer en masse

Relancer immédiatement l’envoi des 9 000 e-mails restants, une fois le quota renouvelé manuellement en urgence auprès de Brevo, aurait recréé un pic tout aussi brutal. Nous avons donc mis en place une file d’attente côté WordPress, s’appuyant sur l’API de planification d’envoi de Brevo plutôt que sur un envoi immédiat systématique :

$batch = array_slice($remaining_contacts, 0, 500);
foreach ($batch as $contact) {
    brevo_schedule_email($contact, $campaign_id, $scheduled_at);
    $scheduled_at = strtotime('+2 minutes', $scheduled_at);
}

Ce mécanisme répartit l’envoi des contacts restants par lots de 500, espacés de deux minutes, de façon à lisser la charge sur plusieurs heures plutôt que de solliciter le quota en une seule salve. La campagne restante s’est terminée dans la soirée, sans nouvel incident.

Prévention : ce qui a changé sur le compte de l’association

Trois ajustements ont suivi cet incident :

  • Passage à une offre Brevo avec un palier de quota supérieur, calé sur le pic annuel plutôt que sur la moyenne mensuelle
  • Mise en place d’une alerte automatique quand la consommation dépasse 70 % du quota mensuel disponible
  • Systématisation de l’envoi par lots planifiés pour toute campagne dépassant 2 000 destinataires, quel que soit le contexte

Le dernier point s’est révélé le plus structurant : il transforme une pratique de secours en comportement par défaut, indépendamment du niveau de quota souscrit à un instant donné.

Un quota d’API ne prévient jamais avant de se fermer. Seule une surveillance du volume avant l’envoi peut anticiper le mur.

En résumé

Le dépassement de quota sur Brevo n’a rien d’exceptionnel dès qu’une campagne concentre un volume inhabituel d’envois en peu de temps. La solution durable n’est pas de surdimensionner systématiquement l’offre souscrite, mais de lisser mécaniquement les pics par une file d’attente, tout en gardant un œil proactif sur la consommation du quota avant qu’elle ne devienne un mur.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi