ÍNDICE
- Documentação do Payload de Webhook de Fidelidade (Para Clientes)
- Objetos de Dados Comuns
- Definições de Enums
- Garantias de Entrega e Retentativas de Webhook
- Personalização
- Considerações de Segurança
- Payloads de Eventos por Tópico
- Tópico: Communication_CouponsToUse
- Tópico: Communication_RewardCustomRedeemNotification
- Tópicos para Comunicações de Ganho de Pontos
- Tópico: Communication_CustomerPointChangeNotification
- Tópico: Communication_PointsToUse
- Tópico: Communication_NotifyExpirablePoints
- Tópico: Communication_RedeemPoints
- Tópico: Communication_SentOTPToCustomer
- Tópicos: Communication_CustomerTierUpgradeNotification, Communication_CustomerTierDowngradeNotification
- Tópicos para Transações Diretas de Pontos
Documentação de Payload de Webhook de Fidelidade (Voltada ao Cliente)
Este documento descreve a estrutura JSON dos payloads de webhook enviados pelo sistema de Fidelidade para o seu endpoint registrado quando eventos específicos ocorrem.
Estrutura Base do Webhook
Todas as notificações de webhook entregues ao seu endpoint seguirão este formato JSON básico:
{
"Uuid": "a_unique_identifier_string",
"Timestamp": "2025-04-15T14:30:00Z",
"Topic": "Actual_Topic_Name",
"Payload": { ... }
}Uuid (string): Um identificador único (UUID) para esta tentativa específica de entrega de webhook. Use isso para registros (logs) ou para garantir que você não processe a mesma entrega múltiplas vezes (idempotência). Exemplo: "f47ac10b-58cc-4372-a567-0e02b2c3d479"
Timestamp (string): A data e hora (no formato ISO 8601, UTC) em que o evento ocorreu originalmente dentro do sistema de Fidelidade. Exemplo: "2025-04-15T14:30:00.123Z"
Opic (string): Uma string que identifica o tipo de evento que ocorreu. Isso determina a estrutura e o conteúdo do objeto Payload. Consulte as seções abaixo para obter detalhes sobre os payloads associados a cada tópico específico. Exemplo: "Communication_EarnPurchasePoints"
Payload (object): Um objeto JSON contendo os detalhes específicos relevantes para o Topic do evento. A estrutura deste objeto varia dependendo do Topic e da configuração da sua assinatura (consulte a seção Payloads Personalizados).
Objetos de Dados Comuns
Estes objetos JSON aparecem frequentemente dentro de diferentes estruturas de payload:
Objeto Cliente
Contém informações sobre o cliente relacionado ao evento.
{
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900 | null",
"BirthdayDate": "1990-05-20T00:00:00Z | null",
"PointsBalance": 1500
}Email (string): Endereço de e-mail principal do cliente.
Id (string): Identificador único do cliente, frequentemente o ID do sistema de origem (ex: sua plataforma de e-commerce).
Name (string): Nome completo do cliente.
Phone (string): Número de telefone do cliente, geralmente incluindo o código do país.
Document (string | null): Número do documento de identificação nacional do cliente (ex: CPF no Brasil), se fornecido. Caso contrário, null.
BirthdayDate (string | null): Data de nascimento do cliente (formato ISO 8601, geralmente apenas a parte da data é relevante), se fornecida. Caso contrário, null.
PointsBalance (number - inteiro): O saldo total de pontos do cliente no momento em que o evento ocorreu. Isso pode não refletir o saldo após o evento, caso o próprio evento tenha modificado o saldo (veja o Objeto Saldo de Pontos para isso).
Objeto Saldo de Pontos
Contém detalhes sobre o saldo de pontos e cashback do cliente após o evento ter sido processado.
{
"PointsBalance": 1650,
"CashbackBalance": 16.50
}PointsBalance (number - inteiro): O saldo total de pontos disponíveis do cliente após os efeitos do evento terem sido aplicados.
CashbackBalance (number): O saldo total de cashback disponível do cliente (como um valor decimal) após os efeitos do evento terem sido aplicados.
Definições de Enum
Vários campos do payload representam tipos enumerados. Eles são enviados como números inteiros no payload JSON. Abaixo estão os mapeamentos para enums comuns:
CouponType (Inteiro)
Indica o tipo de cupom.
0: FixedValue ("Valor fixo" - Desconto de valor fixo)1: Percent ("Valor percentual" - Desconto percentual)2: FreeShipping ("Frete grátis" - Frete grátis)3: DiscountShipping ("Desconto em frete" - Desconto no frete)4: Others ("Outros" - Outros tipos, geralmente pré-gerados)
ObjectiveType (Inteiro)
Indica o motivo ou a atividade que acionou um evento, frequentemente relacionado ao ganho de pontos.
0: Purchase ("Fazer compras" - Realizar compras)1: Signup ("Cadastro" - Realizar cadastro/inscrever-se)2: Birthday ("Fazer aniversário" - Aniversário do cliente)3: Review ("Fazer um review" - Enviar uma avaliação)4: Referral ("Indique um Amigo" - Indicar um amigo)5: SocialMediaFollowInstagram ("Siga no Instagram" - Seguir no Instagram)6: SocialMediaFollowFacebook ("Siga no Facebook" - Seguir no Facebook)7: Quiz ("Responda um Quiz" - Responder a um quiz)8: Custom ("Objetivo Customizado" - Objetivo personalizado)
PointType (Inteiro)
Especifica o motivo detalhado de uma transação de pontos.
0: Purchase ("Fez uma compra" - Realizou uma compra)1: Signup ("Criou conta" - Criou uma conta)2: Birthday ("Fez aniversário" - Aniversário)3: Ordinary ("Concedido por administrador" - Concedido manualmente pelo administrador)4: Reward ("Trocou por recompensa" - Resgate de recompensa)5: Review ("Fez um review" - Enviou uma avaliação)6: Refund ("Reembolso de pontos" - Estorno de pontos)7: Expire ("Pontos expirados" - Expiração de pontos)8: Referral ("Indicou um amigo" - Indicação de amigo)9: SocialMediaFollowFacebook ("Seguiu nas redes sociais Facebook" - Seguiu no Facebook)10: SocialMediaFollowInstagram ("Seguiu nas redes sociais Instagram" - Seguiu no Instagram)11: PartialOrderRefund ("Reembolso parcial de pedido" - Estorno parcial de pedido)12: Quiz ("Respondeu um quiz" - Respondeu a um questionário)13: CustomObjective ("Pontos de objetivo personalizado" - Pontos de objetivo customizado)14: ReferralAffiliate ("Indicação de afiliado" - Indicação via afiliado)
PointAction (Inteiro)
Indica se os pontos foram adicionados ou removidos em uma transação.
0: Take ("Retirada" - Pontos foram removidos ou gastos)1: Grant ("Concessão" - Pontos foram adicionados ou concedidos)
Garantias de Entrega e Retentativas de Webhook
- Idempotência: Cada entrega de webhook inclui um
Uuidúnico. Você deve armazenar e verificar esteUuiddo seu lado para evitar o processamento da entrega do mesmo evento múltiplas vezes. Embora o sistema de Fidelidade tente evitar o envio de eventos duplicados para a mesma ação subjacente (usando verificações internas como chaves de idempotência fornecidas durante as chamadas de API e checksums de mensagens), confiar noUuidno momento do recebimento é a melhor prática para garantir a idempotência no seu sistema.
- Retentativas (Retries): Se o sistema de Fidelidade falhar ao entregar um webhook ao seu endpoint (por exemplo, devido a um erro de rede, uma resposta 5xx do seu servidor ou um timeout), ele tentará reenviar a entrega automaticamente. As retentativas ocorrem com um período de backoff (intervalo de espera) crescente.
- Timeout (Tempo Limite): O sistema aguarda até 30 segundos por uma resposta de sucesso (HTTP 2xx) do seu endpoint antes de considerar que a tentativa de entrega falhou.
- Falhas e Desativação: Se as tentativas de entrega para uma assinatura de webhook específica falharem consistentemente (atualmente após mais de 5 tentativas sem sucesso para um único evento), o sistema pode desativar automaticamente a assinatura para evitar sobrecarga adicional. Você precisará investigar as falhas e, potencialmente, reativar a assinatura na interface do sistema de Fidelidade. Certifique-se de que seu endpoint seja robusto e responda prontamente (idealmente em poucos segundos) com um código de status HTTP 2xx após o recebimento bem-sucedido. Processe o payload de forma assíncrona, se necessário, para evitar timeouts.
Personalização
Ao configurar sua assinatura de webhook no sistema de Fidelidade, você tem opções para personalizar a entrega:
Corpo de Payload Personalizado (Custom Payload Body): Você pode definir uma estrutura JSON personalizada para o corpo do webhook usando uma linguagem de template. Se configurado, o campo
Payloadna estrutura base conterá seu JSON renderizado de forma personalizada em vez dos objetos padrão descritos abaixo. Os campos de payload padrão (comoCustomer,Points,CouponCode, etc., dependendo doTopic) estão disponíveis como variáveis dentro do seu template. Isso permite que você adapte os dados recebidos precisamente às necessidades do seu sistema.Variáveis de URL de Endpoint Personalizadas (Custom Endpoint URL Variables): Sua URL de Endpoint configurada também pode incluir variáveis de template derivadas dos dados do payload do evento (ex:
https://seuendpoint.com/webhook/{{Customer.Id}}). Isso permite o roteamento dinâmico ou processamento baseado no conteúdo do evento diretamente na URL.Método HTTP Personalizado (Custom HTTP Method): Você pode especificar o método HTTP (ex:
PUT,POST) a ser usado ao enviar o webhook, sobrescrevendo o padrãoPOST.Cabeçalhos Personalizados (Custom Headers): Você pode configurar cabeçalhos HTTP personalizados estáticos (pares chave-valor) que serão incluídos em cada requisição de webhook enviada ao seu endpoint. Isso pode ser útil para fins de autenticação ou roteamento (consulte Considerações de Segurança).
Consulte a interface de configuração de webhook do sistema de Fidelidade para obter detalhes sobre a linguagem de template e as variáveis disponíveis.
Considerações de Segurança
- HTTPS: Sempre utilize uma URL
https://para o seu endpoint de webhook para garantir que os dados sejam criptografados em trânsito. - Sigilo do Endpoint: Mantenha a URL do seu endpoint difícil de adivinhar.
- Segredo Compartilhado (via Cabeçalhos Personalizados): Embora o sistema não implemente atualmente a verificação de assinatura de payload (como HMAC), você pode estabelecer um mecanismo de segredo compartilhado. Configure um cabeçalho personalizado (ex:
X-Loyalty-Secret) com um valor secreto durante a configuração da assinatura. Seu endpoint deve, então, verificar a presença e a exatidão deste cabeçalho e valor nas requisições recebidas para garantir que elas se originam do sistema de Fidelidade. Rejeite as requisições que não possuam o segredo correto.
Payloads de Eventos por Tópico
A estrutura do objeto payload depende da string do topic.
Tópico: Communication_CouponsToUse
Enviado quando uma comunicação é acionada referente a cupons disponíveis para uso do cliente.
Estrutura do Payload:
{
"CouponType": 1, // Integer, see Enum Definitions
"ValidDateEnd": "2025-12-31T23:59:59Z | null",
"CouponValue": 10.00, // e.g., 10.00 for 10% or R$10.00
"CouponCode": "WELCOME10",
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}CouponType(number- inteiro): Indica o tipo do cupom. Consulte as Definições de Enum CouponType.ValidDateEnd (string|null): A data e hora de expiração do cupom (formato ISO 8601), se houver. Caso contrário,null.CouponValue (number): O valor associado ao cupom (ex:10.0para um desconto de 10%, ou25.50para um desconto fixo de R$ 25,50). A interpretação depende doCouponType.CouponCode (string): O código real que o cliente precisa inserir para resgatar o cupom.Customer (object): Detalhes do cliente a quem esta comunicação se refere. Consulte o Objeto Cliente.
Tópico: Communication_RewardCustomRedeemNotification
Enviado quando uma comunicação é acionada após um cliente resgatar pontos por uma recompensa personalizada.
Estrutura do Payload:
{
"Points": 500,
"RewardDescription": "Free Mug with Logo",
"Coupon": "MUGREDEEM123 | null",
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}- Points (
number- inteiro): A quantidade de pontos que o cliente gastou para resgatar esta recompensa. - RewardDescription (
string): Uma descrição da recompensa personalizada específica que foi resgatada. - Coupon (
string|null): Se o resgate da recompensa personalizada gerou um código de cupom, ele será incluído aqui. Caso contrário,null. - Customer (
object): Detalhes do cliente que resgatou a recompensa. Consulte o Objeto Cliente.
Tópicos para Comunicações de Acúmulo de Pontos
Estes tópicos são enviados quando uma comunicação é disparada em relação a um cliente acumulando pontos por diversos motivos. A estrutura do payload varia ligeiramente com base no motivo específico (tópico).
Campos Base Comuns:
{
"EarnedPoints": "number (integer)",
"ObjectiveType": "number (integer)", // See Enum Definitions
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
// ... other fields specific to the ObjectiveType ...
}EarnedPoints (number- inteiro):O número de pontos acumulados neste evento específico.ObjectiveType (number- inteiro): A atividade específica que resultou no acúmulo de pontos. Veja as Definições de Enum ObjectiveType.Customer (object): Detalhes do cliente que acumulou os pontos. Veja o Objeto Customer.
Tópicos Específicos e Campos Adicionais:
Communication_EarnPurchasePoints: Acúmulo de pontos proveniente de uma compra.
{
"EarnedPoints": 150,
"ObjectiveType": 0, // 0 = Purchase
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
},
"CashbackEarned": 1.50,
"ValidDate": "2026-04-15T00:00:00Z", // Expiration of points/cashback
"OrderDate": "2025-04-15T10:05:00Z",
"OrderValue": 150.00,
"PercentCashbackEarned": 0.01, // 1%
"Date": "2025-04-15T10:05:10Z" // Event record time
}- CashbackEarned (number | null): Valor monetário de cashback acumulado nesta compra.
- ValidDate (string | null): Data/hora de expiração para estes pontos/cashback, se aplicável.
- OrderDate (string): Data/hora em que o pedido associado foi realizado.
- OrderValue (number): Valor monetário total do pedido associado.
- PercentCashbackEarned (number | null): Taxa percentual em que o cashback foi acumulado (ex: 0.01 para 1%).
- Date (string): Data/hora em que o evento de acúmulo de pontos foi registrado.
- Communication_EarnBirthdayPoints: Earning points as a birthday bonus.
{
"EarnedPoints": 100, // Could be same as BirthdayPoints
"ObjectiveType": 2, // 2 = Birthday
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
},
"BirthdayPoints": 100, // Specific points for birthday
"BirthdayBonification": "Happy Birthday Bonus!",
"CouponType": 1, // Integer | null, 1 = Percentage. See Enum Definitions
"CouponCode": "BDAYGIFT | null",
"RedeemUrl": "https://example.com/redeem-bday | null"
// May include other base fields like 'Date' if applicable
}- BirthdayPoints (number - inteiro): Pontos concedidos especificamente pelo aniversário.
- BirthdayBonification (string | null): Descrição do bônus de aniversário. CouponType (number - inteiro | null): Tipo de cupom também concedido, se houver. Veja as Definições de Enum CouponType.
- CouponCode (string | null): Código do cupom concedido, se houver.
- RedeemUrl (string | null): URL para resgatar o benefício/cupom, se aplicável.
Communication_EarnSignupPoints: Acúmulo de pontos por se cadastrar.
{
"EarnedPoints": 50,
"ObjectiveType": 1, // 1 = Signup
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
// May include other base fields like 'Date' if applicable
}(Nenhum campo adicional específico para cadastro é exibido no editor)
Communication_EarnReviewPoints: Acúmulo de pontos por enviar uma avaliação (review).
{
"EarnedPoints": 25,
"ObjectiveType": 3, // 3 = Review
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
// May include other base fields like 'Date' if applicable
}(Nenhum campo adicional específico para avaliação é exibido no editor)
Communication_ReferralCommunicationPoints: Acúmulo de pontos via programa de indicação (provavelmente o acúmulo de quem indicou).
{
"EarnedPoints": 200,
"ObjectiveType": 4, // 4 = Referral
"Customer": { // Referrer's details
"Email": "referrer@example.com",
"Id": "original_referrer_id_456",
"Name": "Referrer Name",
"Phone": "+15559876543",
"Document": "09876543211",
"BirthdayDate": "1985-11-10T00:00:00Z",
"PointsBalance": 2500
},
"FriendName": "Jane Smith"
// May include other base fields like 'Date' if applicable
}FriendName (string | null): Nome do amigo indicado, se disponível.
Communication_EarnQuizPoints: Acúmulo de pontos por concluir um quiz.
{
"EarnedPoints": 30,
"ObjectiveType": 7, // 7 = Quiz
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
// May include other base fields like 'Date' if applicable
}(Nenhum campo adicional específico para quiz é exibido no editor)
Communication_EarnCustomObjectivePoints: Acúmulo de pontos a partir de um objetivo definido de forma personalizada.
{
"EarnedPoints": 75,
"ObjectiveType": 8, // 8 = Custom
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
// May include other base fields like 'Date' if applicable
}(Nenhum campo adicional específico para objetivo personalizado é exibido no editor)
Tópico: Communication_CustomerPointChangeNotification
Enviado quando uma comunicação é disparada devido a uma alteração manual ou diversa no saldo de pontos de um cliente.
Estrutura do Payload:
{
"Points": -50, // Can be positive or negative
"PointsValidDate": "2025-08-01", // Formatted date string (check format)
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}- Points (number - inteiro): O número de pontos envolvidos na alteração (positivo para adição, negativo para subtração).
- PointsValidDate (string): Uma string formatada representando a data de expiração relacionada a esta alteração de pontos, se aplicável (ex: "dd/MM/yyyy" ou "yyyy-MM-dd").
- Customer (object): Detalhes do cliente cujo saldo foi alterado. Veja o Objeto Customer.
Tópico: Communication_PointsToUse
Enviado quando uma comunicação é disparada informando ao cliente sobre seu potencial de resgate.
Estrutura do Payload:
{
"PointsToUse": 1500,
"MaxValueDiscount": "R$ 15,00", // Formatted monetary value
"MaxPercentDiscount": "10%", // Formatted percentage value
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}- PointsToUse (number - inteiro): O total de pontos que o cliente tem disponível atualmente para resgate.
- MaxValueDiscount (string): Uma string formatada representando o desconto monetário máximo que o cliente pode alcançar com seus pontos atuais (ex: "R$ 15,00").
- MaxPercentDiscount (string): Uma string formatada representando o desconto percentual máximo que o cliente pode alcançar (ex: "10%"). Customer (object): Detalhes do cliente. Veja o Objeto Customer.
Tópico: Communication_NotifyExpirablePoints
Enviado quando uma comunicação é disparada para notificar um cliente sobre pontos que estão próximos da expiração.
Estrutura do Payload:
{
"PointsToExpire": 250,
"ExpirationAt": "2025-07-31T23:59:59Z",
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
},
"ExpirationDate": "31/07/2025" // Formatted date string
}PointsToExpire (number- inteiro): O número de pontos que estão programados para expirar em breve. ExpirationAt (string): A data e hora exata (formato ISO 8601) em que estes pontos irão expirar.Customer (object): Detalhes do cliente cujos pontos estão expirando. Veja o Objeto Customer. ExpirationDate (string): Uma string formatada representando a data de expiração (ex: "dd/MM/yyyy").
Tópico: Communication_RedeemPoints
Enviado quando uma comunicação é disparada após um cliente resgatar pontos por uma recompensa padrão (como um cupom de desconto).
Estrutura do Payload
{
"CouponCode": "REDEEM5OFF",
"CouponDescription": "R$ 5,00 Discount Coupon",
"Points": 500,
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}CouponCode (string):O código de cupom gerado ou utilizado para este resgate. CouponDescription (string): Uma descrição da recompensa obtida através do resgate.Points (number- inteiro): O número de pontos que o cliente gastou.Customer (object): Detalhes do cliente que resgatou os pontos. Veja o Objeto Customer.
Tópico: Communication_SentOTPToCustomer
Enviado quando uma comunicação (provavelmente SMS ou e-mail) contendo uma Senha de Uso Único (OTP) é disparada. Nota de Segurança: Seja cauteloso ao processar OTPs recebidos via webhooks; certifique-se de que seu endpoint e lógica de processamento sejam seguros.
Estrutura do Payload:
{
"Otp": "123456",
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}Otp (string):A Senha de Uso Único (OTP) que foi enviada ao cliente.Customer (object): Detalhes do cliente para o qual o OTP foi enviado. Veja o Objeto Customer.
Tópicos: Communication_CustomerTierUpgradeNotification,
Communication_CustomerTierDowngradeNotification
Enviados quando uma comunicação é disparada porque o nível de fidelidade (tier) de um cliente foi alterado (seja por upgrade ou downgrade).
Estrutura do Payload:
{
"TierName": "Gold",
"Benefits": [
"Free Shipping on all orders",
"Early access to sales",
"Dedicated support line"
],
"NextTierTargets": [ // Empty if highest tier or downgrade
"Spend R$ 5000 in the next 6 months",
"Maintain Gold status for 1 year"
],
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
}
}TierName (string): O nome do nível (tier) em que o cliente acaba de entrar.Benefits (arraydestring): Uma lista de descrições em texto dos benefícios associados a este novo nível.NextTierTargets (arraydestring): Uma lista de descrições em texto detalhando o que o cliente precisa fazer para alcançar o próximo nível (se aplicável; pode estar vazio em casos de downgrade ou se o cliente já estiver no nível mais alto).Customer (object): Detalhes do cliente cujo nível foi atualizado. Veja o Objeto Customer.
Tópicos para Transações Diretas de Pontos
Estes tópicos referem-se ao registro direto ou à modificação de pontos no sistema, frequentemente disparando também eventos de comunicação relacionados.
Point_Add, Point_Update, Point_Removed: Alterações gerais de registro de pontos.
Estrutura do Payload:
{
"Points": 150, // Can be positive or negative depending on action/update
"PointType": 0, // Integer, 0 = Purchase. See Enum Definitions
"PointAction": 1, // Integer, 1 = Grant. See Enum Definitions
"Customer": {
"Email": "customer@example.com",
"Id": "original_customer_id_123",
"Name": "John Doe",
"Phone": "+15551234567",
"Document": "12345678900",
"BirthdayDate": "1990-05-20T00:00:00Z",
"PointsBalance": 1500
},
"PointsBalance": {
"PointsBalance": 1650,
"CashbackBalance": 16.50
}, // Points Balance Object (after change)
"PointId": 98765 // Internal ID of the point transaction record
}Points (number- inteiro): O número de pontos envolvidos neste registro de transação específico. PointType (number- inteiro): A categoria ou motivo da transação de pontos. Veja as Definições de Enum PointType.PointAction (number- inteiro): A ação específica realizada neste registro. Veja as Definições de Enum PointAction.Customer (object): Detalhes do cliente envolvido. Veja o Objeto Customer.PointsBalance (object): O saldo de pontos e cashback do cliente após esta transação. Veja o Objeto Points Balance.PointId (number- inteiro): O identificador interno único para este registro de transação de pontos específico dentro do sistema de Fidelidade.
EarnPointsReferralAffilidate: Um afiliado ganha pontos/cashback a partir da ação de um cliente indicado.
Estrutura do Payload:
{
"Points": 250,
"CashbackReceived": 2.50,
"OrderPlacementDate": "2025-04-14T16:20:00Z", // Referred customer's order date
"Customer": { // Affiliate's Customer Object
"Email": "affiliate@example.com",
"Id": "original_affiliate_id_789",
"Name": "Affiliate Name",
"Phone": "+15551112233",
"Document": "11223344556",
"BirthdayDate": "1988-03-15T00:00:00Z",
"PointsBalance": 5000
},
"PointsBalance": { // Affiliate's Points Balance Object (after earning)
"PointsBalance": 5250,
"CashbackBalance": 52.50
}
}Points (number - inteiro): Pontos acumulados pelo afiliado. CashbackReceived (number): Valor de cashback acumulado pelo afiliado.
OrderPlacementDate (string): Data e hora (formato ISO 8601) em que o cliente indicado realizou o pedido qualificado que disparou esta recompensa.
Customer (object): Detalhes do cliente afiliado que acumulou a recompensa. Veja o Objeto Customer.
PointsBalance (object): O saldo de pontos e cashback do afiliado após este evento. Veja o Objeto Points Balance.
Este artigo foi útil?
Que bom!
Obrigado pelo seu feedback
Desculpe! Não conseguimos ajudar você
Obrigado pelo seu feedback
Feedback enviado
Agradecemos seu esforço e tentaremos corrigir o artigo