Ir para o conteúdo

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 neste guia.

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

Por exemplo, use um Data Push para passar eventos personalizados e atributos relevantes para a 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 na 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

Requisito Descrição
Conta Oracle Crowdtwist Uma conta Oracle Crowdtwist é necessária para aproveitar essa parceria.
Endpoint de Transformação de Dados da Braze Essa integração depende da ferramenta de Transformação de Dados da Braze. Ao criar uma Transformação de Dados, a Braze gera um endpoint exclusivo que você pode adicionar como destino para o Data Push do Crowdtwist.

Integração

A Braze e a 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 de Perfil de Usuário, Resgate de Usuário e Atividade de Usuário.

Etapa 1: Criar a Data Transformation a partir do modelo Oracle Crowdtwist

Navegue até Configurações de Dados > Data Transformation > Criar Transformações > Usar um modelo e selecione o modelo “BRAZE <> CROWDTWIST” de sua preferência.

Você encontrará quatro modelos — um para cada tipo de transformação de eventos de Perfil de Usuário, Atividade do Usuário e Resgate do Usuário, além de um modelo principal que usa lógica condicional para se aplicar a vários eventos de Data Push.

Conforme mostrado na documentação de Data Push da Oracle Crowdtwist, os objetos de Data Push contêm metadados diferentes, então cada um requer seu próprio código de transformação para criar os objetos Braze apropriados. O modelo principal ilustra como configurar uma única Data Transformation 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

Nesta seção, você verá os modelos anotados. O corpo desses modelos é projetado para ser aplicado ao destino /users/track. As anotações são marcadas pelo início de linha // e texto em 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 a um endpoint da REST API da Braze. Para orientações sobre as estruturas exigidas das solicitações para esses destinos, consulte os links na seção “destinos”.

Modelos de Data Transformation

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 the following "tierInfo" value 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;

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;
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;

//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 neste guia foram criados para entregar ao destino “Track Users”, mas você pode projetar seu modelo para enviar a qualquer um dos endpoints listados no guia de Data Transformation da Braze, com o suporte da documentação da REST API associada.

Testes

Depois de modificar o modelo conforme sua preferência, você deve validar se ele funciona corretamente. No editor de transformação, selecione Validate para gerar uma prévia na seção Output e confirmar que a Braze aceita a solicitação mapeada para o destino escolhido.

Quando estiver satisfeito com o objeto exibido no campo Output, selecione Activate para que o endpoint de Data Transformation esteja pronto para receber dados.

Você encontrará a URL do webhook da sua Data Transformation no painel de detalhes da transformação. Copie-a e use-a para a configuração no Integration Hub do Oracle Crowdtwist.

Data Transformations são ferramentas muito dinâmicas, e você pode projetá-las para finalidades além do que está descrito neste documento, com conhecimento de JavaScript e com a orientação da nossa documentação da REST API. Para suporte ou solução de problemas em alterações complexas nos seus modelos de Data Transformation, converse com o seu CSM para conhecer as opções de orientação disponíveis para você.

New Stuff!