Aan de slag met Code
Wat je leert
Lees meer over Code en hoe je aangepaste functies maakt die rechtstreeks door Klaviyo worden uitgevoerd.
Code vereist aangepaste ontwikkeling en het supportteam van Klaviyo kan geen praktische hulp bieden. Als je geen ontwikkelaar in je team hebt en je er niet prettig bij voelt om zelf code te schrijven, overweeg dan om contact op te nemen met een Klaviyo-partner voor hulp.
Voordat je van start gaat
Advanced Klaviyo Data Platform is niet inbegrepen in Klaviyo's standaard marketingtoepassing en je hebt een abonnement nodig om toegang te krijgen tot de bijbehorende functionaliteit. Ga naar onze factureringsgids om te lezen hoe je dit abonnement kunt kopen.
Wat is code?
Met Code kun je aangepaste functies uitvoeren als reactie op gebeurtenissen die in Klaviyo worden vastgelegd. Je kunt je eigen Javascript- of Python-functies schrijven in de Code editor, en die worden daarna rechtstreeks op het platform uitgevoerd.
Met Code kun je gegevens naar je externe systemen sturen zonder dat je een openbaar HTTP-eindpunt hoeft in te stellen om webhooks te ontvangen. Ook kun je aangepaste functionaliteit bouwen die wordt getriggerd als reactie op het optreden van een gebeurtenis. Je hebt ook toegang tot vele populaire kant-en-klare modules om het ontwikkelen van aangepaste oplossingen te vergemakkelijken.
Onderwerpen
Met Code kun je aangepaste functies uitvoeren als reactie op elke gebeurtenis die je kunt opvragen via de Get Events API.
Deze omvatten:
- E-mailevents (bijv. E-mail aangeklikt, E-mail gemarkeerd als spam )
- sms-gebeurtenissen (bijv. Sms verzonden, Sms ontvangen)
- Pushmeldingsgebeurtenissen (bijv. Push ontvangen, Push gebounced)
- Events uit integraties (d.w.z. events uit first-party-integraties die door Klaviyo zijn gemaakt)
- API-events (d.w.z. events die via de API’s van Klaviyo zijn gesynchroniseerd)
Klaviyo Code ondersteunt de volgende events niet als topics:
- E-mail geopend
- E-mail ontvangen
Code-interface
Ga om toegang te krijgen tot Code naar het tabblad Code onder Advanced Klaviyo Data Platform > Data Management > Code.
Als je een aangepaste functie wilt maken, selecteer je de knop Een functie maken :
Je komt op de pagina Recipes terecht, waar je een vooraf gebouwde oplossing kunt selecteren om uit te voeren, of een lege Python- of Node.js-functie.
Als je een bestaand recept selecteert, zie je de code-editor met de code voor de oplossing, samen met een beschrijving van de functionaliteit.
Als je een lege functie selecteert zodat je je eigen aangepaste oplossingen kunt maken, verschijnt de modal Details waarin je:
- Geef je functie een naam
Een naam om je functie te identificeren. - Selecteer een onderwerp voor je functie
De gebeurtenis die de uitvoering van je code triggert. - Selecteer een runtime
De runtime-omgeving waarin de code wordt uitgevoerd (d.w.z. Python of Node.js).
Nadat je de vereiste selecties hebt gemaakt en de knop Functie maken hebt geselecteerd, kom je in een interface met de volgende tabbladen:
- Editor
- Uitvoer testen
- Logboeken
Rechten verlenen
De eerste keer dat je een functie maakt via Code, wordt je gevraagd om de Code OAuth-applicatie te authenticeren. Dit is vereist zodat je Code-functies toegang hebben tot data in je Klaviyo-account.
Zodra je toegang hebt verleend, kom je in de Code editor.
Editor
Op de pagina Editor in Code zie je dat de pagina is opgesplitst in 3 tabbladen:
- Code
Het tabblad Code heeft een editor waarin je Python- of Javascript-functies kunt schrijven. - Modules
Modules zijn pakketten van derden die functionaliteit aan je functies toevoegen. - Omgevingsvariabelen
Omgevingsvariabelen zijn de sleutel-waardeparen die je functie opent wanneer deze wordt uitgevoerd.
Code
Op het tabblad Code zie je een editor die je kunt gebruiken om Python- of Javascript-functies te schrijven die worden uitgevoerd als reactie op het geselecteerde onderwerp.
Parameters van handlerfunctie
Om Klaviyo de code die je schrijft te laten uitvoeren, moet deze in een functie met de naam "handler" worden verpakt die 2 parameters accepteert:
- Event
Bestaat uit de eventdata die aan de triggerende gebeurtenis zijn gekoppeld in JSON:API-indeling. Als de trigger niet op een event is gebaseerd (bijv. Toegevoegd aan lijst), dan is de waarde van deze parameter Geen of Null, afhankelijk van de taal. - Context
Bevat aanvullende metadata over de uitvoering van de functie, inclusief het profiel dat is gekoppeld aan de functieaanroep. Je kunt het profielobject openen via context.profile in Javascript of context["profile"] in Python.
Hieronder vind je voorbeelden van de gebeurtenis- en contextparameters die worden doorgegeven aan de handlerfunctie.
Voorbeeld van event-indeling
{
{
"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/"
}
}
} Voorbeeld van contextindeling
{
"company_id": "XXXXX",
"trigger": {"type": "event", "uid": "123456"},
"function_id": "123456",
} Modules
Op het tabblad Modules kun je kiezen uit de populairste vooraf gebouwde modules (d.w.z. pakketten van derden die mogelijkheden toevoegen aan je functies).
Als je een externe module wilt toevoegen om in je code te gebruiken, selecteer je de knop Module toevoegen:
In het modale venster dat verschijnt, kun je de module die je wilt toevoegen zoeken en selecteren:
Zodra deze is toegevoegd, kun je de module gebruiken met de code die je in Klaviyo schrijft.
Je moet de eigen documentatie van de externe module raadplegen voor informatie over hoe je deze gebruikt.
De Klaviyo-module
Alle Code-functies worden geleverd met een aangepast klaviyo -pakket dat vooraf is geïnstalleerd in je Code-omgeving. Met deze module hebben je functies toegang tot de gegevens in je Klaviyo-account zonder dat je inloggegevens hoeft op te geven, zoals een API-sleutel.
De API van de Klaviyo -module hangt af van of je code is geschreven in Python of Javascript.
Python Klaviyo module
De API van de vooraf geïnstalleerde Klaviyo -module is hetzelfde als het Klaviyo software development kit (SDK) -object dat je normaal gesproken zou instantiëren met de Python-module klaviyo-api. Je kunt de klaviyo -module zien als een vooraf geïnstantieerde klaviyo -software development kit (SDK)-client.
In een traditionele workflow zou je bijvoorbeeld eerst een nieuwe Klaviyo SDK-client initialiseren door een API-sleutel aan de constructor door te geven en vervolgens het resulterende SDK-object gebruiken.
from klaviyo_api import KlaviyoAPIimport osdef handler(event, context): klaviyo = KlaviyoAPI(api_key=os.getenv("KLAVIYO_API_KEY")) print(klaviyo.Metrics.get_metrics()) Met Code hoef je alleen het Klaviyo-object te importeren en wordt authenticatie voor je afgehandeld.
import klaviyodef handler(event, context): print(klaviyo.Metrics.get_metrics()) Bekijk de beschikbare Klaviyo-objecten en hun methoden.
Javascript Klaviyo module
Wanneer je de vooraf geïnstalleerde klaviyo -module in je Javascript-functies gebruikt, importeer je de specifieke Klaviyo-functies waartoe je toegang wilt met accolade-syntaxis vanuit de klaviyo -module. Gebruik ze daarna zoals je normaal gesproken een API-object zou gebruiken met de klaviyo-api Javascript-module.
import { Metrics } from 'klaviyo';export default async (event, context) => { console.log(await Metrics.getMetrics())} Bekijk de beschikbare Klaviyo-objecten en hun methoden.
Omgevingsvariabelen
Op het tabblad Omgevingsvariabelen kun je sleutel-waardeparen instellen waarnaar je code in Klaviyo kan verwijzen wanneer deze wordt uitgevoerd. Je kunt deze gebruiken om informatie zoals inloggegevens en geheime sleutels op te slaan, zodat je functies er tijdens het uitvoeren toegang toe hebben.
Als je een omgevingsvariabele wilt toevoegen, selecteer je de knop Variabele toevoegen:
In het modale venster dat verschijnt, kun je een sleutel-waarde-paar instellen voor je omgevingsvariabele.
Zodra ze zijn aangemaakt, worden de omgevingsvariabelen op de pagina vermeld en kunnen ze in je code worden gebruikt.
Gebruik os.getenv("Key") voor Python of process.env.KEY voor Node.js om toegang te krijgen tot je omgevingsvariabelen in je code.
Om de waarde voor een bestaande omgevingsvariabele bij te werken, moet je een nieuwe variabele maken met dezelfde sleutel waarvan je de waarde wilt bijwerken.
Uitvoer testen
Met het tabblad Testuitvoer in Code kun je je code testen met recente events om te controleren of de uitvoer zich gedraagt zoals verwacht.
Om je functie te testen:
- Selecteer de knop Test uitvoeren:
- Selecteer in de modal die verschijnt een event om mee te testen. Je kunt kiezen uit de 10 meest recente events die in Klaviyo zijn vastgelegd.
- Nadat je een event hebt geselecteerd om mee te testen, wordt de testoutput weergegeven:
Logboeken
Het tabblad Logboeken toont de status van je lopende Code-functies. Je ziet:
- Status
De voortgang van de uitvoering van een functie. - Reactietijd
De hoeveelheid tijd die je code nodig heeft om uit te voeren als reactie op een gebeurtenis. - Datum
Een tijdstempel van wanneer de functie is uitgevoerd.
Rate limits
Klaviyo-code heeft de volgende snelheidslimieten:
- Functietime-out
Functies in Code kunnen tot 15 seconden worden uitgevoerd voordat er een time-out optreedt. - Limiet voor functietarief
Functies in Code staan tot 25 gelijktijdige uitvoeringen per functie toe.
Code implementeren
Als je de code die je in de editor schrijft wilt implementeren, zet je de statusdropdown op Live.
Zodra dit live staat, wordt de code die je schrijft uitgevoerd telkens wanneer de topicgebeurtenis wordt vastgelegd in Klaviyo.
Wanneer een functie live is gezet, kan er een vertraging van maximaal 15 minuten zijn voordat gebeurtenissen de functie beginnen te activeren.
Voorbeeldoplossing
Hieronder staat een voorbeeld van een aangepaste oplossing die met code wordt geïmplementeerd.
In het voorbeeld worden gebeurtenisgegevens ingesteld als profieleigenschappen, zodat ze kunnen worden gebruikt in gerichte e-mails en in segmentatie. De aangepaste gebeurtenis Booked shoot wordt in Klaviyo vastgelegd wanneer klanten een fotoshoot bij het merk boeken, en gegevens over de boekingsstad en de bijbehorende URL worden ingesteld als profieleigenschappen op het betreffende profiel.
Er wordt ook een eigenschap met de naam Recente boekingen gemaakt, waarin gegevens worden opgeslagen van de 5 meest recente Geboekte shoot -events, zodat deze kunnen worden herhaald en gebruikt in een e-mailtemplate.
Code
De Python-code voor deze oplossing is geschreven in de Code editor en wordt rechtstreeks door Klaviyo uitgevoerd.
Voorbeeldcode
Modules
In dit voorbeeld wordt de ingebouwde module klaviyo gebruikt. De module klaviyo is afhankelijk van het toevoegen van de module klaviyo-api aan de functie. Na het toevoegen handelt de module klaviyo de authenticatie voor je af, dus er is geen API-sleutel nodig.
Omgevingsvariabelen
Je kunt omgevingsvariabelen gebruiken om informatie zoals inloggegevens en geheime sleutels op te slaan, zodat je functies er toegang toe hebben terwijl ze worden uitgevoerd. Voor dit voorbeeld wordt het volgende sleutel-waarde-paar ingesteld:
- MAX_PROPERTIES_TO_STORE
Een omgevingsvariabele die wordt gebruikt om het maximale aantal profieleigenschappen te definiëren dat voor de voorbeeldfunctie wordt opgeslagen.
Testen
Tijdens het maken van de functie om gebeurtenisgegevens als profieleigenschappen in te stellen, gebruik je het tabblad Test output om de verwachte output te verifiëren.
Logboeken
Zodra de functie is gemaakt en getest, toont het tabblad Logs de status van de gezondheid van de functie terwijl deze wordt uitgevoerd als reactie op Booked shoot -events.
Resultaat
Met deze codefunctie ingeschakeld, worden de eventgegevens opgeslagen op het klantprofiel voor gebruik in segmentatie en gerichte campagnes, zodra klanten zich aanmelden voor shoots en de aangepaste event Booked shoot activeren.
Recepten implementeren
Met Recipes in Code kun je kant-en-klare oplossingen implementeren zonder dat je aangepast maatwerk hoeft te ontwikkelen.
Om een Recipe in je Klaviyo-account te implementeren:
- Selecteer de knop Create function op de Code-pagina.
- Kies het recept dat je in je account wilt implementeren. Je komt in de editor terecht waar je de code voor het geselecteerde recept kunt zien, samen met een beschrijving van wat de functie doet.
- Klik op de knop Selecteren om door te gaan.
- Kies een naam voor de functie en de trigger die ervoor zorgt dat deze wordt uitgevoerd. De runtime wordt automatisch ingesteld op basis van de code voor het recept.
- Selecteer de knop Functie maken.
- Zodra de functie is gemaakt, stel je de relevante omgevingsvariabelen in zodat de functie de gegevens heeft die nodig zijn om te draaien.
- De Recipe kan nu worden getest en worden ingesteld op Live.
Bij recepten moet je mogelijk bepaalde velden bijwerken, zodat ze overeenkomen met je gewenste naamgevingsvoorkeuren en de gegevens in je events. Bekijk de instructies voor het recept om te zien welke velden je kunt hernoemen en bewerken.