Skip to content

Oracle Crowdtwist

O Oracle Crowdtwist é uma solução líder em fidelidade do cliente nativa da nuvem que capacita as marcas a oferecer experiências personalizadas aos clientes. Sua solução oferece mais de 100 jornadas de engajamento prontas para uso, proporcionando um rápido retorno do investimento para que os profissionais de marketing desenvolvam uma visão mais completa do cliente.

O recurso Data Push do Oracle Crowdtwist permite que os metadados de usuários ou eventos sejam transmitidos sempre que ocorrer uma atualização na plataforma do Crowdtwist.

Este guia descreve como integrar os feeds Live Push de perfil de usuário, atividade de usuário e resgate de usuário do Oracle Crowdtwist ao seu ambiente Braze. Há dois tipos adicionais de Data Push disponíveis que não são explicitamente abordados nesta documentação, mas sua configuração segue os mesmos princípios descritos abaixo.

Ao usar um modelo de transformação de dados do Braze, você pode filtrar os elementos do Data Push que não são relevantes para o Braze e atribuir os valores necessários no Braze para que possam ser aproveitados pelos “destinos” disponíveis.

Por exemplo, use um Data Push para passar eventos e atributos personalizados relevantes para o Braze, como quando um usuário muda de nível de fidelidade ou resgata uma recompensa. Também é possível usá-lo para registrar atributos personalizados no Braze assim que esses dados forem atualizados no perfil de usuário de um membro, como o saldo de pontos de um usuário.

Pré-requisitos

Integração

O Braze e o Oracle Crowdtwist criaram modelos de transformação de dados para ajudar nossos clientes a desenvolver suas próprias transformações de dados que aproveitam os eventos Perfil do usuário, Resgate do usuário e Atividade do usuário.

Etapa 1: Criar transformação de dados a partir do modelo Oracle Crowdtwist

Navegue até Configurações de dados > Transformação de dados > Criar transformações > Usar um modelo > e selecione o modelo “BRAZE <> CROWDTWIST” de sua escolha.

Você encontrará quatro modelos - um para transformar eventos de Perfil do usuário, Atividade do usuário e Resgate do usuário, e um modelo mestre que usa lógica condicional para aplicar a vários eventos de Data Push.

Conforme mostrado na documentação do Data Push do Oracle Crowdtwist, os objetos Data Push contêm metadados diferentes, portanto, cada um requer seu próprio código de transformação para criar objetos Braze apropriados. O modelo mestre ilustra como configurar uma única transformação de dados para aceitar cada um dos três tipos de objetos e cria uma saída apropriada com valores de cada objeto.

Etapa 2: Atualizar e testar o modelo

Abaixo, você verá os modelos anotados. O corpo desses modelos foi projetado para ser aplicado ao destino /users/track. As anotações são marcadas pelo início da linha // e pelo texto verde, e você pode excluí-las sem afetar a operação do código de transformação.

A transformação usa JavaScript, que cria um objeto chamado “brazecall”. Esse objeto é onde você cria o corpo da solicitação que é enviado para um endpoint da Braze REST API. Para obter orientação sobre as estruturas necessárias das solicitações para esses destinos, consulte os links na seção “destinos”.

Modelos de transformação de dados

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");
}

Destinos

Os modelos deste guia foram criados para serem entregues no destino “Track Users”, mas você pode projetar seu modelo para enviar a qualquer um dos endpoints listados no guia Data Transformation do Braze, com o suporte da documentação REST API associada.

Testes

Depois de modificar o modelo a seu gosto, você deve validar se ele está funcionando corretamente. Clique em “Validate” (Validar) para retornar uma prévia da saída de seu código e verificar se é uma solicitação aceitável para os destinos escolhidos.

Captura de tela da interface de transformação de dados do Braze

Quando estiver satisfeito com o objeto que você vê no campo “output” (saída), clique em Activate (ativar ) para que o endpoint da transformação de dados esteja pronto para aceitar dados.

Você encontrará o URL do webhook de sua transformação de dados no painel do lado esquerdo. Copie-o e use-o para configuração no Hub de integração do Oracle Crowdtwist.

As transformações de dados são uma ferramenta muito dinâmica e você pode projetá-las para fins que vão além do que está descrito neste documento com um conhecimento de JavaScript e com a orientação da nossa documentação da API REST. Para obter suporte ou solução de problemas em alterações complexas em seus modelos de transformação de dados, fale com o gerente de sucesso do cliente para saber mais sobre as orientações disponíveis.

New Stuff!