Home
/
Blog
/
Guides
Guides

Audience anniversaire SFMC : requête SQL pour emails d'anniversaire

Construisez chaque jour une audience anniversaire SFMC en SQL : correspondance mois et jour, repli du 29 février, variante anniversaire client et automation.

Vous devez écrire à vos clients le jour de leur anniversaire, et votre audience SFMC doit se reconstruire seule chaque matin. Une requête SQL d'audience anniversaire SFMC est la façon la plus propre d'y parvenir.

En résumé : comparez le mois et le jour de la date de naissance avec la date du jour grâce à DATEPART() et GETDATE(), écrivez le résultat dans une data extension sendable en Overwrite, et planifiez le tout chaque jour dans Automation Studio avant l'envoi.

‍

Cet article vous donne la requête complète, une correction pour les anniversaires du 29 février, une variante pour les anniversaires de client et la mise en place de l'automation. Si vous préférez décrire l'audience avec vos mots, vous pouvez aussi générer du SQL SFMC à partir du langage naturel.

‍

Comment fonctionne une audience anniversaire dans SFMC

‍

Les données nécessaires

Il vous faut une data extension de clients avec une clé stable, une adresse email, un prénom et un vrai champ de type date pour la date de naissance. Dans cet article, elle s'appelle Customers_Master, avec SubscriberKey, EmailAddress, FirstName et BirthDate.

La date de naissance doit être un champ Date, pas du texte. Si elle arrive sous la forme 14/03/1988, convertissez-la dès l'import, car la logique mois et jour se dérègle dès que le format varie.

‍

La logique de correspondance

Un anniversaire n'est pas une égalité de dates. Une personne née en 1988 n'aura jamais une date de naissance égale à celle d'aujourd'hui : il faut donc comparer uniquement le mois et le jour, en ignorant l'année.

Tout tient à cela : comparez DATEPART(month, BirthDate) et DATEPART(day, BirthDate) avec les mêmes éléments de GETDATE(). Pour aller plus loin sur le calcul de dates, consultez notre guide des fonctions de date SQL dans SFMC.

‍

La requête SQL d'anniversaire pour SFMC

‍

Requête pour les anniversaires du jour

Collez-la dans une activité de requête SQL d'Automation Studio. Elle renvoie tous les clients dont c'est l'anniversaire aujourd'hui et qui ont une adresse email.

SELECT
  c.SubscriberKey,
  c.EmailAddress,
  c.FirstName,
  c.BirthDate
FROM Customers_Master c
WHERE c.EmailAddress IS NOT NULL
  AND c.BirthDate IS NOT NULL
  AND DATEPART(month, c.BirthDate) = DATEPART(month, GETDATE())
  AND DATEPART(day, c.BirthDate) = DATEPART(day, GETDATE())

Data extension cible : Birthday_Today. Clé primaire : SubscriberKey. Action sur les données : Overwrite, pour que les anniversaires de la veille disparaissent à chaque exécution.

‍

La requête ligne par ligne

  • SELECT liste les quatre champs utiles à votre email et à votre journey. Nommez toujours vos colonnes : la plateforme n'autorise pas une jointure combinée à SELECT *.
  • FROM Customers_Master c lit votre data extension de clients et lui donne l'alias c.
  • Les deux conditions IS NOT NULL écartent les lignes sans email ou sans date de naissance, qui provoqueraient des envois vides ou des correspondances imprévisibles.
  • La condition sur le mois compare le mois de naissance au mois en cours.
  • La condition sur le jour compare le jour de naissance au jour en cours. Les deux doivent être vraies pour qu'il y ait correspondance.

Laissez les commentaires hors de la requête. L'aide Salesforce indique que les commentaires ouverts, comme le double tiret, ne sont pas pris en charge dans les activités de requête, d'après la documentation SQL Reference de Salesforce.

‍

Gérer les anniversaires du 29 février en SQL SFMC

‍

Pourquoi le 29 février est oublié

Dans une année normale, le 29 février n'existe pas : la requête précédente ne retrouve donc jamais les personnes nées ce jour-là. Ces clients ratent leur offre trois années sur quatre, sans que personne ne s'en aperçoive.

La solution habituelle consiste à considérer le 28 février comme leur anniversaire dans les années non bissextiles. La requête doit donc savoir si l'année en cours est bissextile, ce que l'on teste avec l'opérateur modulo.

‍

Requête avec repli pour le 29 février

SELECT
  c.SubscriberKey,
  c.EmailAddress,
  c.FirstName,
  c.BirthDate
FROM Customers_Master c
WHERE c.EmailAddress IS NOT NULL
  AND c.BirthDate IS NOT NULL
  AND (
    (DATEPART(month, c.BirthDate) = DATEPART(month, GETDATE())
     AND DATEPART(day, c.BirthDate) = DATEPART(day, GETDATE()))
    OR
    (DATEPART(month, GETDATE()) = 2
     AND DATEPART(day, GETDATE()) = 28
     AND DATEPART(month, c.BirthDate) = 2
     AND DATEPART(day, c.BirthDate) = 29
     AND NOT (
       (DATEPART(year, GETDATE()) % 4 = 0 AND DATEPART(year, GETDATE()) % 100 <> 0)
       OR DATEPART(year, GETDATE()) % 400 = 0
     ))
  )

Le premier bloc est la correspondance classique. Le second ne s'active que le 28 février, uniquement pour les personnes nées un 29 février, et seulement si l'année en cours n'est pas bissextile. Une année est bissextile quand elle est divisible par 4, sauf les années séculaires non divisibles par 400.

