Référence des hooks et filtres de MailerPress

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

ActionArgumentsDéclenchée quand
mailerpress_contact_createdint $contact_idUn nouveau contact est ajouté (administration, formulaires, API REST, intégrations, automatisations, webhooks entrants).
mailerpress_contact_updatedint $contact_idUn contact est modifié.
mailerpress_contact_deletedint $contact_id, string $email, string $first_name, string $last_nameUn contact est supprimé. Il n’existe plus dans la base de données : utilisez les valeurs transmises.
mailerpress_contact_tag_added
mailerpress_contact_tag_removed
int $contact_id, int $tag_idUne étiquette est ajoutée à un contact ou retirée.
mailerpress_contact_list_added
mailerpress_contact_list_removed
int $contact_id, int $list_idUn contact est ajouté à une liste ou retiré.
mailerpress_contact_custom_field_added
mailerpress_contact_custom_field_updated
int $contact_id, string $field_key, mixed $valueUn champ personnalisé reçoit une première valeur ou est modifié.
mailerpress_subscription_confirmedint $contact_idUn contact confirme son abonnement (lien de double opt-in ou confirmation de réengagement).
mailerpress_contact_unsubscribedint $contact_idUn 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_list
mailerpress_user_unsubscribed_from_list
int $contact_id, int $list_idUn visiteur coche ou décoche une liste dans le formulaire [mailerpress_my_lists].
mailerpress_list_createdint $list_idUne liste est créée.
mailerpress_tag_createdobject $tag (tag_id, name)Une étiquette est créée.
mailerpress_contacts_marked_inactiveint[] $contact_ids, array $details (threshold_date, inactive_after_days)La vérification des contacts inactifs passe des contacts en inactif.
mailerpress_inactive_contacts_reactivatedint $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.

PHP
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.

PHP
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

HookArgumentsDescription
mailerpress_campaign_created (action)int $campaign_idUne 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_idIndique 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

ActionArgumentsDéclenchée quand
mailerpress_email_openedint $contact_id, int $campaign_id, int $batch_idUne ouverture est enregistrée pour un contact connu. Elle n’est pas déclenchée en suivi anonyme.
mailerpress_email_clickedint $contact_id, int $campaign_id, string $urlUn contact connu clique sur un lien suivi. Elle n’est pas déclenchée en suivi anonyme.
mailerpress_email_bouncedint $contact_id, string $emailLa 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.

HookArgumentsDescription
mailerpress_bounce_require_recent_send (filtre)bool $enabled (true par défaut), string $espIndique 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 $daysRé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_contactsNombre 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 $espIndique si une signature valide est obligatoire pour ce service.
mailerpress_bounce_webhook_active_esps (filtre)string[] $active, string $espServices 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 $metadataUn rebond non signé est rejeté, faute d’envoi correspondant.
mailerpress_bounce_quarantined (action)string $email, string $esp, string $reason, array $metadataUn rebond non signé est mis en quarantaine car le quota horaire est atteint.

Éditeur d’e-mails et contenu

HookArgumentsDescription
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 $requestArguments 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 $requestDonné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 $parsedArguments 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 $argsRequête utilisée pour charger les compositions enregistrées.
mailerpress_patterns (filtre)WP_Post[] $patternsCompositions renvoyées à l’éditeur.
mailerpress_merge_tag_error (action)string $tag, Throwable $exceptionLa 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.

PHP
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.

PHP
// 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 :

PHP
add_filter( 'mailerpress/workflows/allowed_custom_hooks', function ( $hooks ) {
	$hooks[] = 'my_plugin_order_validated';
	return $hooks;
} );

Filtres et actions des automatisations

HookArgumentsDescription
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 $contextUn déclencheur lance une exécution d’automatisation.
mailerpress_workflow_trigger_rate_limited (action)string $trigger_key, int $user_idUne exécution n’est pas lancée à cause de la limite.
mailerpress_workflow_job_started (action)AutomationJob $job, array $contextUne exécution d’automatisation démarre.
mailerpress_workflow_step_executed (action)AutomationJob $job, Step $step, StepResult $result, array $contextUne étape est terminée.
mailerpress_workflow_job_completed (action)AutomationJob $jobUne exécution d’automatisation est terminée.
mailerpress_workflow_job_failed (action)AutomationJob $job, string $errorUne exécution d’automatisation échoue.
mailerpress_workflow_status_changed (action)int $automation_id, string $statusUne 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)

ActionArgumentsDéclenchée quand
mailerpress_webhook_receivedstring $webhook_id, array $payload, WP_REST_Request $requestUn webhook entrant activé reçoit une requête valide.
mailerpress_webhook_contact_upsertedstring $webhook_id, array $result, array $payload, WP_REST_Request $requestUn webhook entrant crée ou met à jour un contact.
mailerpress_outgoing_webhook_processedstring $event_key, array $data, array $responses, int $attemptUne 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)

FiltreArgumentsDescription
gform_mailerpress_override_empty_fieldsbool $override (true par défaut), array $form, array $entry, array $feedGravity 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_thresholdfloat $score (0.5 par défaut)Bricks Builder : score reCAPTCHA v3 minimal pour accepter l’envoi d’un formulaire MailerPress.

Imports de contacts

FiltrePar défautDescription
mailerpress_import_chunk_size500Nombre de contacts par lot d’import. MailerPress maintient la valeur entre 50 et 2 000.
mailerpress_import_parallel_chunks20Nombre 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

FiltreArgumentsDescription
mailerpress_trusted_proxiesstring[] $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_enabledbool $enabled, string $role, string $capability, string $base_capabilityIndique 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_maparray $mapRéglages disponibles dans MailerPress > Outils > Export/Import. Voir Export et import des réglages.
mailerpress_white_label_optionsarray $optionsRé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_enabledbool $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.

PHP
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.