MailerPress déclenche des actions et des filtres WordPress (hooks) qui permettent aux développeurs de réagir aux événements des contacts, des campagnes et du suivi, d’ajuster des requêtes et des limites, et de connecter MailerPress à leur propre code. Cette page liste les principaux hooks publics de MailerPress et de MailerPress Pro, par thème, avec leurs arguments. Les hooks absents de cette page sont internes et peuvent changer sans préavis.
La plupart des hooks ci-dessous font partie de MailerPress (gratuit). Ceux des sections marquées « (MailerPress Pro) » ne sont déclenchés que si MailerPress Pro est actif.
Où ajouter votre code
Ajoutez vos extraits de code dans une extension personnalisée, une extension « must-use » (wp-content/mu-plugins) ou le fichier functions.php d’un thème enfant. De nombreux événements MailerPress s’exécutent en arrière-plan via Action Scheduler : chargez donc votre code à chaque requête, pas seulement dans l’administration. Quand un hook transmet plusieurs arguments, indiquez leur nombre dans add_action() ou add_filter().
Contacts et abonnements
| Action | Arguments | Déclenchée quand |
|---|---|---|
mailerpress_contact_created | int $contact_id | Un nouveau contact est ajouté (administration, formulaires, API REST, intégrations, automatisations, webhooks entrants). |
mailerpress_contact_updated | int $contact_id | Un contact est modifié. |
mailerpress_contact_deleted | int $contact_id, string $email, string $first_name, string $last_name | Un contact est supprimé. Il n’existe plus dans la base de données : utilisez les valeurs transmises. |
mailerpress_contact_tag_addedmailerpress_contact_tag_removed | int $contact_id, int $tag_id | Une étiquette est ajoutée à un contact ou retirée. |
mailerpress_contact_list_addedmailerpress_contact_list_removed | int $contact_id, int $list_id | Un contact est ajouté à une liste ou retiré. |
mailerpress_contact_custom_field_addedmailerpress_contact_custom_field_updated | int $contact_id, string $field_key, mixed $value | Un champ personnalisé reçoit une première valeur ou est modifié. |
mailerpress_subscription_confirmed | int $contact_id | Un contact confirme son abonnement (lien de double opt-in ou confirmation de réengagement). |
mailerpress_contact_unsubscribed | int $contact_id | Un contact se désabonne (lien de désabonnement, désabonnement en un clic depuis la messagerie, page de gestion de l’abonnement). |
mailerpress_user_subscribed_to_listmailerpress_user_unsubscribed_from_list | int $contact_id, int $list_id | Un visiteur coche ou décoche une liste dans le formulaire [mailerpress_my_lists]. |
mailerpress_list_created | int $list_id | Une liste est créée. |
mailerpress_tag_created | object $tag (tag_id, name) | Une étiquette est créée. |
mailerpress_contacts_marked_inactive | int[] $contact_ids, array $details (threshold_date, inactive_after_days) | La vérification des contacts inactifs passe des contacts en inactif. |
mailerpress_inactive_contacts_reactivated | int $count, array $details (threshold_date, reactivated_at) | Des contacts inactifs sont réactivés après un nouveau clic. |
Exemple : exécuter votre propre code quand un contact reçoit une étiquette précise.
add_action( 'mailerpress_contact_tag_added', function ( $contact_id, $tag_id ) {
if ( 12 !== (int) $tag_id ) {
return;
}
// Prévenir votre CRM, journaliser l’événement, etc.
error_log( sprintf( 'MailerPress contact %d received tag %d', $contact_id, $tag_id ) );
}, 10, 2 );Ajouter un contact depuis votre code
add_mailerpress_contact() crée un contact, ou le met à jour si l’adresse e-mail existe déjà. Transmettez au minimum email ; vous pouvez ajouter first_name, last_name, lists et tags (identifiants) et opt_in_source. Sans liste, le contact rejoint votre liste par défaut. Sans subscription_status, MailerPress applique votre réglage de confirmation de l’inscription : avec le double opt-in activé, le contact est en attente et reçoit l’e-mail de confirmation. La fonction renvoie un tableau avec success et contact_id, ou success et error.
function my_plugin_subscribe( $email, $first_name ) {
if ( ! function_exists( 'add_mailerpress_contact' ) ) {
return;
}
$result = add_mailerpress_contact( [
'email' => $email,
'first_name' => $first_name,
'lists' => [ 2 ],
'tags' => [ 5 ],
'opt_in_source' => 'my_plugin',
] );
if ( empty( $result['success'] ) ) {
error_log( 'MailerPress: ' . $result['error'] );
}
}Campagnes
| Hook | Arguments | Description |
|---|---|---|
mailerpress_campaign_created (action) | int $campaign_id | Une campagne est créée. |
mailerpress_campaign_scheduled (action) | int $campaign_id, array $data (batch_id, scheduled_time sous forme de timestamp Unix, total_emails) | Une campagne est planifiée pour plus tard. |
mailerpress_campaign_sent (action) | int $campaign_id, array $data (campaign_name, campaign_subject, total_emails, sent_emails, error_emails, sent_at) | Un lot d’envoi de campagne atteint le statut « envoyé ». |
mailerpress_max_revisions (filtre) | int $max (5 par défaut) | Nombre de révisions conservées par campagne. Voir Augmenter le nombre de révisions par campagne d’e-mailing. |
mailerpress_campaign_preview_noindex (filtre) | bool $noindex (true par défaut), int $campaign_id | Indique si la version en ligne d’une campagne est masquée aux moteurs de recherche. Voir Rendre les aperçus des campagnes email MailerPress indexables. |
Suivi et rebonds
| Action | Arguments | Déclenchée quand |
|---|---|---|
mailerpress_email_opened | int $contact_id, int $campaign_id, int $batch_id | Une ouverture est enregistrée pour un contact connu. Elle n’est pas déclenchée en suivi anonyme. |
mailerpress_email_clicked | int $contact_id, int $campaign_id, string $url | Un contact connu clique sur un lien suivi. Elle n’est pas déclenchée en suivi anonyme. |
mailerpress_email_bounced | int $contact_id, string $email | La vérification de la boîte de rebonds IMAP marque un contact comme « bounced » (en rebond). |
Webhooks de rebond des services d’envoi (MailerPress Pro)
MailerPress Pro reçoit les notifications de rebond (e-mails non distribuables) de votre service d’envoi d’e-mails. Une notification non signée n’est appliquée que si le site a récemment envoyé un e-mail à cette adresse via le même service, et seulement dans une limite horaire. Ces filtres ajustent cette protection.
| Hook | Arguments | Description |
|---|---|---|
mailerpress_bounce_require_recent_send (filtre) | bool $enabled (true par défaut), string $esp | Indique si un rebond non signé doit correspondre à un envoi récent. |
mailerpress_bounce_correlation_window_days (filtre) | int $days (30 par défaut) | Période pendant laquelle MailerPress recherche un envoi correspondant. |
mailerpress_bounce_has_recent_send (filtre) | bool $found, string $email, string $esp, int $days | Résultat de la recherche d’envoi, par exemple pour accepter aussi les e-mails envoyés par un autre système via le même service. |
mailerpress_bounce_quota_per_hour (filtre) | int $quota, int $total_contacts | Nombre maximal de rebonds non signés appliqués par heure. Par défaut : 50 ou 2 % de vos contacts, la valeur la plus élevée étant retenue. Au-delà, les rebonds sont mis en quarantaine et les contacts restent inchangés. |
mailerpress_bounce_webhook_rate_limit (filtre) | array $limit (par défaut limit 300, window 60) | Nombre maximal de requêtes par adresse IP et par fenêtre (en secondes) sur les points de terminaison des rebonds. |
mailerpress_bounce_webhook_signature_required (filtre) | bool $required, string $esp | Indique si une signature valide est obligatoire pour ce service. |
mailerpress_bounce_webhook_active_esps (filtre) | string[] $active, string $esp | Services autorisés à envoyer des notifications de rebond (par défaut, vos services d’envoi actifs). |
mailerpress_bounce_rejected (action) | string $email, string $esp, string $cause, array $metadata | Un rebond non signé est rejeté, faute d’envoi correspondant. |
mailerpress_bounce_quarantined (action) | string $email, string $esp, string $reason, array $metadata | Un rebond non signé est mis en quarantaine car le quota horaire est atteint. |
Éditeur d’e-mails et contenu
| Hook | Arguments | Description |
|---|---|---|
mailerpress_editor_auto_save (filtre) | int $seconds (60 par défaut) | Délai de sauvegarde automatique de l’éditeur. Voir Ajuster le délai de sauvegarde automatique dans l’éditeur d’email. |
mailerpress_post_types_public (filtre) | WP_Post_Type[] $post_types (indexés par slug) | Types de contenu proposés quand vous insérez des contenus WordPress dans un e-mail. |
mailerpress_posts_query_args (filtre) | array $args, WP_REST_Request $request | Arguments WP_Query utilisés pour lister les publications dans l’éditeur. |
mailerpress_rest_prepare_{post_type} (filtre) | WP_REST_Response $response, WP_Post $post, WP_REST_Request $request | Données d’une publication renvoyées à l’éditeur pour un type de contenu donné, par exemple mailerpress_rest_prepare_product. |
mailerpress_dynamic_post_query_args (filtre) | array $query, array $parsed | Arguments WP_Query utilisés quand les blocs de publications dynamiques sont générés au moment de l’envoi, par exemple pour l’envoi automatique de vos dernières publications. |
mailerpress_patterns_query_args (filtre) | array $args | Requête utilisée pour charger les compositions enregistrées. |
mailerpress_patterns (filtre) | WP_Post[] $patterns | Compositions renvoyées à l’éditeur. |
mailerpress_merge_tag_error (action) | string $tag, Throwable $exception | La fonction de rappel d’un merge tag personnalisé lève une erreur. Le tag est remplacé par une valeur vide et l’envoi continue. |
Pour ajouter vos propres étiquettes de personnalisation, utilisez mailerpress_register_merge_tag_group(), décrite dans Créer des merge tags personnalisés pour l’éditeur d’e-mails MailerPress.
Exemple : retirer les pages des contenus que vous pouvez insérer dans vos e-mails.
add_filter( 'mailerpress_post_types_public', function ( $post_types ) {
unset( $post_types['page'] );
return $post_types;
} );Pages d’abonnement
mailerpress_pages_rendered_content (filtre) reçoit le HTML généré par le shortcode [mailerpress_pages] et un tableau contenant action (confirm, confirm_unsubscribe, manage, reengagement_confirm ou unsubscribe), atts (attributs du shortcode) et is_preview. Renvoyez le HTML à afficher. Pour personnaliser ces pages sans code, consultez Personnaliser les pages de gestion d’abonnement et de désinscription dans MailerPress.
Automatisations
Démarrer une automatisation depuis votre code
Le déclencheur Crochet personnalisé démarre une automatisation quand une action WordPress est déclenchée. Par défaut, il accepte les noms de hook qui commencent par mailerpress_custom_. Dans les réglages du déclencheur, saisissez le Nom du crochet et choisissez le type de chaque paramètre (Adresse e-mail, ID utilisateur, ID du contact ou Données personnalisées) ; le champ Exemple de code affiche l’appel do_action() correspondant. Avec une adresse e-mail inconnue, MailerPress crée un contact en attente. L’automatisation doit être créée par un administrateur et activée.
// Type du paramètre 1 : Adresse e-mail
do_action( 'mailerpress_custom_course_completed', $user_email );Pour utiliser un hook existant dont le nom ne commence pas par mailerpress_custom_, autorisez-le avec le filtre mailerpress/workflows/allowed_custom_hooks :
add_filter( 'mailerpress/workflows/allowed_custom_hooks', function ( $hooks ) {
$hooks[] = 'my_plugin_order_validated';
return $hooks;
} );Filtres et actions des automatisations
| Hook | Arguments | Description |
|---|---|---|
mailerpress_trigger_rate_limit_max (filtre) | int $max (5 par défaut) | Nombre maximal d’exécutions qu’un déclencheur peut lancer pour une même personne pendant la fenêtre. |
mailerpress_trigger_rate_limit_window (filtre) | int $seconds (60 par défaut) | Durée de cette fenêtre. |
mailerpress_cleanup_job_retention_days (filtre) | int $days (30 par défaut) | Les exécutions terminées, échouées ou annulées plus anciennes sont supprimées par le nettoyage quotidien. |
mailerpress_cleanup_log_retention_days (filtre) | int $days (90 par défaut) | Les journaux d’automatisation plus anciens sont supprimés par le nettoyage quotidien. |
mailerpress_workflow_trigger_fired (action) | string $trigger_key, AutomationJob $job, array $context | Un déclencheur lance une exécution d’automatisation. |
mailerpress_workflow_trigger_rate_limited (action) | string $trigger_key, int $user_id | Une exécution n’est pas lancée à cause de la limite. |
mailerpress_workflow_job_started (action) | AutomationJob $job, array $context | Une exécution d’automatisation démarre. |
mailerpress_workflow_step_executed (action) | AutomationJob $job, Step $step, StepResult $result, array $context | Une étape est terminée. |
mailerpress_workflow_job_completed (action) | AutomationJob $job | Une exécution d’automatisation est terminée. |
mailerpress_workflow_job_failed (action) | AutomationJob $job, string $error | Une exécution d’automatisation échoue. |
mailerpress_workflow_status_changed (action) | int $automation_id, string $status | Une automatisation est activée ou désactivée. |
Les classes des automatisations se trouvent dans les espaces de noms MailerPress\Core\Workflows\Models (AutomationJob, Step) et MailerPress\Core\Workflows\Results (StepResult). Par exemple, $job->getAutomationId() renvoie l’identifiant de l’automatisation.
Webhooks (MailerPress Pro)
| Action | Arguments | Déclenchée quand |
|---|---|---|
mailerpress_webhook_received | string $webhook_id, array $payload, WP_REST_Request $request | Un webhook entrant activé reçoit une requête valide. |
mailerpress_webhook_contact_upserted | string $webhook_id, array $result, array $payload, WP_REST_Request $request | Un webhook entrant crée ou met à jour un contact. |
mailerpress_outgoing_webhook_processed | string $event_key, array $data, array $responses, int $attempt | Une tentative d’envoi d’un webhook sortant est terminée. $responses est indexé par URL. |
Consultez le Guide des webhooks MailerPress pour la liste des événements et le format des données.
Intégrations de formulaires (MailerPress Pro)
| Filtre | Arguments | Description |
|---|---|---|
gform_mailerpress_override_empty_fields | bool $override (true par défaut), array $form, array $entry, array $feed | Gravity Forms : indique si les champs vides du formulaire remplacent les valeurs existantes du contact. Ajoutez _{form_id} pour cibler un seul formulaire, par exemple gform_mailerpress_override_empty_fields_3. |
mailerpress/bricks/recaptcha_score_threshold | float $score (0.5 par défaut) | Bricks Builder : score reCAPTCHA v3 minimal pour accepter l’envoi d’un formulaire MailerPress. |
Imports de contacts
| Filtre | Par défaut | Description |
|---|---|---|
mailerpress_import_chunk_size | 500 | Nombre de contacts par lot d’import. MailerPress maintient la valeur entre 50 et 2 000. |
mailerpress_import_parallel_chunks | 20 | Nombre de lots d’import planifiés en parallèle. MailerPress maintient la valeur entre 5 et 100. |
Réduisez ces valeurs sur un petit hébergement mutualisé si les imports échouent par dépassement de délai.
Sécurité, réglages et administration
| Filtre | Arguments | Description |
|---|---|---|
mailerpress_trusted_proxies | string[] $proxies (vide par défaut) | Adresses IP exactes de vos proxys inverses ou répartiteurs de charge. Pour les requêtes venant de ces adresses uniquement, MailerPress lit l’IP du visiteur dans les en-têtes transférés comme X-Forwarded-For, X-Real-IP ou CF-Connecting-IP. Cette IP sert à la limite anti-spam des formulaires et aux restrictions d’IP des clés API. |
mailerpress_role_capability_enabled | bool $enabled, string $role, string $capability, string $base_capability | Indique si un rôle reçoit une capacité MailerPress lorsque MailerPress attribue ses capacités (à l’activation et après chaque mise à jour de MailerPress). Voir Permissions de MailerPress. |
mailerpress_exportable_settings_map | array $map | Réglages disponibles dans MailerPress > Outils > Export/Import. Voir Export et import des réglages. |
mailerpress_white_label_options | array $options | Réglages de marque blanche. L’écran de marque blanche génère un extrait de code prêt à l’emploi ; voir Activer la fonctionnalité marque blanche. |
mailerpress_remote_promotions_enabled | bool $enabled (true par défaut) | Indique si MailerPress récupère sur mailerpress.com des promotions à afficher dans son administration. |
Exemple : votre site est derrière un proxy à l’adresse 203.0.113.10, et vous ne voulez pas que MailerPress charge de promotions.
add_filter( 'mailerpress_trusted_proxies', function ( $proxies ) {
$proxies[] = '203.0.113.10';
return $proxies;
} );
add_filter( 'mailerpress_remote_promotions_enabled', '__return_false' );Pour gérer vos contacts et campagnes depuis une autre application, utilisez l’API REST publique de MailerPress. Pour les outils en ligne de commande, consultez Commandes WP-CLI de MailerPress.