Démarrer avec Salesforce Commerce Cloud
Objectif de cet article
Découvrez comment intégrer Salesforce Commerce Cloud à Klaviyo. L’intégration de la cartouche et de l’API Klaviyo permet aux sites web utilisant Salesforce Commerce Cloud (anciennement Demandware) de se connecter rapidement et d’envoyer à Klaviyo des données en temps réel et historiques. Lorsque vous intégrez Klaviyo à Salesforce Commerce Cloud (SFCC), Klaviyo commence à suivre en temps réel les actions effectuées par les utilisateurs, comme la navigation sur le site web, le suivi des recherches, la consultation des produits, la consultation des catégories, l’ajout d’articles au panier, le passage en caisse et la commande.
L’intégration de SFCC avec Klaviyo se fait en 3 étapes :
- Installation de la cartouche Klaviyo dans SFCC.
- Ajout de codes d’activation à SFCC.
- Activer l’intégration SFCC OCAPI dans Klaviyo.
Avant de commencer
Klaviyo s’intègre aux sites SFCC basés sur le contrôleur Site Genesis (SG) et sur l’architecture Storefront Reference Architecture (SFRA). Chaque framework nécessite une configuration de cartouche et des extraits de code légèrement différents, décrits ci-dessous.
Utilisez-vous une cartouche Klaviyo SFCC d’une version antérieure à la 23.7.0 ? La version 23.7.0 et ultérieures incluent un certain nombre de fonctionnalités supplémentaires, une installation prête à l’emploi plus complète et des améliorations liées à l’expérience des développeurs. Si vous souhaitez effectuer une mise à niveau, lisez Comment mettre à niveau votre cartouche Salesforce Commerce Cloud.
Afin d’utiliser notre cartouche version 23.7.0 (ou toute version ultérieure), nous vous recommandons de mettre à jour votre mode de compatibilité SFCC vers la version 21.7 ou ultérieure.
Si vous souhaitez commencer par intégrer votre environnement de développement, vous pouvez créer un compte Klaviyo lié à l’aide de la méthode décrite dans cet article et connecter votre environnement de développement à ce compte. Lors de la configuration du compte, nous vous recommandons d’inclure le mot « Dev » ou « Staging » dans le nom de l’entreprise que vous utilisez afin de mieux différencier les comptes lors de la connexion.
Il est également recommandé d’ajouter les adresses IP de Klaviyo à la liste d’autorisation de votre fournisseur de pare-feu afin de réduire au minimum les problèmes d’authentification et de configuration. Pour plus de détails, consultez Comment ajouter à la liste d’autorisation les adresses IP de trafic d’intégrations Klaviyo.
Configurer les cartouches Klaviyo
Télécharger les cartouches
Vous trouverez la fiche de notre application sur le Salesforce AppExchange. Sur AppExchange, vous pouvez en savoir plus sur Klaviyo et cliquer sur Obtenir maintenant pour être redirigé vers Github, où nos cartridges sont disponibles dans un fichier zip à télécharger. Si votre site est de type SFRA, téléchargez le fichier zip KlaviyoSFRA et s’il est de type Site Genesis, téléchargez le fichier zip KlaviyoSG.
Vous devrez configurer 2 cartridges, tous deux inclus dans le fichier zip que vous avez téléchargé. Ces cartridges incluent :
- int_klaviyo ou int_klaviyo_sfra : une cartouche spécifique au site ; int_klaviyo est destiné aux sites Web basés sur Site Genesis, et int_klaviyo_sfra est destiné aux sites Web basés sur SFRA.
- int_klaviyo_core : pour les deux types d’infrastructures, contenant des fonctionnalités de base se recoupant en partie.
Importer les cartouches
La première étape consiste à importer les cartridges dans Visual Studio Code ou Eclipse afin qu’ils soient disponibles pour être associés à votre instance SFCC.
Dans VS Code
- Copiez et collez la cartouche int_klaviyo_core.
- Copiez les dossiers int_klaviyo (Site Genesis) ou int_klaviyo_sfra (SFRA) dans la base de code, au même niveau que vos autres dossiers de cartouches.
Dans Eclipse
- Accédez à Administration > Import > General > Existing Projects into Workspace.
- Importez le répertoire int_klaviyo_core à l’aide de l’assistant d’importation.
- Sélectionnez l’instance SFCC à laquelle connecter la cartouche.
- Sélectionnez Propriétés.
- Sélectionnez Références du projet.
- Vérifiez dans la cartouche int_klaviyo_core.
- Répétez les étapes 2 à 6 pour l’autre cartouche spécifique à votre framework (soit int_klaviyo, soit int_klaviyo_sfra).
Ajoutez les cartouches au chemin d’accès des cartouches
Une fois les cartouches importées, elles doivent être ajoutées à la liste des cartouches utilisées par votre site à l’aide du gestionnaire de SFCC.
- Accédez à Administration > Sites > Manage Sites.
- Sélectionnez votre site.
- Sélectionnez l’onglet Paramètres.
- Au début du chemin d’accès de la cartouche, dans le champ de saisie intitulé Cartouches, ajoutez les noms des cartouches Klaviyo importées, en plaçant la cartouche de base en dernier (int_klaviyo:int_klaviyo_core ou int_klaviyo_sfra:int_klaviyo_core).
- Cliquez sur Appliquer.
Une fois que vous avez cliqué sur Appliquer, vous devriez maintenant voir les 2 cartouches au début du champ intitulé Chemin de la cartouche en vigueur.
Ajouter des services
Après avoir importé les cartouches et les avoir ajoutées au chemin de cartouche du site, vous devez ajouter Klaviyo Service pour activer la configuration des paramètres de la cartouche. À la racine du fichier zip des cartouches Klaviyo, se trouve un autre fichier zip appelé metadata.zip. Les instructions suivantes feront référence à ce fichier zip.
- Accédez à Administration > Développement du site > Importation et exportation de site > Services.
- Téléchargez, puis importez le fichier metadata.zip.
- Lorsque vous êtes invité à confirmer si vous souhaitez importer l’archive sélectionnée, sélectionnez OK.
- Vous devriez maintenant voir l’importation en cours d’exécution dans la section Statut vers le bas de la page.
- Vous aurez désormais accès à une page de préférences dans Outils marchand > Préférences du site > Préférences personnalisées > Klaviyo.
À partir de là, vous pouvez gérer les paramètres suivants :
- Klaviyo activé
doit être défini sur « Oui » pour activer la cartouche. - Clé d’API privée Klaviyo
Une clé d’API privée Klaviyo. Assurez-vous que la clé d’API privée Klaviyo que vous utilisez pour ces intégrations s’est vu accorder un accès complet. - Compte Klaviyo
Votre clé d’API publique Klaviyo, ou ID de site. - Étiqueter les événements comme SFCC
Si vous choisissez d’étiqueter les événements comme SFCC, vous aurez accès à des flux prédéfinis dans Klaviyo utilisant les données SFCC. Une limite actuelle de l’étiquetage des événements est que, si vous choisissez de les étiqueter, vous n’aurez pas accès aux recommandations Viewed Product ou Added to Cart dans les flux de produits Klaviyo.- Si vous avez précédemment installé une version de cartouche antérieure à 23.7.0 et que vous effectuez maintenant une mise à niveau vers la version 23.7.0 ou ultérieure, définissez sur Non. Les intégrations créées avant le 13.07.2023 (c.-à-d., les versions de cartouche antérieures à 23.7.0) génèrent des indicateurs qui ne sont pas étiquetés comme SFCC. Si vous avez utilisé une version antérieure à 23.7.0 par le passé, ce paramètre tient compte des anciennes conventions de dénomination afin d’éviter une discontinuité des données d’indicateur dans votre compte.
- Envoyer l’événement Ajouté au panier en tant que « Ajouter au panier »
Si vous avez déjà installé une version de cartridge antérieure à 23.7.0 et que vous effectuez une mise à niveau vers la version 23.7.0 ou ultérieure, définissez sur Oui. Sinon, définissez sur Non. Ce paramètre empêche la discontinuité des données d’indicateur dans votre compte. - Sélecteurs de champs d’e-mail Klaviyo Email et Sélecteur de champ d’e-mail de paiement
Veuillez consulter la section ci-dessous pour obtenir des informations détaillées sur la configuration de ces 2 champs. - Type d’image
Le type d’image du produit que vous souhaitez utiliser dans les données d’événement envoyées à Klaviyo. Si vous ne savez pas quel type d’image définir, accédez à Merchant tools > Products and Catalogs > Products, cliquez sur un produit et déterminez le type de vue que vous souhaitez utiliser en fonction de ce qui est disponible (par exemple : large, medium, small, hi-res). - ID de liste d’e-mails marketing
Vous pouvez collecter des abonnés à l’e-mail lors du paiement et les synchroniser avec une liste Klaviyo. Ce paramètre correspond à l’ID de la liste dans Klaviyo à laquelle vous souhaitez ajouter des abonnés aux e-mails. Découvrez comment trouver un ID de liste dans Klaviyo. Pour collecter des abonnés à l’e-mail lors du paiement, vous devrez également ajouter un extrait de case à cocher, décrit dans une section ultérieure. - ID de liste SMS
Vous pouvez collecter des abonnés SMS au moment du paiement et les synchroniser avec une liste Klaviyo. Ce paramètre correspond à l’ID de liste Klaviyo auquel vous souhaitez ajouter des abonnés SMS. Découvrez comment trouver l’ID d’une liste dans Klaviyo. Si vous collectez à la fois des abonnés aux SMS et aux e-mails, choisissez une liste différente pour chaque canal. Cela permet de s’assurer que le consentement est toujours attribué au bon canal. Pour recueillir des abonnés SMS au moment du passage en caisse, vous aurez besoin d’autres prérequis, ainsi que d’un extrait de code de case à cocher, qui sont décrits dans une section ultérieure.
- Le fichier metadata.zip créera également un nouveau service dans SFCC. En accédant à Administration > Operations > Services, vous devriez maintenant voir 2 nouvelles entrées sous l’onglet Services appelées KlaviyoEventService et KlaviyoSubscribeProfilesService, chacune avec ses entrées de profil et d’identifiants respectives.
Configuration des sélecteurs de champ d’e-mail Klaviyo Email et du sélecteur de champ d’e-mail de paiement
Ces préférences sont essentielles pour que Klaviyo puisse identifier et effectuer le tracking des visiteurs du site. Si Klaviyo n’identifie pas un visiteur, aucun événement ne sera suivi pour ce visiteur. Une fois l’intégration terminée, vous pouvez apprendre à tester votre configuration du sélecteur de champ Klaviyo Email et du champ d’e-mail de paiement dans la section Tester votre configuration SFCC ci-dessous.
Sélecteurs de champ d’e-mail de Klaviyo Email
La préférence de site Sélecteurs de champ Klaviyo Email est utilisée pour cibler tous les champs de saisie d’e-mail et de numéro de téléphone sur le site (à l’exception du champ de saisie d’e-mail situé dans le paiement, traité ci-dessous). Nous identifions ces champs via des sélecteurs CSS standard, chacun étant ajouté individuellement à la préférence de site (qui est un « ensemble de chaînes », permettant de saisir plusieurs valeurs de chaîne une par une). Tout sélecteur complexe pouvant être utilisé dans une feuille de style standard pour cibler un élément spécifique peut être utilisé, par exemple #dwfrm_login div.username input.input-text est acceptable, tout comme les sélecteurs pouvant cibler plusieurs éléments sur le site en fonction d’attributs partagés, par exemple input[type=email]. Veillez à éviter de cibler des entrées via des ID générés de manière dynamique — un cas très courant dans SiteGen —, car ces ID changent en fonction du chargement de la page et échoueront donc (p. ex., #dwfrm_login_username_d0fignzngiyq).
Notez que les champs ajoutés au DOM après le chargement de la page peuvent tout de même être ciblés. Cela inclut, par exemple, un champ d’adresse e-mail inséré dans une fenêtre modale après un appel AJAX, ou un champ injecté dans le DOM par des JavaScripts tiers.
Notez également que les champs de numéro de téléphone à eux seuls peuvent ne pas permettre à Klaviyo d’identifier pleinement l’utilisateur, selon vos paramètres SMS dans votre compte Klaviyo (si les SMS sont activés et que vous avez un numéro d’envoi associé au pays du numéro de téléphone saisi, le navigateur sera identifié). Ainsi, l’ajout de sélecteurs CSS pour cibler les champs de numéro de téléphone peut être considéré comme « agréable à avoir » ou « si nécessaire », tandis que leur ajout pour les champs d’e-mail doit être considéré comme essentiel.
Sélecteur de champ d’e-mail de paiement
Le champ de collecte d’e-mail lors du paiement est un cas particulier et dispose donc de sa propre préférence de site pour le ciblage. Le principe fonctionne exactement de la même manière que la préférence de site Klaviyo Email Field Selectors : saisissez simplement un seul sélecteur CSS qui cible le champ d’adresse e-mail dans le flux de paiement de votre site, qu’il apparaisse au début, à la fin ou au milieu du paiement.
Il est essentiel de configurer correctement cette préférence de site pour cibler le champ de collecte des adresses e-mail lors du paiement afin de suivre correctement l’événement Started Checkout ; c’est pourquoi il est fortement recommandé de tester et de vérifier que les événements Started Checkout s’affichent dans Klaviyo après qu’une adresse e-mail a été saisie dans le champ de collecte des adresses e-mail lors du paiement.
Notez également que le champ d’e-mail de paiement ciblé par la préférence de site Checkout Email Field Selector sera automatiquement connecté pour identifier l’utilisateur, en plus de déclencher l’événement Started Checkout (c.-à-d. qu’il n’est pas nécessaire d’inclure le sélecteur CSS du champ d’e-mail de paiement à la fois dans les préférences de site Klaviyo Email Field Selectors et Checkout Email Field Selector).
Ajouter des extraits de code de configuration
La dernière partie de la configuration de la cartouche consiste à ajouter les extraits de code aux fichiers de modèle de votre site afin que la cartouche puisse communiquer avec le site. Ces étapes étant très différentes pour les infrastructures Site Genesis (SG) et Storefront Reference Architecture (SFRA), veillez à suivre les instructions appropriées à votre configuration.
Configuration de l’extrait Storefront Reference Architecture (SFRA)
Ajoutez le code suivant en bas de votre fichier pageFooter.isml :
<isinclude template="klaviyo/klaviyoFooter"/> Vous avez maintenant terminé la configuration du snippet pour votre boutique SFRA.
Configuration de l’extrait de code Site Genesis (SG)
- Pour ajouter le fichier KlaviyoFooter.isml au pied de page global : ajoutez le code suivant en bas de votre fichier footer.isml (ou de tout modèle similaire chargé près du bas de chaque page).
<isinclude template="klaviyo/klaviyoFooter"/> - Pour ajouter des snippets pour l’identification des utilisateurs côté serveur : ajoutez le snippet suivant à vos contrôleurs Account-Show et Cart-Show, n’importe où avant l’appel au rendu de leurs modèles respectifs (c.-à-d. app.getView(...)).
// KLAVIYO
var klaviyoUtils = require('*/cartridge/scripts/klaviyo/utils'), klid;
if(klaviyoUtils.klaviyoEnabled &&
!klaviyoUtils.getKlaviyoExchangeID()){
klid = klaviyoUtils.getProfileInfo();
}
// END KLAVIYO - Ensuite, vous mettrez à jour l’appel app.getView(...) pour inclure klid en tant que variable pdict.
- Dans votre contrôleur Account-Show :
- Dans votre contrôleur Account-Show :
app.getView({downloadAvailable: true, klid: klid}).render('account/accountoverview');
// KLAVIYO: added 'klid: klid' - Dans votre contrôleur Cart-Show :
app.getView('Cart', {cart: app.getModel('Cart').get(),RegistrationStatus: false,klid: klid // KLAVIYO: added 'klid: klid'}).render('checkout/cart/cart');
- Pour ajouter l’extrait de code Added To Cart au contrôleur Cart-AddProduct : ajoutez l’extrait de code suivant à votre contrôleur Cart-AddProduct, n’importe où avant l’appel visant à afficher le modèle (c’est-à-dire, app.getView(...)).
/* Klaviyo Added to Cart event tracking */
var BasketMgr = require('dw/order/BasketMgr');
var klaviyoUtils = require('*/cartridge/scripts/klaviyo/utils');
var addedToCartData = require('*/cartridge/scripts/klaviyo/eventData/addedToCart');
if(klaviyoUtils.klaviyoEnabled){
var exchangeID = klaviyoUtils.getKlaviyoExchangeID();
var dataObj, serviceCallResult, currentBasket;
var isKlDebugOn = request.getHttpReferer().includes('kldebug=true') ? true
: false;
if (exchangeID) {
currentBasket = BasketMgr.getCurrentBasket();
if (currentBasket && currentBasket.getProductLineItems().toArray().length)
{
dataObj = addedToCartData.getData(currentBasket);
serviceCallResult = klaviyoUtils.trackEvent(exchangeID, dataObj, klaviyoUtils.EVENT_NAMES.addedToCart,
false);
if (isKlDebugOn) {
var klDebugData = klaviyoUtils.prepareDebugData(dataObj);
var serviceCallData = klaviyoUtils.prepareDebugData(serviceCallResult);
var siteGenKlDebutData = `<input type="hidden" name="siteGenKlDebutData"
id="siteGenKlDebutData" value="${klDebugData}"/>`;
var siteGenServiceCallData = `<input type="hidden" name="siteGenServiceCallData"
id="siteGenServiceCallData" value="${serviceCallData}"/>`;
response.writer.print(siteGenKlDebutData);
response.writer.print(siteGenServiceCallData);
}
}
}
}
/* END Klaviyo Added to Cart event tracking */ - Extraits Started Checkout : lorsque vous ajoutez des extraits Klaviyo à des contrôleurs de paiement pour suivre les événements Started Checkout , il est important de garder à l’esprit ce qui suit :
- L’objectif de l’ajout de ces extraits de code est de vérifier si une adresse e-mail a été associée à l’objet Basket dans le flux de paiement et, lorsqu’elle l’est, de déclencher l’événement Started Checkout . Il est important de capturer l’association d’une adresse e-mail au panier le plus tôt possible dans le flux de paiement.
- En raison de la personnalisation du paiement en fonction du site, il n’est pas possible pour Klaviyo de définir précisément quel contrôleur sera le premier à recevoir un objet Basket auquel est associée une adresse e-mail.
- Nous vous recommandons d’ajouter les extrait de code à toutes les principales routes déclenchées lors du passage en caisse. Si vous êtes en mesure d’utiliser le débogueur pour identifier précisément le moment où l’adresse e-mail est associée au panier dans votre flux de passage en caisse, n’hésitez pas à ajouter les extraits uniquement à cette route, mais testez minutieusement pour vous assurer que tous les chemins possibles du passage en caisse (invité, connecté, connexion pendant le passage en caisse, etc.) déclenchent le code.
- L’extrait de code pour le premier itinéraire atteint lors du paiement (généralement COCustomer-Start) se trouve ci-dessous. Insérez-le n’importe où avant l’appel pour générer le modèle (c’est-à-dire, app.getView(...)). Notez la principale différence dans cet extrait de code — passer le premier argument de la méthode KLCheckoutHelpers.startedCheckoutHelper à true au lieu de false — par rapport aux autres extraits de code de paiement (mis en évidence ci-dessous). Notez que dans l’extrait de code ci-dessous, la méthode KLCheckoutHelpers.startedCheckoutHelper est définie sur true au lieu de false (comme dans les autres extraits de code de paiement). C’est essentiel pour indiquer au code que nous avons un nouvel événement Started Checkout à suivre.
/* Klaviyo Started Checkout event tracking */
var KLCheckoutHelpers = require('*/cartridge/scripts/klaviyo/checkoutHelpers');
var customerEmail = KLCheckoutHelpers.getEmailFromBasket();
var KLTplVars = KLCheckoutHelpers.startedCheckoutHelper(true, customerEmail);
if (KLTplVars.klDebugData || KLTplVars.serviceCallData) {
app.getView({
klDebugData: KLTplVars.klDebugData,
serviceCallData: KLTplVars.serviceCallData
}).render('klaviyo/klaviyoDebug');
}
/* END Klaviyo Started Checkout event tracking */ - Ensuite, mettez à jour l’appel app.getView(...) pour inclure klid en tant que variable pdict :
app.getView({
ContinueURL: URLUtils.https('COCustomer-LoginForm').append('scope', 'checkout'),
klid: KLTplVars.klid, // KLAVIYO: added 'klid: klid'
}).render('checkout/checkoutlogin'); - Les extraits de code suivants doivent être ajoutés au premier itinéraire qui se déclenche après qu’une adresse e-mail a été associée à l’objet Basket. Si vous n’êtes pas sûr ou si vous souhaitez simplement assurer vos arrières, nous vous recommandons d’ajouter cet extrait de code à tous les itinéraires suivants : comme pour les extraits de code ci-dessus, ajoutez cet extrait de code n’importe où avant l’appel pour afficher le modèle, ou avant les appels à des contrôleurs ultérieurs (exemple depuis COBilling-Save : app.getController(‘COSummary’).Start()).
- COShipping-Start
- COBilling-PublicStart
- COBilling-Save
- COPlaceOrder-Start
/* Klaviyo Started Checkout event tracking */
var KLCheckoutHelpers = require('*/cartridge/scripts/klaviyo/checkoutHelpers');
var customerEmail = KLCheckoutHelpers.getEmailFromBasket();
var KLTplVars = KLCheckoutHelpers.startedCheckoutHelper(false, customerEmail);
if (KLTplVars.klDebugData || KLTplVars.serviceCallData) {
app.getView({
klDebugData: KLTplVars.klDebugData,
serviceCallData: KLTplVars.serviceCallData
}).render('klaviyo/klaviyoDebug');
}
/* END Klaviyo Started Checkout event tracking */ - Pour les routes qui appellent directement des modèles (par exemple, COShipping-Start), mettez à jour l’appel app.getView(...) pour inclure klid en tant que variable pdict. Voici un exemple pour la route COShipping-Start :
app.getView({
ContinueURL: URLUtils.https('COShipping-SingleShipping'),
Basket: cart.object,
HomeDeliveries: homeDeliveries,
klid: KLTplVars.klid, // KLAVIYO: added 'klid: klid'
}).render('checkout/shipping/singleshipping'); - Pour ajouter l’extrait Order Confirmation au contrôleur COSummary-ShowConfirmation : ajoutez l’extrait suivant à votre contrôleur COSummary-ShowConfirmation, n’importe où avant l’appel à rendre le modèle.
/* Klaviyo Order Confirmation event tracking */
var klaviyoUtils = require('*/cartridge/scripts/klaviyo/utils');
var orderConfirmationData = require('*/cartridge/scripts/klaviyo/eventData/orderConfirmation');
var Logger = require('dw/system/Logger');
if (klaviyoUtils.klaviyoEnabled){
session.privacy.klaviyoCheckoutTracked = false;
var exchangeID = klaviyoUtils.getKlaviyoExchangeID();
var dataObj, serviceCallResult;
if (order && order.customerEmail) {
// check to see if the status is new or created
if (order.status == dw.order.Order.ORDER_STATUS_NEW || order.status == dw.order.Order.ORDER_STATUS_OPEN)
{
dataObj = orderConfirmationData.getData(order, exchangeID);
serviceCallResult = klaviyoUtils.trackEvent(exchangeID, dataObj, klaviyoUtils.EVENT_NAMES.orderConfirmation,
order.customerEmail);
}
if('KLEmailSubscribe' in session.custom || 'KLSmsSubscribe' in session.custom)
{
var email = order.customerEmail;
var phone = order.defaultShipment.shippingAddress.phone;
var e164PhoneRegex = new RegExp(/^\+[1-9]\d{1,14}$/);
if (phone) {
// NOTE: Klaviyo only accepts phone numbers that include + and the country code
at the start (ex for US: +16465551212)
// in order to successfully get users subscribed to SMS list you must collect
the country code in your order phone number field!
phone = '+' + phone.replace(/[^a-z0-9]/gi, '');
if(!e164PhoneRegex.test(phone)) {
if (session.custom.KLSmsSubscribe) {
var logger = Logger.getLogger('Klaviyo', 'Klaviyo.core: Order-Confirm');
logger.error(`SMS Subscription requested by user, but an invalid phone number
was provided. Phone number: ${phone}`);
}
phone = null;
}
}
if (email || phone) {
klaviyoUtils.subscribeUser(email, phone);
}
}
}
}
/* END Klaviyo Order Confirmation event tracking */ Vous avez maintenant terminé la configuration des snippets pour votre boutique Site Genesis.
Ajouter des extraits de code de la case à cocher pour le consentement sur la page de commande (SG et SFRA)
Veuillez noter les prérequis suivants pour synchroniser le consentement SMS lors du passage de commande vers Klaviyo :
- Activer les SMS dans Klaviyo et configurer des numéros d’envoi.
- Le champ du numéro de téléphone sur votre formulaire de paiement doit prendre en charge un code pays.
Pour recueillir le consentement aux e-mails et SMS sur la page de commande, vous devez inclure des extrait de code afin que les cases à cocher de consentement apparaissent à l’endroit souhaité, en plus de configurer les paramètres d’identifiant de liste mentionnés dans la section Ajouter des services ci-dessus.
Par exemple, pour que ces extraits s’affichent lors du paiement, ils peuvent être placés dans le modèle shipmentCard.isml (app_storefront_base) dans SFRA ou dans le modèle billing.isml (app_storefront_core) dans SiteGen.
Vous trouverez ci-dessous les snippets ISML pour Site Genesis et SFRA ; ils peuvent être placés n’importe où dans le flux de paiement, selon ce qui convient le mieux à votre site. Notez que, pour que le consentement au moment du paiement fonctionne correctement sur Site Genesis, vous devez avoir inclus le snippet de confirmation de commande référencé dans la section Ajouter des snippets de configuration ci-dessus.
Les extraits ci-dessous supposent que votre langage d'acceptation pour les e-mails et les SMS est contenu dans un ensemble de ressources appelé "checkout". Vous devrez remplacer `votre.email.subscribe.resource.string.here` et `votre.sms.subscribe.resource.string.here` avec les touches correspondant respectivement à votre langue d'inscription par courriel et par SMS. Cette langue apparaîtra à côté de la case à cocher.
Par exemple, votre texte d’opt-in peut ressembler à ceci :
- E-mail
S'abonner pour recevoir les annonces par e-mail - SMS
S’abonner aux alertes par SMS. En cochant cette case et en saisissant votre numéro de téléphone ci-dessus, vous acceptez de recevoir des SMS à caractère commercial (tels que [des codes de réduction] et [des rappels de panier abandonné]) de la part de [nom de l’entreprise]. Ces messages seront envoyés au numéro indiqué et sont susceptibles d’être générés par un système automatisé. Le consentement n’est pas une condition d’achat. Des frais pour l’envoi de messages et de données peuvent vous être facturés. La fréquence des messages varie. Vous pouvez vous désabonner à tout moment en répondant STOP ou en cliquant sur le lien de désabonnement (le cas échéant) dans l’un de nos messages. Veuillez consulter notre politique de confidentialité [lien] et nos conditions d’utilisation [lien].
<isset name="KLEmailSubscribed" value="${(session.custom.KLEmailSubscribe
== true) ? 'checked' : ''}" scope="page" />
<isset name="KLSmsSubscribed" value="${(session.custom.KLSmsSubscribe == true)
? 'checked' : ''}" scope="page" />
<input type="checkbox" id="KLEmailSubscribe" ${KLEmailSubscribed} /> ${Resource.msg('your.email.subscribe.resource.string.here',
'checkout', null)} <br />
<input type="checkbox" id="KLSmsSubscribe" ${KLSmsSubscribed} /> ${Resource.msg('your.sms.subscribe.resource.string.here',
'checkout', null)} Activer l’intégration de l’API Open Commerce dans Klaviyo
Points de terminaison
Afin d’intégrer SFCC pour le catalogue de produits et les données de commande historiques/en cours, Klaviyo utilise quatre points de terminaison OCAPI :
- /order_search
Synchronise les données historiques des commandes avec Klaviyo synchronise les événements de commande en cours toutes les 60 minutes. Les événements Produit commandé et Commande passée synchroniseront des données supplémentaires pour la segmentation et le filtrage des flux, et sont idéaux pour une personnalisation améliorée qui n'est pas disponible à partir de l'événement Confirmation de la commande. Pour les e-mails de confirmation de commande en temps réel, utilisez l'événement Confirmation de commande de la cartouche. - /sites
Vous permet de sélectionner le site à partir duquel Klaviyo synchronise les données lors de la configuration de votre intégration. - /product_search
Connecte votre catalogue à Klaviyo pour activer des fonctionnalités telles que les recommandations de produits dans les e-mails. - /products/*/variations
Permet de synchroniser les variantes avec Klaviyo afin d’activer des fonctionnalités telles que les flux de retour en stock, de stock faible et de baisse de prix.
Configuration côté SFCC
Avant de pouvoir communiquer avec l’OCAPI de SFCC, certaines autorisations et certains paramètres doivent être configurés dans SFCC.
Veuillez noter que, bien que l’intégration Klaviyo nécessite des autorisations POST pour order_search et product_search, nous ne publions en réalité pas de données sur SFCC ; cela est dû à la conception de l’OCAPI de SFCC.
- Accédez à https://account.demandware.com/dw/account/APIAdmin et ajoutez un client API pour Klaviyo. L’ID client API et le mot de passe seront requis pour générer le jeton bearer pour OCAPI.
- Une fois le client API ajouté, accédez à Administration > Développement du site > Paramètres de l’API Open Commerce dans le gestionnaire d’entreprise SFCC.
- Ajoutez les extraits de code suivants, en remplaçant la version de l’API et l’ID client. Nous prenons en charge les versions de l’API 19.5 et ultérieures, ainsi que 18.8. Remplacez CLIENT_ID par l’ID client d’API généré lors de la configuration du client d’API à l’étape précédente (cela devrait ressembler à quelque chose comme "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"). Si les paramètres existent déjà pour ces API, vous n’aurez peut-être qu’à ajouter les sections mises en évidence ci-dessous au tableau JSON clients existant.
- Ajoutez le JSON suivant sous le type Shop et le contexte Global (pour toute l’organisation), en remplaçant SHOP_API_VERSION par la version de votre API Shop OCAPI, puis cliquez sur Enregistrer.
Une fois ajoutés, les paramètres devraient ressembler à ceci :
- Ajoutez le JSON suivant sous le type Shop et le contexte Global (pour toute l’organisation), en remplaçant SHOP_API_VERSION par la version de votre API Shop OCAPI, puis cliquez sur Enregistrer.
{
"_v":"SHOP_API_VERSION",
"clients":[
{
"client_id":"CLIENT_ID",
"resources":[
{
"resource_id":"/order_search",
"methods":["post"],
"read_attributes":"(**)",
"write_attributes":"(**)"
}
]
}
]
} - Ajoutez le JSON suivant sous le type Data et le contexte Global (organization-wide), en remplaçant DATA_API_VERSION par la version de votre API de données OCAPI, puis cliquez sur Enregistrer.
Une fois ajoutés, les paramètres devraient ressembler à ceci :
{
"_v":"DATA_API_VERSION",
"clients":[
{
"client_id":"CLIENT_ID",
"resources":[
{
"resource_id":"/product_search",
"methods":["post"],
"read_attributes":"(**)",
"write_attributes":"(**)"
},
{
"resource_id":"/sites",
"methods":["get"],
"read_attributes":"(**)",
},
{
"resource_id":"/products/*/variations",
"methods":["get"],
"read_attributes":"(**)",
}
]
}
]
} Configuration côté Klaviyo
- Dans Klaviyo, sélectionnez intégrations > Ajouter des intégrations.
- Recherchez Salesforce Commerce Cloud et cliquez sur la carte, puis sur Installer.
- Cliquez sur Connecter à Salesforce Commerce Cloud sur la landing page.
- Sur la page suivante, renseignez les informations suivantes :
- URL de la boutique
Le domaine de votre site web (par exemple, example.com ou dev03-na01-example.demandware.net). - Jeton d’authentification
Créez unjeton d’authentification pour cette intégration, qui sera utilisé pour demander un jeton porteur. Le jeton d’authentification est généré en encodant en base 64 l’ID client et le mot de passe joints par un deux-points (par exemple, xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:password). - Version de l’API de données
La version de votre API de données pour laquelle vous avez ajouté l’accès à l’étape de configuration côté SFCC (par exemple, v19_10). - Version de l’API Shop
La version de votre API Shop à laquelle vous avez ajouté l’accès à l’étape de configuration côté SFCC (par exemple, v19_10). - ID du catalogue
L’identifiant du catalogue SFCC à synchroniser avec Klaviyo (par exemple, storefront-catalog-en). Vous pouvez trouver l’ID du catalogue dans Salesforce Business Manager, sous Outils du marchand > Produits et catalogues > Catalogues.
- URL de la boutique
- Une fois ces identifiants saisis, cliquez sur le lien Récupérer la liste des sites pour récupérer une liste des sites sur votre instance SFCC.
- Une fois les sites récupérés, sélectionnez le ou les sites à intégrer à ce compte, puis cliquez sur Terminer la configuration. Votre intégration devrait désormais commencer à synchroniser vos données de commandes, de catalogue et de clients.
Tester votre intégration SFCC
Pour tester la configuration de votre cartouche, rendez-vous sur votre site web et suivez ces instructions :
- Cookiez-vous en ajoutant le paramètre d’URL utm_email (votre adresse e-mail) dans votre barre d’adresse. Par exemple : https://www.example.com/?utm_email=your@email.com.
- Recherchez votre catalogue.
- Afficher une page de catégorie.
- Consultez une page produit.
- Ajoutez un article à votre panier.
- Passez une commande test.
- Accédez à Analytics > indicateurs dans Klaviyo, puis recherchez des indicateurs provenant de Salesforce Commerce Cloud.
Tester les sélecteurs de champs Klaviyo Email
Pour tester qu’un champ d’e-mail donné a été correctement ciblé et identifie correctement l’utilisateur auprès de Klaviyo :
- Ouvrez une fenêtre de navigateur en mode navigation privée.
- Dans la console du développeur, saisissez la commande suivante et appuyez sur Entrée :
klaviyo.isIdentified();
Cela devrait produire la sortie suivante :Promise {<fulfilled>: false} - Saisissez une adresse e-mail dans le champ ciblé, puis appuyez sur la touche Tab pour déplacer le focus vers n’importe quel autre élément de la page.
- Revenez à la console développeur et saisissez à nouveau
klaviyo.isIdentified();. Cela devrait produire la sortie suivante :Promise {<fulfilled>: true} - Vous pouvez vérifier que Klaviyo reçoit bien des appels Identify en accédant à Analytics > indicateur dans Klaviyo et en trouvant le fil d’activité des événements Active on Site, où vous devriez voir les adresses e-mail que vous avez saisies dans la liste.
Tester le sélecteur de champ d’e-mail de paiement
Pour tester que le champ de collecte d’e-mail lors du paiement déclenche correctement l’événement Started Checkout :
- Ajoutez un ou plusieurs produits au panier, puis lancez le paiement.
- Lors du passage en caisse, saisissez une adresse e-mail dans le champ ciblé, puis appuyez sur la touche Tab pour déplacer le focus vers un autre élément de la page.
- Vous pouvez vérifier une deuxième fois que Klaviyo reçoit bien des appels Identify en accédant à Analyse > Indicateur dans Klaviyo et en trouvant le flux d’activité des événements Started Checkout, où vous devriez voir que votre événement récent a été suivi.
Résultat
Vous avez maintenant intégré Salesforce Commerce Cloud à Klaviyo et testé votre intégration.