Vincular solicitações de Canvas disparadas por API a eventos de envio de mensagens do Currents
Rastreie uma solicitação de Canvas disparada por API até os resultados das mensagens. Para isso, passe um ID de correlação como propriedade de entrada do Canvas, registre-o no evento de envio com
message_extrase relacione os eventos de engajamento pordispatch_ideuser_id.
Sobre este exemplo
A Pyrite Financial, uma marca fictícia de serviços financeiros, dispara um Canvas a partir dos próprios sistemas sempre que uma transação de um consumidor precisa de um alerta. Ela chama /canvas/trigger/send para cada evento. A equipe de análise de dados quer saber qual solicitação de disparo gerou cada envio, entrega e clique no Currents ou no Snowflake Data Sharing. Ambos incluem os mesmos dados de eventos de envio de mensagens.
Os eventos de envio de mensagens no Currents e no Snowflake Data Sharing não trazem, por si só, o identificador da sua solicitação de disparo. Este exemplo mostra como:
- Gerar um ID de correlação no seu sistema de envio e passá-lo como propriedade de entrada do Canvas na solicitação de disparo.
- Referenciar essa propriedade no corpo da mensagem com a Liquid tag
message_extras, que grava o valor no campomessage_extrasdo evento de envio. - Relacionar o evento de envio aos eventos de entrega e clique por
dispatch_ideuser_id.
Use essa abordagem quando um sistema externo for responsável pelo disparo e você precisar gerar relatórios sobre o engajamento posterior de cada solicitação. Se uma Campaign atender melhor ao seu caso de uso do que um Canvas, use um identificador de envio. O campo send_id é compatível com os endpoints de envio de mensagens de Campaign, mas não com /canvas/trigger/send.
Considerações
- O
dispatch_idsozinho não é uma chave única para Canvas. A Braze trata as etapas do Canvas como eventos disparados, então uma etapa pode gerar umdispatch_idúnico por usuário em cada envio ou umdispatch_idcompartilhado entre os usuários do mesmo envio. Sempre combine-o comuser_id. Para saber mais, consulte Comportamento do ID de despacho. - O campo
message_extrasaparece apenas nos eventos de envio. Os eventos de entrega, abertura e clique não o incluem. Por isso, o ID de correlação passa pelo evento de envio e, a partir dele, é relacionado aos outros eventos. - Os message extras são anexados no momento do envio de cada mensagem. Então, um Canvas com várias etapas de Mensagem precisa da tag em cada etapa sobre a qual você quer gerar relatórios.
- Todas as chaves e valores de
message_extras, somados, precisam ficar abaixo de 1.000 bytes (1 KB), e a Braze trunca valores maiores. Espaços em branco contam para o limite. - O JSON resultante contém apenas valores de string. Use uma variável Liquid como chave ou valor. Não aninhe outras Liquid tags dentro de
message_extras. - Os eventos do Currents armazenam o ID de usuário da Braze em
user_ide o seu próprio identificador emexternal_user_id. Faça a junção poruser_ide selecioneexternal_user_idquando precisar associar as linhas aos seus sistemas. - Use o Currents ou o Snowflake Data Sharing para esse padrão. Ambos expõem os mesmos campos de eventos de envio de mensagens, incluindo
message_extrasnos eventos de envio. - Os esquemas do Currents e do Snowflake marcam
message_extrascomo IPI. Use um ID de solicitação opaco em vez de dados do consumidor. - O objeto
contextem uma solicitação de disparo de Canvas pode ter até 50 KB, compartilhados entre todas as propriedades que você passar.
Configuração
Etapa 1: Gerar um ID de correlação por solicitação
No seu sistema de envio, crie um identificador para cada solicitação de disparo (por exemplo, um UUID) e armazene-o no seu próprio registro de solicitações. Mantenha-o opaco e curto o suficiente para caber no limite de tamanho de message_extras.
Etapa 2: Passar o ID como propriedade de entrada do Canvas
Inclua o ID no objeto context da sua solicitação para /canvas/trigger/send. Defina-o por destinatário quando cada usuário tiver um ID distinto, ou no nível superior quando um único ID abranger todos os destinatários da solicitação.
{
"canvas_id": "canvas_identifier",
"recipients": [
{
"external_user_id": "user_identifier",
"context": {
"request_id": "8f14e45f-ceea-467a-9e30-6b1b1c4a7d20"
}
}
]
}
As propriedades de entrada do Canvas ficam disponíveis como variáveis de contexto em todo o Canvas.
Etapa 3: Registrar o ID no evento de envio
Em cada etapa de Mensagem sobre a qual você quer gerar relatórios, atribua a variável de contexto e passe-a para message_extras.
{% assign request_id = context.${request_id} %}
{% message_extras :key request_id :value {{request_id}} %}
A Braze anexa o par chave-valor ao campo message_extras do evento de envio no momento do envio.
Etapa 4: Verificar com um envio de teste
Envie uma entrada de teste pelo Canvas e confirme se o evento de envio no Currents ou no Snowflake Data Sharing contém message_extras com a sua chave request_id. Se o campo estiver vazio, verifique a sintaxe da tag. Delimitadores digitados incorretamente e chaves e valores fora de ordem são as causas mais comuns.
Etapa 5: Relacionar os envios aos eventos de entrega e clique
Com o ID no evento de envio, faça a junção com os outros eventos por dispatch_id e user_id. O exemplo do Query Builder a seguir mostra os resultados de entrega e clique por solicitação para e-mail:
WITH sends AS (
SELECT
USER_ID,
EXTERNAL_USER_ID,
DISPATCH_ID,
PARSE_JSON(MESSAGE_EXTRAS):request_id::STRING AS request_id,
TIME AS send_time
FROM USERS_MESSAGES_EMAIL_SEND_SHARED
WHERE MESSAGE_EXTRAS IS NOT NULL
AND PARSE_JSON(MESSAGE_EXTRAS):request_id IS NOT NULL
)
SELECT
s.request_id AS "Request ID",
s.EXTERNAL_USER_ID AS "External User ID",
MIN(s.send_time) AS "Sent",
MIN(d.TIME) AS "Delivered",
MIN(c.TIME) AS "First Click"
FROM sends AS s
LEFT JOIN USERS_MESSAGES_EMAIL_DELIVERY_SHARED AS d
ON d.USER_ID = s.USER_ID
AND d.DISPATCH_ID = s.DISPATCH_ID
LEFT JOIN USERS_MESSAGES_EMAIL_CLICK_SHARED AS c
ON c.USER_ID = s.USER_ID
AND c.DISPATCH_ID = s.DISPATCH_ID
GROUP BY 1, 2
ORDER BY 3 DESC;
Substitua pelas tabelas do canal que você usa para enviar. Por exemplo, use USERS_MESSAGES_PUSHNOTIFICATION_SEND_SHARED e USERS_MESSAGES_PUSHNOTIFICATION_OPEN_SHARED para push. Para ver a lista completa de colunas de cada tabela, consulte a referência de tabelas SQL.
O exemplo do Query Builder é apenas uma opção. Aplique as mesmas junções no Snowflake Data Sharing ou nas exportações do Currents para o seu próprio data warehouse: analise message_extras no evento de envio e, em seguida, relacione os eventos de engajamento por dispatch_id e user_id.