Une alerte envoyée soixante jours avant l’échéance d’un contrat n’a rien à voir avec un email de relance commerciale envoyé au hasard : elle repose sur une date exacte, connue et enregistrée depuis la souscription initiale. C’est cette précision qui distingue une automatisation utile d’un rappel générique que l’adhérent finit par ignorer.
Sur un espace adhérent construit sous WordPress, chaque contrat de mutuelle est représenté par un type de contenu contrat_mutuelle, avec un champ date_echeance qui fixe la date de fin de la période d’engagement en cours. Ce champ, déjà présent pour d’autres besoins de gestion, sert de base unique au déclenchement de l’alerte, sans qu’aucun nouveau champ ne soit nécessaire.
Ce que cette alerte fait, et ce qu’elle ne fait pas
Contrairement à un module de gestion contractuelle complet, cette automatisation ne calcule aucun nouveau tarif et ne modifie aucune donnée du contrat. Elle se limite strictement à informer l’adhérent qu’une échéance approche, en laissant le calcul tarifaire et la décision de renouvellement au service concerné, souvent géré par un système métier distinct de WordPress.
Mettre en place la vérification quotidienne

if ( ! wp_next_scheduled( 'wpm_verifier_echeances_mutuelle' ) ) {
wp_schedule_event( strtotime( 'today 08:00' ), 'daily', 'wpm_verifier_echeances_mutuelle' );
}
add_action( 'wpm_verifier_echeances_mutuelle', 'wpm_alerter_adherents_echeance_proche' );
function wpm_alerter_adherents_echeance_proche() {
$contrats = get_posts( array(
'post_type' => 'contrat_mutuelle',
'posts_per_page' => -1,
) );
foreach ( $contrats as $contrat ) {
$echeance = get_post_meta( $contrat->ID, 'date_echeance', true );
if ( ! $echeance ) {
continue;
}
$jours_restants = (int) ( ( strtotime( $echeance ) - current_time( 'timestamp' ) ) / DAY_IN_SECONDS );
$deja_alerte = get_post_meta( $contrat->ID, 'alerte_echeance_envoyee', true );
if ( $jours_restants <= 60 && $jours_restants > 0 && ! $deja_alerte ) {
wpm_envoyer_email_alerte_echeance( $contrat->ID );
update_post_meta( $contrat->ID, 'alerte_echeance_envoyee', 1 );
}
}
}
Le champ de garde contre les envois répétés
Sans le champ alerte_echeance_envoyee, la tâche quotidienne renverrait le même email à chaque exécution tant que l’échéance reste dans la fenêtre des soixante jours, ce qui inonderait l’adhérent de rappels identiques. Ce champ, remis à zéro uniquement lors du renouvellement effectif du contrat, garantit un envoi unique par échéance.
Le contenu de l’email d’alerte
L’email envoyé reste volontairement factuel : la date d’échéance exacte, un rappel des garanties actuellement souscrites, et un lien vers l’espace adhérent pour consulter les options de renouvellement. Aucun montant chiffré n’y figure, car ce calcul dépend de règles tarifaires gérées ailleurs :
function wpm_envoyer_email_alerte_echeance( $contrat_id ) {
$adherent_id = get_post_meta( $contrat_id, 'id_adherent', true );
$email = get_the_author_meta( 'user_email', $adherent_id );
$echeance = get_post_meta( $contrat_id, 'date_echeance', true );
$sujet = 'Votre contrat arrive à échéance';
$corps = 'Votre contrat arrive à échéance le ' . wp_date( 'd/m/Y', strtotime( $echeance ) ) . '. Consultez votre espace adhérent pour les modalités de renouvellement.';
wp_mail( $email, $sujet, $corps );
}
Réinitialiser le champ de garde au renouvellement
Quand le contrat est effectivement renouvelé, un nouveau date_echeance est enregistré, généralement un an plus tard, et le champ de garde doit être remis à zéro pour permettre une future alerte sur la nouvelle échéance :
- Un hook déclenché lors de la mise à jour du champ
date_echeanceréinitialise automatiquementalerte_echeance_envoyee. - Aucune intervention manuelle n’est nécessaire de la part de l’équipe support pour ce cycle de renouvellement.
- Le même mécanisme fonctionne quel que soit le nombre d’années restant à courir sur le contrat.
Conseil maison : une automatisation d’alerte n’a de valeur que si elle reste silencieuse une fois le message envoyé. Un champ de garde simple évite bien des plaintes d’adhérents submergés de rappels identiques.
En résumé
Contrairement à un système de gestion contractuelle complet, cette alerte se limite volontairement à une seule responsabilité : prévenir à temps, sur la base d’une date fiable, sans jamais empiéter sur le calcul tarifaire du renouvellement. Cette sobriété la rend simple à maintenir et facile à faire évoluer si les règles de délai venaient à changer.