PassKit
A PassKit permite ampliar o alcance da sua marca em dispositivos móveis por meio da integração de tickets da Apple Wallet e do Google Pay às experiências dos clientes. Crie, gerencie, distribua e analise facilmente a performance de cupons digitais, cartões de fidelidade, cartões de associação, tickets e muito mais, sem que seus clientes precisem de outro app.
A integração entre a Braze e a PassKit permite que você aumente e meça o engajamento de suas campanhas online, fornecendo instantaneamente passes personalizados da Apple Wallet e do Google Pay. Em seguida, é possível analisar o uso e fazer ajustes em tempo real para aumentar o tráfego na loja, disparando mensagens baseadas no local e atualizações personalizadas e dinâmicas na carteira móvel do cliente.
Pré-requisitos
Requisito | Descrição |
---|---|
Conta da PassKit | Você precisará ter uma conta da PassKit e um gerente de conta da PassKit. |
userDefinedID |
Para atualizar adequadamente os eventos personalizados e os atributos personalizados para seus usuários entre o Passkit e o Braze, será necessário definir o ID externo do Braze como userDefinedID . Este userDefinedID será usado ao fazer chamadas de API para os endpoints da PassKit. |
Chave da API REST do Braze | Uma chave da API REST da Braze com permissões users.track . Isso pode ser criado no dashboard do Braze em Configurações > Chaves de API. |
Ponto de extremidade REST do Braze | Seu URL do ponto de extremidade REST. Seu endpoint dependerá do [URL da Braze para sua instância][6]. |
Integração
Para enriquecer ainda mais as experiências de carteira móvel de seus clientes, a partir do dashboard do PassKit, você pode aceitar passar dados para o Braze por meio do endpoint do Braze [/users/track
][7] .
Exemplos de dados para compartilhar do Passkit incluem:
- Passe criado: quando um cliente clica em um link de passe e recebe um passe pela primeira vez.
- Instalações de passe: quando o cliente adiciona e salva o passe em seu app de carteira.
- Atualizações de passe: quando um passe é atualizado.
- Exclusão do passe: quando um cliente exclui o passe de seu app de carteira.
Depois que os dados são passados para o Braze, você pode criar públicos, personalizar o conteúdo via Liquid e disparar campanhas ou Canvas depois que essas ações forem executadas.
Conectar a PassKit à Braze
Para transmitir dados da PassKit, confirme se você definiu sua ID externa da Braze como externalId
da PassKit.
- Em Settings (Configurações), em Integrations (Integrações ) em seu projeto ou programa PassKit Pass, clique em Connect (Conectar ) na guia Braze.
![O bloco de integração do Braze na plataforma PassKit.][5]{: style=”max-width:80%”} - Informe sua chave de API da Braze, o URL do endpoint e um nome para seu conector.
- Ative a opção Enable Integration (Ativar integração ) e os eventos que você deseja que o Braze dispare ou personalize suas mensagens.
![O bloco de integração da PassKit Braze foi expandido para aceitar a chave de API, o URL do endpoint, o nome da integração, as configurações de capacitação, as configurações de inscrição e as configurações de passe.][4]{: style=”max-width:70%”}
Criar passe usando um link do SmartPass
No Braze, você pode configurar um link SmartPass para gerar um URL exclusivo para que seus clientes instalem o passe no Android ou no iOS. Para fazer isso, você deve definir uma carga útil de dados SmartPass criptografada que possa ser chamada de um bloco de conteúdo Braze. Esse [bloco de conteúdo][9] pode ser reutilizado para futuros passes e cupons. Os itens a seguir serão usados durante sua integração:
- URL da PassKit: seu URL da PassKit é um URL exclusivo para seu programa da PassKit.
Cada programa tem um URL exclusivo, e você pode encontrá-lo na guia Distribution (Distribuição) do seu programa ou projeto da PassKit (por exemplo, https://pub1.pskt.io/c/ww0jir). - Segredo da PassKit: junto com o URL, você precisará ter em mãos a chave da PassKit para esse programa.
Isso pode ser encontrado na mesma página que o URL da PassKit. - ID do programa (ou projeto): seu ID do programa da PassKit será necessário para criar o URL do SmartPass.
Você pode encontrá-lo na guia Configurações do seu projeto ou programa.
Para saber mais sobre como criar links criptografados do SmartPass, consulte este [artigo da PassKit][8].
Etapa 1: defina sua carga útil de dados de passe
Primeiro defina a carga útil do cupom ou do membro.
Há muitos componentes diferentes que podem ser incluídos em sua carga útil, mas aqui estão dois importantes a observar:
Componente | Obrigatória | Tipo | Descrição |
---|---|---|---|
person.externalId |
Obrigatória | String | Definido como o ID externo do Braze, isso é crucial para que os retornos de chamada do Passkit para o Braze funcionem, permitindo que os usuários do Braze tenham cupons para várias ofertas em uma campanha. Não é aplicado como único. |
members.member.externalId |
Opcional | String | Definido como o ID externo da Braze; você pode usar seu ID externo para atualizar o passe de inscrição. A definição desse campo impõe que o usuário seja único no programa de inscrição. |
Para obter uma lista completa dos campos disponíveis, seus tipos e descrições úteis, dê uma olhada na [documentação da PassKit no GitHub][10].
Exemplo de carga útil
1
2
3
4
5
6
7
8
{
"members.member.externalId": "{{${user_id}}}",
"members.member.points": "100",
"members.tier.name": "current_customer",
"person.displayName": "{{${first_name}}} {{${last_name}}}",
"person.externalId": "{{${user_id}}}",
"universal.expiryDate": "{{ "now" | date: "%s" | plus: 31622400 | date: "%FT%TZ" }}"
}
Etapa 2: Criar e codificar uma variável de carga útil indefinida
Crie e nomeie um novo bloco de conteúdo navegando até Modelos > Blocos de conteúdo no dashboard do Braze.
Se estiver usando a navegação mais antiga, acesse Engajamento > Modelos e mídias > Biblioteca de blocos de conteúdo.
Selecione Create Content Block (Criar bloco de conteúdo ) para começar.
Em seguida, você deve definir a Liquid tag do bloco de conteúdo. Depois que o bloco de conteúdo é salvo, a Liquid tag pode ser consultada ao criar mensagens. Neste exemplo, atribuímos a Liquid tag como {{content_blocks.${passKit_SmartPass_url}}}
.
Nesse bloco de conteúdo, não incluiremos diretamente a carga útil, mas faremos referência a ela em uma variável {{passData}}
. O primeiro trecho de código que você deve adicionar ao seu bloco de conteúdo captura uma codificação Base64 da variável {{passData}}
.
1
{% capture base64JsonPayload %}{{passDatapassData|base64_encode}}{% endcapture %}
Etapa 3: crie sua assinatura de criptografia usando um hash HMAC SHA1
Em seguida, você criará sua assinatura de criptografia usando um hash [SHA1 HMAC][16]] do URL do projeto e da carga útil.
O segundo trecho de código que você deve adicionar ao seu bloco de conteúdo captura o URL a ser usado para hashing.
1
{% capture url %}{{projectUrl}}?data={{base64JsonPayload}}{% endcapture %}
Em seguida, gere uma assinatura usando esse hash e seu Project Secret
. Isso pode ser feito com a inclusão de um terceiro trecho de código:
1
{% capture sig %}{{url | hmac_sha1: "Project_Secret"}}{% endcapture %}
Por fim, acrescente a assinatura ao URL completo usando o quinto snippet de código:
1
{% capture longURL %}{{projectUrl}}?data={{base64JsonPayload}}&sig={{sig}}{% endcapture %}
Etapa 4: imprima o URL
Por fim, chame seu URL final para que ele imprima o URL do SmartPass em sua mensagem.
1
{{longURL}}
Nesse ponto, você terá criado um bloco de conteúdo com a seguinte aparência:
1
2
3
4
5
6
7
8
9
{% capture base64JsonPayload %}{{passData|base64_encode}}{% endcapture %}
{% capture url %}{{projectUrl}}?data={{base64JsonPayload}}{% endcapture %}
{% capture sig %}{{url | hmac_sha1: "Project_Secret"}}{% endcapture %}
{% capture longURL %}{{projectUrl}}?data={{base64JsonPayload}}&sig={{sig}}&utm_source=braze&utm_campaign={{campaign.${name}}}{% endcapture %}{% capture longURL %}{{longURL | url_encode}}{% endcapture %}
{{longURL}}
Nesse exemplo, foram adicionados parâmetros UTM para rastrear a origem dessas instalações até o Braze e essa campanha.
Lembre-se de salvar seu bloco de conteúdo antes de sair da página.
Etapa 5: juntando tudo
Depois que esse bloco de conteúdo for criado, ele poderá ser reutilizado novamente no futuro.
Você pode notar que há duas variáveis indefinidas no exemplo do bloco de conteúdo.
{{passData}}
- Sua carga útil de dados de passagem JSON definida na etapa 1
{{projectUrl}}
– o URL do seu projeto ou programa, que pode ser encontrado na guia de distribuição do seu projeto da PassKit.
Essa decisão é proposital e apóia a reutilização do bloco de conteúdo. Como essas variáveis são apenas referenciadas, e não criadas dentro do bloco de conteúdo, elas podem ser alteradas sem que seja necessário refazer o bloco de conteúdo.
Por exemplo, talvez você queira alterar a oferta introdutória para incluir mais pontos iniciais em seu programa de fidelidade, ou talvez queira criar um cartão ou cupom de membro secundário. Esses cenários exigiriam diferentes projectURLs
da PassKit ou diferentes cargas úteis de passe, que você definiria por campanha no Braze.
Como redigir o corpo da mensagem
Você deverá capturar essas duas variáveis no corpo da mensagem e, em seguida, chamar o bloco de conteúdo. Capture sua carga útil JSON minificada da etapa 1:
Atribuir o URL do projeto
1
{% assign projectUrl = "https://pub1.pskt.io/c/ww0jir" %}
Capturar o JSON
1
{% capture passData %}{"members.member.externalId": "{{${user_id}}}","members.member.points": "100","members.tier.name": "current_customer","person.displayName": "{{${first_name}}} {{${last_name}}}","person.externalId": "{{${user_id}}}","universal.expiryDate": "{{ "now" | date: "%s" | plus: 31622400 | date: "%FT%TZ" }}"}{% endcapture %}
Faça referência ao bloco de conteúdo que você acabou de criar
1
{{content_block.${passkit_SmartPass_url}}}
O corpo de sua mensagem deve ser semelhante a este:
O URL de saída da amostra é:
O URL de saída será longo. A razão para isso é que ele contém todos os dados de passe e incorpora a melhor segurança da categoria para garantir a integridade dos dados e nenhuma alteração por meio de modificação de URL. Se estiver usando SMS para distribuir esse URL, talvez você queira executá-lo por meio de um processo de encurtamento de links, como [bit.ly][3]. Isso pode ser feito por meio de uma chamada do conteúdo conectado para um endpoint bit.ly.
Atualize o passe usando o webhook da PassKit
No Braze, você pode configurar uma campanha de webhook ou um webhook dentro de uma tela para atualizar um passe existente com base no comportamento do usuário. Confira os links a seguir para obter informações sobre endpoints úteis da PassKit.
- [Projetos de membros][12]
- [Projetos de cupons][13]
- [Projetos de voos][14]
Parâmetros da carga útil
Antes de começar, aqui estão os parâmetros comuns de carga útil JSON que você pode incluir em seus webhooks de criação e atualização para o Passkit.
Dados | Tipo | Descrição |
---|---|---|
externalId |
String | Permite que um ID exclusivo seja adicionado ao registro do passe para oferecer compatibilidade com um sistema existente que usa identificadores exclusivos de clientes (por exemplo, números de inscrição). Você pode recuperar os dados do passe usando este endpoint por meio de userDefinedId e campaignName em vez do ID do passe. Esse valor deve ser exclusivo em uma campanha e, depois de definido, não poderá ser alterado.Para a integração com a Braze, recomendamos o uso do ID externo da Braze: {{${user_id}}} |
campaignId (cupom) programId (associação) |
String | O ID do modelo de campanha ou programa que você criou no Passkit. Para encontrar isso, vá para a guia Settings (Configurações) em seu projeto PassKit Pass. |
expiryDate |
IO8601 datetime | A data de vencimento do passe. Após a data de vencimento, o passe será automaticamente anulado (consulte isVoided ). Esse valor substituirá o modelo e o valor da data de término da campanha. |
status |
String | O status atual de um cupom, como REDEEMED ou UNREDEEMED . |
Etapa 1: Crie seu modelo de webhook do Braze
Para criar um modelo de webhook do PassKit para usar em futuras campanhas ou Canvas, navegue até a seção Modelos e mídias no dashboard do Braze. Se quiser criar uma campanha única de webhook do Passkit ou usar um modelo existente, selecione Webhook no Braze ao criar uma nova campanha.
Depois de selecionar o modelo de webhook da PassKit, você verá o seguinte:
- URL do webhook:
https://api-pub1.passkit.io/coupon/singleUse/coupon
- Corpo da solicitação: Texto bruto
Cabeçalhos de solicitação e método
A PassKit requer um HTTP Header
para autorização que inclui sua chave de API da PassKit codificada em base 64. O seguinte já estará incluído no modelo como um par de valores chave, mas na guia Settings (Configurações), você deve substituir o <PASSKIT_LONG_LIVED_TOKEN>
pelo seu token do Passkit. Para recuperar seu token, navegue até seu projeto/programa da PassKit, navegue até Settings > Integrations > Long Lived Token (Configurações > Integrações > Token de longa duração).
- Método HTTP: PUT
- Cabeçalho da solicitação:
- Autorização: portador
<PASSKIT_LONG_LIVED_TOKEN>
- Tipo de Conteúdo: application/json
- Autorização: portador
Corpo da solicitação
Para configurar o webhook, preencha os detalhes do novo evento no corpo da solicitação, incluindo os parâmetros de carga útil necessários para seu caso de uso:
1
2
3
4
5
{
"externalId": "{{${user_id}}}",
"campaignId": " 2xa1lRy8dBz4eEElBfmIz8",
"expiryDate": "2020-05-10T00:00:00Z"
}
Etapa 2: veja uma prévia da sua solicitação
Seu texto bruto será automaticamente destacado se for uma tag Braze aplicável.
Pré-visualize a solicitação no painel Preview (Pré-visualização ) ou navegue até a guia Test (Teste ), onde é possível selecionar um usuário aleatório, um usuário existente ou personalizar o seu próprio usuário para testar o webhook.
Lembre-se de salvar seu modelo antes de sair da página!
Os modelos de webhook atualizados podem ser encontrados na lista Modelos de webhook salvos ao criar uma nova campanha de webhook.
Recuperar detalhes do passe pelo conteúdo conectado
Além de criar e atualizar passes, também é possível recuperar os metadados dos passes dos seus usuários por meio do [Connected Content][15] ] do Braze para incorporar detalhes personalizados dos passes às suas campanhas de mensagens.
Chamada de conteúdo conectado da PassKit
1
2
3
{% connected_content https://api-pub1.passkit.io/coupon/singleUse/coupon/externalId/{{${user_id}}} :headers {"Authorization": "Bearer <PASSKIT_LONG_LIVED_TOKEN>","Content-Type": "application/json"} :save passes %}
{{passes.status}}
Exemplos de respostas do Liquid
1
2
3
4
5
6
7
8
9
10
11
{
"redemptionDate": null,
"redemptionCode": "",
"lat": 0,
"lon": 0,
"alt": 0,
"redemptionSource": "",
"redemptionReference": "",
"transactionReference": "",
"transactionAmount": 0
}
1
UNREDEEMED
Daqui a [3]: https://dev.bitly.com/v4/#operation/createFullBitlink [4]: /docs/pt-br/assets/img/passkit/passkit4.png?5b150054c2066e91223dafbf3030c0aa [5]: /docs/pt-br/assets/img/passkit/passkit5.png?774854f7d1ff602361682a97e3a5ff96 [6]: /docs/pt-br/api/basics?redirected=true#endpoints [7]: /docs/pt-br/api/endpoints/user_data/#user-track-endpoint [8]: https://help.passkit.com/en/articles/3742778-hashed-smartpass-links [9]: /docs/pt-br/user_guide/engagement_tools/templates_and_media/content_blocks/#content-blocks [10]: https://github.com/PassKit/smart-pass-link-from-csv-generator Daqui a [12]: https://docs.passkit.io/protocols/member/ Daqui a [13]: https://docs.passkit.io/protocols/coupon/ [14]: https://docs.passkit.io/protocols/boarding/ [15]: /docs/pt-br/user_guide/personalization_and_dynamic_content/connected_content/making_an_api_call/ [16]: https://en.wikipedia.org/wiki/HMAC