Oracle Crowdtwist
Oracle Crowdtwist est une solution de fidélisation client native dans le cloud qui permet aux marques d’offrir des expériences clients personnalisées. Leur solution propose plus de 100 parcours d’engagement prêts à l’emploi, ce qui permet aux marketeurs d’obtenir rapidement une vue plus complète du client.
La fonctionnalité Data Push d’Oracle Crowdtwist permet de transmettre les métadonnées d’un utilisateur ou d’un événement à chaque fois qu’une mise à jour se produit dans la plateforme de Crowdtwist.
Ce guide explique comment intégrer les flux Live Push du profil utilisateur, de l’activité utilisateur et de l’échange de récompenses utilisateur d’Oracle Crowdtwist dans votre environnement Braze. Deux types de Data Push supplémentaires sont disponibles mais ne sont pas explicitement traités dans cette documentation ; leur configuration suit les mêmes principes que ceux décrits ci-dessous.
-
Live Push Profil utilisateur : comprend la création de nouveaux profils et la mise à jour des profils existants.
-
Live Push Activité utilisateur : comprend des données sur l’achèvement des activités des utilisateurs.
-
Live Push Échange de récompenses utilisateur : comprend des données sur l’échange de récompenses par les utilisateurs.
En utilisant un modèle de Transformation des données Braze, vous pouvez filtrer les éléments du Data Push qui ne sont pas pertinents pour Braze, et attribuer les valeurs nécessaires dans Braze afin qu’elles puissent être exploitées par les « destinations » disponibles.
Par exemple, utilisez un Data Push pour transmettre à Braze des événements personnalisés et des attributs personnalisés pertinents, comme lorsqu’un utilisateur change de niveau de fidélité ou échange une récompense. Vous pouvez également l’utiliser pour enregistrer des attributs personnalisés dans Braze dès que ces données sont mises à jour dans le profil utilisateur d’un membre, comme le solde de points d’un utilisateur.
Conditions préalables
| Condition | Description |
|---|---|
| Compte Oracle Crowdtwist | Un compte Oracle Crowdtwist est nécessaire pour profiter de ce partenariat. |
| Endpoint de Transformation des données Braze | Cette intégration repose sur l’outil de Transformation des données de Braze. Lorsque vous créez une Transformation des données, Braze génère un endpoint unique que vous pouvez ajouter comme destination pour le Data Push de Crowdtwist. |
Intégration
Braze et Oracle Crowdtwist ont créé des modèles de Transformation des données pour aider nos clients à développer leurs propres transformations de données qui exploitent les événements Profil utilisateur, Échange de récompenses utilisateur et Activité utilisateur.
Étape 1 : Créer une Transformation des données à partir du modèle Oracle Crowdtwist
Naviguez vers Paramètres des données > Transformation des données > Créer des transformations > Utiliser un modèle et sélectionnez le modèle « BRAZE <> CROWDTWIST » de votre choix.
Vous trouverez quatre modèles : un pour transformer les événements Profil utilisateur, un pour l’Activité utilisateur, un pour l’Échange de récompenses utilisateur, et un modèle principal qui utilise une logique conditionnelle pour s’appliquer à divers événements Data Push.
Comme le montre la documentation d’Oracle Crowdtwist sur le Data Push, les objets Data Push contiennent des métadonnées différentes, de sorte que chacun nécessite son propre code de transformation pour créer les objets Braze appropriés. Le modèle principal illustre comment configurer une seule Transformation des données pour accepter chacun des trois types d’objets et créer une sortie appropriée avec les valeurs de chaque objet.
Étape 2 : Mettre à jour et tester le modèle
Vous trouverez ci-dessous les modèles annotés. Le corps de ces modèles est conçu pour s’appliquer à la destination /users/track. Les annotations sont marquées par le début de ligne // et le texte vert, et vous pouvez les supprimer sans affecter le fonctionnement du code de transformation.
La transformation utilise JavaScript, qui crée un objet appelé « brazecall ». C’est dans cet objet que vous créez le corps de la requête envoyé à un endpoint de la REST API de Braze. Pour obtenir des conseils sur les structures requises pour les requêtes vers ces destinations, consultez les liens dans la section « destinations ».