Testez la logique dans Query Studio ou sur une copie de vos données avant d'automatiser. L'aide Salesforce précise que le SQL de SFMC repose sur SQL Server 2016 sans lui être identique : un test vaut mieux qu'une supposition.

‍

Créer une audience d'anniversaires de client avec le même schéma

‍

Requête pour les anniversaires d'inscription ou d'achat

Les anniversaires de client fonctionnent comme les anniversaires de naissance. Remplacez la date de naissance par une date d'inscription ou de premier achat, et ajoutez le nombre d'années pour que l'email puisse dire « trois ans avec nous ».

SELECT
  c.SubscriberKey,
  c.EmailAddress,
  c.FirstName,
  DATEDIFF(year, c.SignupDate, GETDATE()) AS AnniversaryYears
FROM Customers_Master c
WHERE c.EmailAddress IS NOT NULL
  AND c.SignupDate IS NOT NULL
  AND DATEPART(month, c.SignupDate) = DATEPART(month, GETDATE())
  AND DATEPART(day, c.SignupDate) = DATEPART(day, GETDATE())
  AND DATEDIFF(year, c.SignupDate, GETDATE()) >= 1

La dernière condition écarte les personnes inscrites cette année : leur mois et leur jour correspondent, mais une année complète ne s'est pas encore écoulée. Data extension cible : Anniversary_Today, clé primaire SubscriberKey, Overwrite.

‍

Cas limites à vérifier

  • Les dates fictives comme 1900-01-01 dans le champ de naissance créent de fausses correspondances : excluez-les ou nettoyez la source.
  • Les valeurs nulles et les dates futures doivent être filtrées avant d'arriver dans l'email.
  • La date du serveur renvoyée par GETDATE() n'est pas forcément la date locale de votre audience : décidez quel fuseau définit « aujourd'hui » et testez autour de minuit.
  • Les doublons dans la source déclenchent deux emails d'anniversaire. Dédoublonnez toujours la source avant de construire l'audience.

‍

Automatiser l'audience anniversaire dans Automation Studio

‍

Réponse rapide : la checklist de mise en place

ParamètreValeur
Data extension sourceCustomers_Master (avec un champ Date pour BirthDate)
Data extension cibleBirthday_Today, sendable, relation d'abonné sur SubscriberKey
Clé primaireSubscriberKey
Action sur les donnéesOverwrite
PlanificationQuotidienne, avant votre fenêtre d'envoi
Étape suivanteActivité d'envoi ou entrée dans Journey Builder
  1. Créez la data extension cible sendable avec les quatre champs de la requête.
  2. Créez une activité de requête SQL, collez la requête qui gère le 29 février, et choisissez la cible avec l'action Overwrite.
  3. Créez une automation planifiée et ajoutez la requête en première étape.
  4. Ajoutez une activité d'envoi d'email en deuxième étape, ou démarrez un journey à partir de la data extension cible.
  5. Lancez l'automation une fois à la main et vérifiez le nombre de lignes avant d'activer la planification.

Si vous hésitez sur l'action à choisir, lisez notre comparatif Overwrite, Update ou Append. Pour les anniversaires, Overwrite est presque toujours le bon choix, car l'audience n'est valable qu'une journée.

‍

Alimenter Journey Builder

Si vous préférez un journey à un envoi direct, utilisez la data extension cible comme source d'entrée. L'aide Salesforce indique que la source d'entrée doit être une data extension sendable, et qu'une planification Automation Studio peut la piloter si l'automation contient une activité de requête qui modifie cette data extension.

Notre guide sur la source d'entrée Journey Builder détaille la mise en place, y compris le choix entre l'évaluation de tous les enregistrements ou des seuls nouveaux.

‍

Questions fréquentes

‍

Comment trouver les anniversaires du jour en SQL SFMC ?

Comparez le mois et le jour du champ de date de naissance avec ceux de GETDATE() grâce à DATEPART(). Ne comparez pas des dates complètes, car l'année de naissance ne correspond jamais à l'année en cours.

‍

Comment inclure les anniversaires du 29 février ?

Ajoutez une seconde condition qui s'active le 28 février des années non bissextiles et sélectionne les personnes nées un 29 février. Utilisez l'opérateur modulo pour savoir si l'année en cours est bissextile.

‍

Faut-il utiliser Overwrite ou Append pour une data extension d'anniversaires ?

Utilisez Overwrite. Une audience d'anniversaires n'est valable que le jour où elle est construite : la cible doit être vidée et remplie à chaque exécution, sans accumuler d'anciennes lignes.

‍

Peut-on envoyer l'email d'anniversaire quelques jours à l'avance ?

Oui. Remplacez GETDATE() par DATEADD(day, 3, GETDATE()) dans les conditions de mois et de jour pour viser les anniversaires dans trois jours. Attention aux fins de mois et au 29 février quand vous décalez la date.

‍

Créez cette audience en quelques secondes avec QAiry

‍

Les audiences d'anniversaire illustrent bien un SQL simple dans son principe mais délicat dans le détail : la règle du 29 février, les contrôles de valeurs nulles et les paramètres de la cible. QAiry transforme une demande en langage naturel en SQL SFMC et en data extensions prêts pour la production, installé comme une application dans votre propre SFMC.

Pour le voir à l'œuvre sur vos données, installez QAiry gratuitement ou regardez une démo produit.

Share this article
QAiry for SFMC

Skip the SQL. Build segments by chatting.

QAiry turns plain English requests into Salesforce Marketing Cloud audience segments and data extensions — no SQL, no IT ticket, no waiting.

Built for SFMC · ISV Partner · GDPR-ready