AMPscript avec Salesforce Marketing Cloud

Développer des compétences clés pour une stratégie marketing digital éfficace sur Salesforce Marketing Cloud

AMPscript dans Salesforce Marketing Cloud

Introduction à AMPscript

L’AMPscript est un langage de script puissant dans Salesforce Marketing Cloud (SFMC), principalement utilisé pour personnaliser le contenu dans les e-mails, les pages de destination, les messages SMS et les CloudPages. Que vous souhaitiez récupérer des détails sur les abonnés, formater des dates ou effectuer des recherches de données avancées, AMPscript peut répondre à vos besoins.

Principaux avantages d’AMPscript :

  • Personnalisation en temps réel : Utilisez les attributs des abonnés pour adapter les messages.
  • Manipulation des données : Interrogez, formatez et affichez des données à partir des Data Extensions.
  • Simplicité : L’AMPscript en ligne ou en bloc peut être facilement intégré dans les modèles d’e-mails.

Syntaxe et utilisation

AMPscript peut s’écrire de deux manières principales :

  • AMPscript en ligne : %%=Function(Param)=%%
  • AMPscript en bloc : %%[ /* Logique */ ]%%

Exemple en ligne

Hello %%=v(@firstName)=%%!
    

Exemple en bloc

%%[
   SET @firstName = AttributeValue("FirstName")
   SET @greeting = Concat("Hello ", @firstName)
]%%
%%=v(@greeting)=%%
    

AMPscript vs. SSJS

Bien que le Server-Side JavaScript (SSJS) dans SFMC offre des capacités similaires, l’AMPscript est souvent plus simple pour les recherches de données rapides et la personnalisation de contenu. Le SSJS peut être plus flexible pour une logique complexe, mais l’AMPscript a tendance à être plus rapide lors du rendu des e-mails.

Astuce : Pour des tâches purement liées aux données ou à la personnalisation, l’AMPscript est souvent plus direct. Pour un traitement lourd de JSON ou des appels d’API externes, le SSJS peut être plus adapté.

Variables et types de données

Dans AMPscript, les variables sont généralement déclarées avec la fonction SET. Les types de données sont attribués implicitement en fonction des valeurs que vous leur passez. Vous pouvez gérer les conversions avec des fonctions AMPscript spécifiques si nécessaire.

%%[
   /* Variable chaîne de caractères */
   SET @firstName = "John"

   /* Variable numérique */
   SET @score = 100

   /* Booléen */
   SET @isActive = true

   /* La gestion des dates utilise souvent des fonctions comme FormatDate() ou Now() */
]%%
    

Exemples de base

1. Personnalisation simple

%%[
SET @salutation = AttributeValue("Salutation")
SET @lname = AttributeValue("LastName")
]%%

Hello %%=v(@salutation)=%% %%=v(@lname)=%%,
    

2. Contenu conditionnel

%%[
IF @salutation == "Dr." THEN
]%%

Nous avons des offres spéciales pour les professionnels de santé !

%%[ ELSE ]%%

Découvrez nos dernières nouveautés.

%%[ ENDIF ]%%

3. Utilisation de variables de substitution

Idéal pour les espaces réservés cohérents dans votre e-mail ou CloudPage :

%%[
VAR @myCompanyName
SET @myCompanyName = "Ma Super Entreprise"
]%%

Bienvenue chez %%=v(@myCompanyName)=%% !

Fonctions de chaînes de caractères

AMPscript propose diverses fonctions de manipulation de chaînes pour formater, transformer et combiner des données textuelles. Voici les plus courantes.

Uppercase, Lowercase, ProperCase

%%[
SET @firstName = "john"
SET @upperName = UPPERCASE(@firstName) /* résultat : "JOHN" */
SET @properName = PROPERCASE(@firstName) /* résultat : "John" */

SET @lastName = "DOE"
SET @lowerName = LOWERCASE(@lastName) /* résultat : "doe" */
]%%
    

Concat

%%[
SET @fullName = Concat(@firstName, " ", @lastName)
/* Exemple de résultat : "john DOE" */
]%%
    

Length & IndexOf

%%[
SET @exampleString = "Hello SFMC!"
SET @len = Length(@exampleString) /* résultat : 11 */
SET @pos = IndexOf(@exampleString, "SFMC") /* résultat : 6 */
]%%
    

