Notificar consumidores sobre atualizações de pedidos com Content Cards
Mantenha um feed personalizado de Content Cards sempre atualizado com o status mais recente de cada pedido. Para isso, registre as atualizações de pedidos do seu sistema de gerenciamento de pedidos (OMS), envie Content Cards para atualizações como enviado ou cancelado e descarte cartões desatualizados no app com pares de chave-valor.
Sobre este exemplo
A Flash & Thread, uma varejista fictícia de roupas e beleza, quer um feed horizontal de Content Cards em seus apps móveis. Nele, cada cartão mostra o status de uma compra, por exemplo, quando um pedido passa de picked para dispatched (enviado) ou quando é cancelled.
O sistema de gerenciamento de pedidos armazena o e-mail do consumidor, o número do pedido, o status do pedido e a URL de rastreamento, e pode chamar a Braze quando esses valores são atualizados. O time de marketing quer textos de cartão específicos para cada status (por exemplo, “Seu pedido está a caminho” para dispatched e “Estamos preparando seu pedido” para picked). Os cartões mais antigos do mesmo pedido (como um cartão picked depois que um cartão dispatched chegou) devem ser descartados, para que os consumidores vejam apenas o status mais recente.
Este exemplo mostra como:
- Registrar um evento personalizado (por exemplo,
order_update) em/users/trackquando o sistema de gerenciamento de pedidos registra uma mudança de status, como pendente, retido, separado, enviado ou cancelado - Disparar uma Campaign de Content Card baseada em ação separada para cada um desses status, com personalização em Liquid a partir das propriedades do evento
- Definir pares de chave-valor (
extras), comoorder_numbereorder_hierarchy, em cada cartão - Em um feed personalizado de Content Cards, manter apenas o cartão com o maior
order_hierarchypara cadaorder_numbere descartar os demais
Use essa abordagem quando os eventos de remoção do dashboard, por si só, não conseguirem atingir o cartão de um único pedido entre vários cartões da mesma jornada.
Considerações
- Os Content Cards expiram e são removidos no máximo 30 dias após o envio. Defina uma expiração mais curta para status finais (por exemplo, cancelado) quando quiser que eles saiam do feed mais cedo. Consulte Criar um Content Card.
- Se o sistema de gerenciamento de pedidos tiver apenas o e-mail, identifique o usuário em
/users/trackcom o identificador secundárioemail. Prefiraexternal_idquando o sistema de gerenciamento de pedidos tiver essa informação. Os aliases de usuário continuam sendo uma opção quando você precisa de um tipo de identificador personalizado: definaalias_namecomo o valor do identificador ealias_labelcomo o tipo (por exemplo,email). Consulte Resolução de identificadores e Objeto de alias de usuário. - As propriedades de eventos personalizados ficam disponíveis para personalização em Liquid e para segmentação por propriedade de evento quando você usa a jornada disparada por evento. Elas não ficam salvas no perfil como atributos, a menos que você também as grave como atributos.
- Campaigns de Content Card disparadas por API são uma alternativa que evita registrar um evento personalizado (e os pontos de dados correspondentes). Porém, cada Campaign precisa de um envio de disparo próprio, e você perde a segmentação por propriedade de evento para esse sinal.
- Feeds personalizados não são atualizados no meio da sessão até o início da próxima sessão ou até uma chamada manual de
requestContentCardsRefresh. Chame a atualização quando o consumidor abrir o feed de pedidos ou puxar a tela para atualizá-lo. - Interfaces de Content Cards totalmente personalizadas exigem o registro manual de análise de dados (impressões, cliques e descartes). Criar uma subclasse do feed padrão dá menos trabalho, mas não oferece suporte a um carrossel horizontal.
- Essa lógica de hierarquia pressupõe um status ativo por número de pedido de cada vez. Se um pedido puder ter vários status simultâneos (por exemplo, atendimentos divididos entre armazéns), adicione outra chave (como um ID de atendimento) e inclua-a nas suas regras de manter ou descartar.
- A lógica de descarte no app exige uma nova versão do app. Teste em um espaço de trabalho de desenvolvimento antes de ir para produção.
Configuração
Etapa 1: Registrar atualizações de pedidos a partir do sistema de gerenciamento de pedidos
Quando o sistema de gerenciamento de pedidos registrar uma mudança de status, envie um evento personalizado para /users/track. Inclua as propriedades de evento que o Content Card usa na personalização e que o app lê em extras.
A tabela a seguir mostra exemplos de propriedades:
| Propriedade | Finalidade |
|---|---|
order_number |
Agrupa os cartões do mesmo pedido |
order_status |
Rótulo de status para o texto e os filtros da Campaign |
tracking_url |
Deep link ou URL de botão opcional |
Veja um exemplo de solicitação que identifica o usuário pelo e-mail:
POST https://rest.iad-01.braze.com/users/track
Content-Type: application/json
Authorization: Bearer {YOUR_REST_API_KEY}
{
"events": [
{
"email": "[email protected]",
"name": "order_update",
"time": "2026-09-28T16:02:05Z",
"properties": {
"order_number": "12345",
"order_status": "picked",
"tracking_url": "https://www.flashandthread.example/track/12345"
}
}
]
}
Use o endpoint REST do seu espaço de trabalho e uma chave de API com a permissão users.track. Substitua o e-mail e os valores de pedido de exemplo pela carga útil do seu sistema de gerenciamento de pedidos.
Etapa 2: Criar uma Campaign de Content Card para cada status de pedido
Crie uma Campaign de Content Card baseada em ação para cada status que você envia (por exemplo, pending, held, picked, dispatched, cancelled).
- Acesse Envio de mensagens > Campaigns, selecione Criar campanha e, em seguida, selecione Content Cards.
- Configure a entrega baseada em ação no evento personalizado
order_update. Filtre pela propriedade de eventoorder_statuscorrespondente para que apenas esse status entre nesta Campaign. - Use propriedades de evento em Liquid para personalizar o título ou o corpo do cartão:
Order {{event_properties.${order_number}}} is {{event_properties.${order_status}}}.
- Na guia Configurações, selecione Adicionar novo par e adicione os pares de chave-valor usados pelo app:
| Chave | Valor |
|---|---|
order_number |
{{event_properties.${order_number}}} |
order_status |
{{event_properties.${order_status}}} (ou o status fixo dessa Campaign) |
order_hierarchy |
Número inteiro para esse status (fixo em cada Campaign) |
A tabela a seguir mostra um exemplo de hierarquia. O app mantém o cartão com o maior valor para cada pedido:
| Status | order_hierarchy |
|---|---|
| pending | 1 |
| held | 2 |
| picked | 3 |
| dispatched | 4 |
| cancelled | 5 |
- Defina a expiração do cartão (até 30 dias). Prefira uma duração mais curta para status finais.
Os eventos de remoção do dashboard se aplicam no nível da Campaign e não conseguem remover apenas o cartão de um pedido, mantendo os outros da mesma Campaign. Por isso, o app descarta os cartões desatualizados usando extras.
Etapa 3: Manter o cartão mais recente de cada pedido no feed personalizado
Assine as atualizações de Content Cards no seu feed personalizado, leia extras e, para cada order_number, mantenha o cartão com o maior order_hierarchy. Descarte os demais com a API de descarte da sua plataforma para manter a análise de dados precisa.
Para cada cartão no feed:
- Leia
order_numbereorder_hierarchyemextras. - Encontre o maior
order_hierarchyentre os cartões que compartilham esseorder_number. - Se a hierarquia do cartão for igual ao maior valor, exiba-o (mapeie os campos do cartão para o seu objeto de interface personalizado).
- Caso contrário, descarte o cartão.
Implemente as chamadas de assinatura e descarte com o SDK atual da sua plataforma. Comece por:
Quando o consumidor já estiver no app, chame requestContentCardsRefresh para que os novos cartões de pedidos apareçam sem esperar pela próxima sessão.
Etapa 4: Testar a jornada de ponta a ponta
- Envie uma sequência de eventos
order_updatepara o mesmo pedido com valores deorder_statuscrescentes. - Confirme se cada Campaign de status envia o cartão esperado e se o Liquid é resolvido corretamente.
- Confirme se o feed mostra um cartão por pedido e se os cartões de hierarquia inferior são descartados.
- Confirme se as impressões, os cliques e os descartes aparecem na análise de dados da Campaign para a sua interface personalizada.