Remarquez que les « valeurs » de chaque « clé » commencent par payload.. Le payload représente l’objet de données reçu d’Oracle Crowdtwist. Utilisez la notation JavaScript par points pour choisir les données qui doivent alimenter les éléments de votre objet Braze. Par exemple, lorsque vous voyez external_id: payload.thirdPartyId, cela signifie que l’ID externe de Braze est défini par la valeur third_party_id stockée dans Oracle Crowdtwist. Pour plus d’informations sur le schéma ou la composition des objets provenant d’Oracle Crowdtwist, consultez la documentation d’Oracle.

Utilisez les objets envoyés par Oracle Crowdtwist pour créer des utilisateurs dans Braze. En incluant la clé update_existing_only avec la valeur false, si un objet d’attribut ou d’événement comprend un identifiant qui n’existe pas dans Braze, Braze crée un profil utilisateur avec les attributs inclus dans l’objet d’événement ou d’attribut. Si vous préférez qu’Oracle Crowdtwist ne mette à jour que les profils qui existent déjà dans Braze, définissez cet attribut sur true dans chaque objet d’attribut ou d’événement.
Modèles de Transformation des données
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
let brazecall = {
"attributes": [
{
//You must include an appropriate identifier for your attribute or event object from data available in Oracle Crowdtwist. This could be an external ID, Braze ID, user alias, phone, or email address for attribute or event objects.
"external_id": payload.thirdPartyId,
"email": payload.emailAddress,
// **Important** To allow Oracle Crowdtwist events to create users in Braze, set the value of "_update_existing_only" to false. Otherwise, set this value to true in your event and attribute objects.
"_update_existing_only": false,
"crowdtwist_loyalty_points": payload.redeemablePoints,
//In this example, the "tierInfo" object from Crowdtwist is transformed into a Braze Nested Custom Attribute. Use the "_merge_objects" value to avoid duplications in a data point efficient manner.
//The "tierinfo_current_level" attribute is a flat Braze custom attribute, while "tierInfo" below is a nested object mirroring the Crowdtwist payload; the difference in capitalization is intentional.
"tierinfo_current_level": payload.tierInfo.currentLevel,
"_merge_objects" : true,
"tierInfo" : {
"resetDate": payload.tierInfo.resetDate,
"dateReached":payload.tierInfo.dateReached,
"scoreNeededToReach": payload.tierInfo.scoreNeededToReach,
"nextLevel":{
"minValue":payload.tierInfo.nextLevel.minValue,
"maxValue":payload.tierInfo.nextLevel.maxValue,
"title":payload.tierInfo.nextLevel.title
}
}
}
]
,
//Below we show how to create both custom attributes and events from a single Crowdtwist User Profile object.
"events": [
{
"external_id": payload.thirdPartyId,
"email": payload.emailAddress,
"name": "assignedByEvent",
//Below we can see how to write a timestamp in your object, which is a required value for some objects, like the Event Object.
"time": new Date().toISOString(),
"properties": {
"assigned_by_event": payload.tierInfo.assignedByEvent,
"date_assigned": payload.tierInfo.dateAssigned
},
"_update_existing_only": false
}
]
};
// After the /users/track request is assigned to brazecall, return brazecall to create an output.
return brazecall;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
let brazecall = {
"events": [
{
"external_id": payload.thirdPartyId,
"_update_existing_only": false,
"activityId": payload.activityId,
"name": payload.activityName,
"time": new Date().toISOString(),
"properties": {
"description": payload.description,
"date_assigned": payload.dateAwarded
}
}
]
};
return brazecall;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let brazecall = {
"attributes": [
{
"external_id": payload.thirdPartyId,
//A user redemption event may not have a third party id, in which case you can instead provide the opportunity to include a user alias.
"user_alias": { "alias_name" : "crowdtwist_redemption_username", "alias_label" : payload.userName},
"_update_existing_only": false,
"redeemed_coupon": payload.couponCode,
"total_points_redeemed": payload.totalPointsRedeemed
}
]
}
return brazecall;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//The master template uses JavaScript's conditional operators to determine the output of the Data Transformation. This example shows how to apply JavaScript to your transformation to allow for a dynamic range of sources or inputs.
// We open the transformation with a simple "if" function. We're checking if the value "payload.tierInfo" is present. "tierInfo" is a value that is always populated in the User Profile Live Push object, but is not present in the others.
if (payload.tierInfo) {
let brazecall = {
"attributes": [
{
"external_id": payload.thirdPartyId,
"email": payload.emailAddress,
"_update_existing_only": false,
"crowdtwist_loyalty_points": payload.redeemablePoints,
"tierinfo_current_level": payload.tierInfo.currentLevel,
"_merge_objects" : true,
"tierInfo" : {
"resetDate": payload.tierInfo.resetDate,
"dateReached":payload.tierInfo.dateReached,
"scoreNeededToReach": payload.tierInfo.scoreNeededToReach,
"nextLevel":{
"minValue":payload.tierInfo.nextLevel.minValue,
"maxValue":payload.tierInfo.nextLevel.maxValue,
"title":payload.tierInfo.nextLevel.title
}
}
}
]
,
"events": [
{
"external_id": payload.thirdPartyId,
"email": payload.emailAddress,
"name": "assignedByEvent",
"time": new Date().toISOString(),
"properties": {
"assigned_by_event": payload.tierInfo.assignedByEvent,
"date_assigned": payload.tierInfo.dateAssigned
},
"_update_existing_only": false
}
]
};
return brazecall;
//Now we use an "else if" operator to change the "brazecall" body if the object is a User Activity event by checking if the unique key "activityId" has been populated.
} else if (payload.activityId) {
let brazecall = {
"events": [
{
"external_id": payload.thirdPartyId,
"_update_existing_only": false,
"activityId": payload.activityId,
"name": payload.activityName,
"time": new Date().toISOString(),
"properties": {
"description": payload.description,
"date_assigned": payload.dateAwarded
}
}
]
};
return brazecall;
//Finally, this conditional statement triggers if the Data Push object is a User Redemption event, based on whether a value populates in the key "rewardId".
} else if (payload.rewardId) {
let brazecall = {
"attributes": [
{
"external_id": payload.thirdPartyId,
"_update_existing_only": false,
"redeemed_coupon": payload.couponCode,
"total_points_redeemed": payload.totalPointsRedeemed
}
]
}
return brazecall;
} else {
//Include this error message to help with troubleshooting in the log if a call fails. Replace the text in the parentheses with anything that might be clearer to your team based on your Data Transformation.
throw new Error("No appropriate Identifiers found");
}
Destinations
Les modèles de ce guide sont conçus pour envoyer les données à la destination « Track Users », mais vous pouvez concevoir votre modèle pour l’envoyer à n’importe quel endpoint répertorié dans le guide de Transformation des données de Braze, avec l’aide de la documentation de la REST API associée.
Test
Après avoir modifié le modèle à votre convenance, vous devez vérifier qu’il fonctionne correctement. Cliquez sur Validate pour obtenir un aperçu de la sortie de votre code et vérifier s’il s’agit d’une requête acceptable pour la destination choisie.

Lorsque vous êtes satisfait de l’objet affiché dans le champ « output », cliquez sur Activate pour que l’endpoint de Transformation des données soit prêt à accepter des données.
Vous trouverez l’URL du webhook de votre Transformation des données dans le panneau latéral gauche. Copiez-la et utilisez-la pour la configuration dans le hub d’intégration d’Oracle Crowdtwist.

Les endpoints de Transformation des données de Braze ont une limite de débit de 1 000 requêtes par minute. Réfléchissez à la vitesse à laquelle vous souhaitez que ces données soient disponibles dans Braze, et contactez votre gestionnaire de compte Braze si vous avez besoin d’une limite de débit plus élevée pour la Transformation des données.
Les transformations de données sont un outil très dynamique : vous pouvez les concevoir à des fins qui vont au-delà de ce qui est décrit dans ce document, avec une bonne compréhension de JavaScript et en vous appuyant sur notre documentation de la REST API. Pour obtenir de l’aide ou résoudre des problèmes liés à des modifications complexes de vos modèles de Transformation des données, adressez-vous à votre gestionnaire de la satisfaction client pour connaître l’accompagnement disponible.