Substring

%%[
/* syntaxe substring : Substring(@string, startIndex, length) */
SET @sub = Substring(@exampleString, 7, 4)
/* résultat : "SFMC" */
]%%
    

Replace

%%[
SET @modifiedString = Replace(@exampleString, "Hello", "Hi")
/* résultat : "Hi SFMC!" */
]%%
    

Fonctions de date et d'heure

AMPscript propose plusieurs fonctions pour gérer les opérations de date et d’heure, notamment le formatage, l’analyse et la modification. Voici quelques fonctions couramment utilisées avec des exemples.

Now

Retourne la date et l’heure actuelles dans le fuseau horaire par défaut de votre compte Salesforce Marketing Cloud.

%%[
SET @currentDateTime = Now()
/* Exemple : 2025-01-17 10:30:00 */
]%%
    

DateAdd

Ajoute ou soustrait un intervalle spécifique (jours, mois, années, heures) à une date.

%%[
/*
  DateAdd(date, nombre, unités)
  unités = "Y" (année), "M" (mois), "D" (jour), "H" (heure), etc.
*/
SET @oneWeekLater = DateAdd(Now(), 7, "D")
]%%
    

DateDiff

Retourne la différence entre deux dates selon une unité de temps spécifique (jours, mois, heures, etc.).

%%[
/*
  DateDiff(date1, date2, unités)
*/
SET @daysBetween = DateDiff(@somePastDate, Now(), "D")
]%%
    

DateParse

Convertit une représentation textuelle d’une date en un objet date AMPscript. Utile si votre date est stockée dans un format non standard.

%%[
/*
  DateParse("stringDate", "formatString")
  ex : "2025-01-15", "yyyy-MM-dd"
*/
SET @strDate = "15-01-2025"       /* Exemple : format dd-MM-yyyy */
SET @parsedDate = DateParse(@strDate, "dd-MM-yyyy")
]%%
    

DatePart

Extrait une partie de la date/heure (année, mois, jour, heure, etc.) et retourne un entier.

%%[
/*
  DatePart(date, part)
  part = "Y" (année), "M" (mois), "D" (jour), "H" (heure), etc.
*/
SET @yearValue = DatePart(Now(), "Y")
SET @monthValue = DatePart(Now(), "M")
SET @dayValue = DatePart(Now(), "D")
]%%
    

FormatDate

Formate une valeur de date/heure selon un format de chaîne spécifié. Les formats courants incluent MM/dd/yyyy, yyyy-MM-dd, dd/MM/yyyy, etc.

%%[
/*
  FormatDate(dateTime, formatString, locale)
*/
SET @formattedDate = FormatDate(Now(), "MM/dd/yyyy", "en-US")
]%%
    

GetSendTime

Retourne l’heure à laquelle l’envoi a été effectué. Ceci est particulièrement utile pour la personnalisation des e-mails lorsque vous souhaitez vous référer à la date/heure d’envoi plutôt qu’à l’heure système actuelle.

%%[
SET @sendTime = GetSendTime()
]%%
    

LocalDateToSystemDate

Convertit une date/heure depuis l’heure locale du compte vers l’heure système (UTC).

%%[
/*
  LocalDateToSystemDate(localDate)
*/
SET @localDate = Now() /* supposons qu'il s'agisse de l'heure locale */
SET @systemDate = LocalDateToSystemDate(@localDate)
]%%
    

SystemDateToLocalDate

Convertit une date/heure en heure système (UTC) vers l’heure locale du compte.

%%[
/*
  SystemDateToLocalDate(systemDate)
*/
SET @utcDate = Now() /* si Now() est considéré comme l'heure système dans votre environnement SFMC */
SET @localDateTime = SystemDateToLocalDate(@utcDate)
]%%
    

Logique et conditionnels AMPscript

L’AMPscript propose des structures standard IF, ELSE, ELSEIF et CASE :

IF…ELSEIF…ELSE

%%[
IF @score > 90 THEN
  SET @grade = "A"
ELSEIF @score > 80 THEN
  SET @grade = "B"
ELSE
  SET @grade = "C or below"
ENDIF
]%%
    

Instructions CASE

