Objectif de cet article
Découvrez la fonctionnalité de code et comment créer des fonctions personnalisées qui sont exécutées directement par Klaviyo.
La fonctionnalité de code nécessite un développement personnalisé et l’équipe d’assistance de Klaviyo n’est pas en mesure d’intervenir directement pour vous aider. Si vous n’avez pas de développeur dans votre équipe et si vous ne disposez pas des compétences nécessaires pour écrire du code vous-même, vous pouvez demander l’aide d’un partenaire Klaviyo.
Avant de commencerAvant de commencer
La fonctionnalité de code fait partie de la Customer Data Platform (CDP) de Klaviyo.
La CDP de Klaviyo n’est pas incluse dans l’application marketing standard de Klaviyo, et un abonnement CDP est nécessaire pour accéder aux fonctionnalités associées. Consultez notre guide de facturation pour en savoir plus sur l’ajout de cette fonctionnalité à votre abonnement ou notre guide de démarrage si vous êtes un nouveau client.
Qu’est-ce que la fonctionnalité de code ?
La fonctionnalité de code vous permet d’exécuter des fonctions personnalisées en réponse à des événements collectés dans Klaviyo. Vous pouvez écrire vos propres fonctions JavaScript ou Python dans l’éditeur de code. Il est ensuite exécuté directement sur la plateforme.
Avec la fonctionnalité de code, vous pouvez envoyer des données à vos systèmes externes sans avoir à configurer un point de terminaison HTTP public pour recevoir des webhooks, mais aussi créer des fonctionnalités personnalisées qui sont déclenchées en réponse à des événements précis. Vous pouvez également accéder à de nombreux modules préconçus populaires pour faciliter la création de solutions personnalisées.
SujetsSujets
La fonctionnalité de code vous permet d’exécuter des fonctions personnalisées en réponse à tout événement pouvant être interrogé via l’API Get Events.
En voici quelques exemples :
- Événements liés aux e-mails (par exemple, E-mail cliqué, E-mail marqué comme spam)
- Événements liés aux SMS (par exemple, SMS Envoyé, SMS Reçu)
- Événements liés aux notifications push (par exemple, Push Reçue, Rebond de Push)
- Événements provenant d’intégrations (c’est-à-dire les événements provenant d’intégrations first-party créées par Klaviyo)
- Événements d’API (c’est-à-dire, les événements synchronisés via les API de Klaviyo)
Le codage dans Klaviyo ne prend pas en charge les événements suivants en tant que sujets :
- E-mail ouvert
- E-mail reçu
Interface de la fonctionnalité de code
Pour accéder à Code, affichez l’onglet Code sous CDP > Gestion des données > Code.
Pour créer une fonction personnalisée, sélectionnez le bouton Créer une fonction :
Vous accédez à la page Recettes, qui vous permet de sélectionner une solution préconçue à exécuter, ou une fonction Python ou Node.js vierge.
Si vous sélectionnez une recette existante, l’éditeur de code apparaît avec le code de la solution, ainsi qu’une description de la fonctionnalité.
Si vous sélectionnez une fonction vierge pour créer vos propres solutions personnalisées, la fenêtre modale Détails s’affiche afin de vous permettre de réaliser les opérations suivantes :
-
Nommer votre fonction
Nom permettant d’identifier votre fonction. -
Sélectionner le sujet de votre fonction
Événement qui déclenche l’exécution de votre code. -
Sélectionner un environnement d’exécution
Environnement d’exécution dans lequel le code s’exécute (par exemple, Python ou Node.js).
Après avoir procédé aux sélections requises et sélectionné le bouton Créer une fonction, vous accédez à une interface comportant les onglets suivants :
- Éditeur
- Test de sortie
- Journaux
Octroi des autorisations
La première fois que vous créez une fonction via la fonctionnalité de code, vous êtes invité à authentifier l’application OAuth. Cette étape est nécessaire pour que les fonctions de la fonctionnalité de code puissent accéder aux données de votre compte Klaviyo.
Une fois l’accès accordé, l’éditeur de code s’ouvre.
ÉditeurÉditeur
Dans la fonctionnalité de code, la page Éditeur est fractionnée en 3 onglets :
-
Code
L’onglet Code comporte un éditeur qui vous permet d’écrire des fonctions Python ou JavaScript. -
Modules
Les modules sont des packages tiers qui étendent les fonctionnalités de vos fonctions. -
Variables d’environnement
Les variables d’environnement sont les paires clé-valeur auxquelles votre fonction accède lorsqu’elle s’exécute.
Code
Depuis l’onglet Code, un éditeur vous permet d’écrire des fonctions Python ou JavaScript qui s’exécutent en réponse au sujet sélectionné.
Paramètres de la fonction de traitementParamètres de la fonction de traitement
Pour que Klaviyo exécute le code que vous écrivez, celui-ci doit être encapsulé dans une fonction appelée « handler » qui accepte 2 paramètres :
-
Event
Il s’agit des données associées à l’événement déclencheur au format JSON:API. Si le déclencheur n’est pas basé sur un événement (par exemple, Ajouté à la Liste), la valeur de ce paramètre sera None ou Null en fonction du langage. -
Context
Contient des métadonnées supplémentaires à propos de l’exécution de la fonction, y compris le profil associé à l’invocation de la fonction. Vous pouvez accéder à l’objet de profil en utilisant context.profile en JavaScript ou context["profile"] en Python.
Vous trouverez ci-dessous des exemples de paramètres d’événement et de contexte transmis à la fonction de traitement.
Exemple de format d’événement
{
{
"data": {
"type": "event",
"id": "7S2q9haejYG",
"attributes": {
"timestamp": 1694435729,
"event_properties": {
"MfaEnabled": false,
"IpAddress": "000.00.0.0",
"UserAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
"UserRole": "Owner",
"SessionId": "34sh0a9nh8ngnk2nfacjxmt592yx40ib",
"LoginType": "Username_password",
"current_company_id": "XXXXX",
"$event_id": "1694435729"
},
"datetime": "2023-09-11 12:35:29+00:00",
"uuid": "b0b8fe80-509f-11ee-8001-278cc529fcd3"
},
"relationships": {
"profile": {
"data": {
"type": "profile",
"id": "123456"
},
"links": {
"self": "https://a.klaviyo.com/api/events/7S2q9haejYG/relationships/profile/",
"related": "https://a.klaviyo.com/api/events/7S2q9haejYG/profile/"
}
},
"metric": {
"data": {
"type": "metric",
"id": "4Tdup6"
},
"links": {
"self": "https://a.klaviyo.com/api/events/7S2q9haejYG/relationships/metric/",
"related": "https://a.klaviyo.com/api/events/7S2q9haejYG/metric/"
}
}
},
"links": {
"self": "https://a.klaviyo.com/api/events/7S2q9haejYG/"
}
}
}
Exemple de format de contexte
{
"company_id": "XXXXX",
"trigger": {"type": "event", "uid": "123456"},
"function_id": "123456",
}
ModulesModules
L’onglet Modules propose les modules préconçus les plus populaires (c’est-à-dire des packages tiers qui étendent les capacités de vos fonctions).
Pour ajouter un module externe à utiliser dans votre code, sélectionnez le bouton Ajouter un module :
Dans la fenêtre modale qui s’affiche, vous pouvez rechercher et sélectionner le module que vous souhaitez ajouter :
Une fois le module ajouté, vous pouvez l’utiliser avec le code que vous écrivez dans Klaviyo.
Reportez-vous à la documentation native du module externe pour savoir comment l’utiliser.
Module klaviyo
Toutes les fonctions de code sont accompagnées d’un package klaviyo personnalisé qui est préinstallé dans votre environnement de code. Ce module permet à vos fonctions d’accéder aux données de votre compte Klaviyo sans avoir à fournir d’identifiants, tels qu’une clé d’API.
L’API du module klaviyo varie en fonction du langage de votre code (Python ou JavaScript).
Module klaviyo pour PythonModule klaviyo pour Python
L’API du module klaviyo préinstallé est le même que l’objet SDK Klaviyo que vous instancieriez normalement avec le module klaviyo-api pour Python. Vous pouvez considérer le module klaviyo comme un client SDK klaviyo préinstancié.
Par exemple, dans un flux de travail traditionnel, vous instancieriez d’abord un nouveau client SDK Klaviyo en transmettant une clé d’API au constructeur, puis vous utiliseriez l’objet SDK résultant.
from klaviyo_api import KlaviyoAPI
import os
def handler(event, context):
klaviyo = KlaviyoAPI(api_key=os.getenv("KLAVIYO_API_KEY"))
print(klaviyo.Metrics.get_metrics())
Avec la fonctionnalité de code, il vous suffit d’importer l’objet klaviyo et l’authentification est gérée pour vous.
import klaviyo
def handler(event, context):
print(klaviyo.Metrics.get_metrics())
Consultez les objets Klaviyo disponibles ainsi que leurs méthodes.
Module klaviyo pour JavaScriptModule klaviyo pour JavaScript
Lorsque vous utilisez le module klaviyo préinstallé dans vos fonctions JavaScript, importez les fonctionnalités Klaviyo spécifiques auxquelles vous souhaitez accéder en utilisant la syntaxe des accolades du module klaviyo. Utilisez-les ensuite comme vous le feriez normalement avec un objet API à l’aide du module JavaScript klaviyo-api.
import { Metrics } from 'klaviyo';
export default async (event, context) => {
console.log(await Metrics.getMetrics())
}
Consultez les objets Klaviyo disponibles ainsi que leurs méthodes.
Variables d’environnement
L’onglet Variables d’environnement vous permet de définir des paires clé-valeur auxquelles votre code peut se référer dans Klaviyo lorsqu’il s’exécute. Elles peuvent stocker des identifiants et des clés secrètes afin que vos fonctions puissent y accéder pendant leur exécution.
Pour ajouter une variable d’environnement, sélectionnez le bouton Ajouter une variable :
Dans la fenêtre modale qui s’affiche, vous pouvez attribuer une paire clé-valeur à votre variable d’environnement.
Une fois créées, les variables d’environnement sont répertoriées sur la page et peuvent être utilisées dans votre code.
Pour accéder à vos variables d’environnement dans votre code, utilisez os.getenv("Key") pour Python ou process.env(“Key”) pour Node.js.
Pour mettre à jour la valeur d’une variable d’environnement existante, vous devez créer une nouvelle variable avec la même clé que celle dont vous souhaitez mettre à jour la valeur.
Test de sortie
L’onglet Test de sortie dans la fonctionnalité de code vous permet de tester votre code avec des événements récents pour vérifier qu’il parvient au résultat souhaité.
Pour tester votre fonction :
- Sélectionnez le bouton Exécuter le test :
- Dans la fenêtre modale qui s’affiche, sélectionnez un événement à tester. Vous pouvez choisir parmi les 10 événements les plus récents capturés dans Klaviyo.
- Après avoir sélectionné un événement à tester, le résultat du test s’affiche :
Journaux
L’onglet Journaux montre l’état de vos fonctions de code en cours. Voici ce que vous verrez :
-
Statut
État d’avancement de l’exécution d’une fonction. -
Temps de réponse
Temps nécessaire à votre code pour s’exécuter en réponse à un événement. -
Date
Horodatage de l’exécution de la fonction.
Limites
Le code Klaviyo dispose des limites suivantes :
-
Délai d’expiration des fonctions
Les fonctions du code peuvent s’exécuter pendant 15 secondes au maximum avant d’expirer. -
Limite d’exécution des fonctions
Les fonctions du code permettent jusqu’à 25 exécutions simultanées par fonction.
Déploiement du code
Pour déployer le code que vous écrivez dans l’éditeur, définissez le statut sur Actif dans le menu déroulant.
Une fois activé, le code que vous écrivez s’exécute chaque fois que l’événement du sujet est capturé dans Klaviyo.
Lorsqu’une fonction est activée, il peut s’écouler jusqu’à 15 minutes avant que les événements ne commencent à la déclencher.
Exemple de solution
Vous trouverez ci-dessous un exemple de solution personnalisée mise en œuvre avec la fonctionnalité de code.
Dans l’exemple, les données relatives aux événements sont définies comme une propriété de profil afin d’être utilisées dans des e-mails ciblés et dans la segmentation. L’événement personnalisé Booked shoot est capturé dans Klaviyo lorsque les clients réservent une séance photo avec la marque. Les données concernant la ville de réservation et l’URL associée sont définies comme une propriété de profil sur le profil respectif.
Une propriété appelée Recent bookings est également créée pour stocker les données des 5 derniers événements Booked shoot, afin de pouvoir les consulter en boucle et y accéder dans un modèle d’e-mail.
CodeCode
Le code Python de cette solution est écrit dans l’éditeur de code et exécuté directement par Klaviyo.
Exemple de codeExemple de code
ModulesModules
Dans cet exemple, le module klaviyo intégré est utilisé. Le module klaviyo repose sur l’ajout du module klaviyo-api à la fonction. Une fois ajouté, le module klaviyo se charge de l’authentification pour vous. Aucune clé d’API n’est alors nécessaire.
Variables d’environnementVariables d’environnement
Les variables d’environnement peuvent stocker des identifiants et des clés secrètes afin que vos fonctions puissent y accéder pendant leur exécution. Pour cet exemple, la paire clé-valeur suivante est définie :
-
MAX_PROPERTIES_TO_STORE
Variable d’environnement qui définit le nombre maximal de propriétés à stocker pour la fonction d’exemple.
Tests
Lors de la création de la fonction permettant de définir les données d’événement comme propriétés de profil, l’onglet Test de sortie est utilisé pour vérifier le résultat attendu.
JournauxJournaux
Une fois la fonction créée et testée, l’onglet Journaux présente l’état de la fonction lorsqu’elle est exécutée en réponse aux événements Booked shoot.
ConclusionConclusion
Avec cette fonction de code, lorsque les clients s’inscrivent à des séances photo et déclenchent l’événement Booked shoot personnalisé, les données d’événement sont stockées sur le profil du client pour être utilisées dans la segmentation et les campagnes ciblées.
Mise en œuvre des recettesMise en œuvre des recettes
Dans la fonctionnalité de code, les recettes permettent de mettre en œuvre des solutions préconçues sans recourir à un développement personnalisé.
Pour mettre en œuvre une recette dans votre compte Klaviyo :
- Sélectionnez le bouton Créer une fonction sur la page Code.
- Choisissez la recette à mettre en œuvre dans votre compte. Vous accéderez à l’éditeur où vous pourrez voir le code de la recette sélectionnée, ainsi qu’une description de la fonction.
- Cliquez sur le bouton Sélectionner pour continuer.
- Choisissez un nom pour la fonction et le déclencheur qui provoquera son exécution. La durée d’exécution est automatiquement définie en fonction du code de la recette.
- Sélectionnez le bouton Créer une fonction.
- Une fois la fonction créée, définissez les variables d’environnement appropriées afin que la fonction dispose des données dont elle a besoin pour s’exécuter.
- La recette peut maintenant être testée et activée.
Les recettes peuvent vous obliger à mettre à jour certains champs en fonction de vos préférences d’attribution de nom et des données de vos événements. Consultez les instructions relatives à la recette pour savoir quels champs peuvent être renommés et modifiés.
Ressources complémentaires
Démarrer avec la CDP de Klaviyo
Comprendre les différents webhooks disponibles dans Klaviyo