%%[
SET @memberLevel = "Gold"

SET @memberDesc = CASE @memberLevel
  WHEN "Gold" THEN "Premium Tier"
  WHEN "Silver" THEN "Intermediate Tier"
  ELSE "Basic Tier"
END
]%%
    

Fonctions de recherche dans les Data Extensions

Les fonctions Lookup de l’AMPscript vous permettent de récupérer des données depuis des Data Extensions sans avoir besoin d’une requête SQL complète. Elles sont essentielles pour la personnalisation en temps réel basée sur des données externes ou de profil.

Lookup

Récupère une seule valeur à partir d’une Data Extension en se basant sur une condition :

%%[
/*
  Lookup(NomDE, champ, champCondition, valeurCondition)
*/
SET @deFieldValue = Lookup("MyDataExtension", "FieldToRetrieve", "SubscriberKey", @subscriberKey)
]%%
    

LookupRows

Récupère plusieurs lignes en fonction d’une ou plusieurs conditions :

%%[
SET @rowset = LookupRows("MyDataExtension", "Email", @emailAddress)
IF RowCount(@rowset) > 0 THEN
  SET @row = Row(@rowset,1)
  SET @firstName = Field(@row,"FirstName")
ENDIF
]%%
    

LookupOrderedRows

Récupère plusieurs lignes avec un ordre de tri :

%%[
SET @orderedSet = LookupOrderedRows(
  "OrderHistoryDE",
  5,                     /* nombre de lignes à renvoyer */
  "PurchaseDate DESC",   /* champ de tri et ordre */
  "CustomerID",          /* champ sur lequel faire la correspondance */
  @customerId
)
]%%
    

Autres fonctions de recherche

  • LookupRowsCS, LookupOrderedRowsCS – versions sensibles à la casse
  • LookupXML – renvoie les données au format XML

Fonctions HTTP et API

L’AMPscript fournit des fonctions pour effectuer des appels externes via HTTP, bien qu’elles ne soient pas aussi avancées que le SSJS pour des intégrations complexes.

HTTPGet

Effectue une requête HTTP GET et stocke la réponse :

%%[
SET @response = HTTPGet("https://api.example.com/some-endpoint")
]%%
    

HTTPPost

Effectue une requête HTTP POST :

%%[
VAR @payload, @response
SET @payload = '{"name":"John Doe","email":"john@example.com"}'
SET @response = HTTPPost("https://api.example.com/create-user","application/json", @payload)
]%%
    
Note : Les fonctions HTTP d’AMPscript sont soumises à certaines restrictions et peuvent être désactivées dans certains environnements SFMC pour des raisons de sécurité. Vérifiez toujours la configuration de votre compte.

Gestion des erreurs

L’AMPscript est généralement exécuté au moment de l’envoi ou de la publication. Si une erreur d’exécution se produit (par exemple, une fonction Lookup qui échoue ou une opération de date invalide), elle peut apparaître sous la forme d’un contenu vide ou d’un contenu par défaut. Vous pouvez gérer les erreurs visibles par l’utilisateur en vérifiant le nombre de lignes et en utilisant des conditionnels :

%%[
SET @rowset = LookupRows("SomeDE","CustomerID",@custID)
IF RowCount(@rowset) == 0 THEN
  /* Fournir un contenu de secours ou un message */
  SET @message = "Nous n'avons pas trouvé votre enregistrement."
ELSE
  SET @row = Row(@rowset,1)
  SET @message = Concat("Hello ", Field(@row,"FirstName"))
ENDIF
]%%
    

Meilleures pratiques

  • Restez simple : Si votre logique devient trop complexe, envisagez de stocker les données pré-traitées dans des Data Extensions ou d’utiliser une automatisation.
  • Utilisez l’AMPscript en bloc pour plus de clarté : Une logique complexe est plus facile à gérer dans un format bloc qu’en ligne.
  • Validez vos expressions : Utilisez la fonctionnalité d’aperçu et de test SFMC pour déceler les erreurs avant l’envoi.
  • Sécurisez les données sensibles : Limitez ou évitez l’affichage direct de données personnelles (PII) dans le code ; utilisez plutôt des espaces réservés spécifiques aux abonnés.
  • Optimisez les recherches : Réduisez le nombre d’appels Lookup/LookupRows, surtout si vous interrogez de grandes Data Extensions.