Skip to content

PassKit

PassKit vous permet d’étendre votre portée mobile en intégrant les pass Apple Wallet et Google Pay à l’expérience de vos clients. Créez, gérez, distribuez et analysez facilement les performances des coupons numériques, des cartes de fidélité, des cartes de membre, des billets et bien plus encore, sans que vos clients aient besoin d’une autre application.

Cette intégration est maintenue par Passkit.

À propos de l’intégration

L’intégration de Braze et PassKit vous permet d’augmenter et de mesurer l’engagement de vos campagnes en ligne en fournissant instantanément des pass Apple Wallet et Google Pay personnalisés. Vous pouvez ensuite analyser l’utilisation et effectuer des ajustements en temps réel pour augmenter le trafic en magasin en déclenchant des messages géolocalisés et des mises à jour personnalisées et dynamiques sur le portefeuille mobile de votre client.

Conditions préalables

Intégration

Pour enrichir davantage les expériences de portefeuille mobile de vos clients, depuis votre tableau de bord PassKit, vous pouvez choisir de transmettre des données à Braze par le biais de l’endpoint /users/track de Braze.

Voici des exemples de données à partager depuis PassKit :

  • Pass créé : lorsqu’un client clique sur le lien d’un pass et qu’un pass lui est présenté pour la première fois.
  • Installation du pass : lorsque le client ajoute et enregistre le pass dans son application de portefeuille.
  • Mises à jour du pass : lorsqu’un pass est mis à jour.
  • Suppression du pass : lorsqu’un client supprime le pass de son application de portefeuille.

Une fois les données transmises à Braze, vous pouvez créer des audiences, personnaliser le contenu via Liquid et déclencher des Campaigns ou des Canvas une fois ces actions effectuées.

Connecter PassKit à Braze

Pour transmettre des données depuis PassKit, assurez-vous d’avoir défini votre ID externe Braze comme externalId de PassKit.

  1. Dans Settings, sous Integrations de votre projet ou programme PassKit Pass, cliquez sur Connect sous l’onglet Braze.
    La vignette d'intégration Braze dans la plateforme PassKit.

  2. Renseignez votre clé API Braze, l’URL de votre endpoint et donnez un nom à votre connecteur.

  3. Activez Enable Integration et les événements que vous souhaitez dans Braze pour déclencher ou personnaliser vos messages.
    La vignette d'intégration PassKit Braze étendue pour accepter la clé API, l'URL de l'endpoint, le nom de l'intégration, les paramètres d'activation, les paramètres d'adhésion et les paramètres de pass.

Dans Braze, vous pouvez configurer un lien SmartPass pour générer une URL unique permettant à vos clients d’installer leur pass sur Android ou iOS. Pour ce faire, vous devez définir un payload de données SmartPass chiffré qui peut être appelé depuis un Content Block Braze. Ce Content Block peut ensuite être réutilisé pour les futurs pass et coupons. Les éléments suivants sont utilisés lors de votre intégration :

  • URL PassKit : l’URL de votre PassKit est une URL unique pour votre programme PassKit.
    Chaque programme possède une URL unique, que vous trouverez dans l’onglet Distribution de votre programme ou projet PassKit. (par exemple, https://pub1.pskt.io/c/ww0jir)

  • Secret PassKit : en plus de l’URL, vous devez avoir à portée de main la clé PassKit pour ce programme.
    Elle est disponible sur la même page que l’URL de PassKit.

  • ID du programme (ou du projet) : votre ID de programme PassKit est nécessaire pour créer l’URL du SmartPass.
    Vous pouvez le trouver dans l’onglet Settings de votre projet ou programme.

Pour plus d’informations sur la création de liens SmartPass chiffrés, consultez cet article de PassKit.

Étape 1 : Définir le payload des données de votre pass

Tout d’abord, vous devez définir le coupon ou le payload du membre.

Vous pouvez inclure de nombreux composants dans votre payload, mais voici deux éléments importants à noter :

Pour une liste complète des champs disponibles, de leurs types et des descriptions utiles, consultez la documentation GitHub de PassKit.

Exemple de payload

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" }}"
}

Étape 2 : Créer et encoder une variable de payload non définie

Créez et nommez un nouveau Content Block en accédant à Templates > Content Blocks dans le tableau de bord de Braze.

Sélectionnez Create Content Block pour commencer.

Ensuite, vous devez définir votre balise Liquid de Content Block. Après avoir enregistré ce Content Block, cette balise Liquid peut être référencée lors de la rédaction de messages. Dans cet exemple, nous avons attribué à la balise Liquid la valeur {{content_blocks.${passKit_SmartPass_url}}}.

Dans ce Content Block, nous n’inclurons pas directement le payload, mais nous le référencerons dans une variable {{passData}}. Le premier extrait de code que vous devez ajouter à votre Content Block capture un encodage Base64 de la variable {{passData}}.

1
{% capture base64JsonPayload %}{{passDatapassData|base64_encode}}{% endcapture %}

Étape 3 : Créer votre signature de chiffrement à l’aide d’un hachage HMAC SHA1

Ensuite, vous allez créer votre signature de chiffrement en utilisant un hachage SHA1 HMAC de l’URL du projet et du payload.

Le deuxième extrait de code que vous devez ajouter à votre Content Block capture l’URL à utiliser pour le hachage.

1
{% capture url %}{{projectUrl}}?data={{base64JsonPayload}}{% endcapture %}

Ensuite, vous devez générer une signature à l’aide de ce hachage et de votre Project Secret. Cela peut être fait en incluant un troisième extrait de code :

1
{% capture sig %}{{url | hmac_sha1: "Project_Secret"}}{% endcapture %}

Enfin, ajoutez la signature à l’URL complète à l’aide du cinquième extrait de code :

1
{% capture longURL %}{{projectUrl}}?data={{base64JsonPayload}}&sig={{sig}}{% endcapture %}

Étape 4 : Imprimer votre URL

Enfin, assurez-vous d’appeler votre URL finale afin qu’elle affiche votre URL SmartPass dans votre message.

1
{{longURL}}

À ce stade, vous avez créé un Content Block qui ressemble à ceci :

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

Dans cet exemple, des paramètres UTM ont été ajoutés pour suivre la source de ces installations jusqu’à Braze et cette Campaign.

Étape 5 : Assembler tous les éléments

Une fois ce Content Block créé, il peut être réutilisé ultérieurement.

Vous remarquerez peut-être que deux variables ne sont pas définies dans l’exemple de Content Block.
{{passData}} - Votre payload de données de pass JSON défini à l’étape 1
{{projectUrl}} - L’URL de votre projet ou programme que vous trouverez dans l’onglet de distribution de votre projet PassKit.

Cette décision est intentionnelle et favorise la réutilisation du Content Block. Comme ces variables sont uniquement référencées et ne sont pas créées dans le Content Block, elles peuvent être modifiées sans avoir à recréer le Content Block.

Par exemple, vous souhaitez peut-être modifier l’offre de lancement pour inclure davantage de points initiaux dans votre programme de fidélité, ou peut-être souhaitez-vous créer une carte de membre ou un coupon secondaire. Ces scénarios nécessiteraient différents projectURLs PassKit ou différents payloads de pass, que vous définiriez par Campaign dans Braze.

Composition du corps du message

Vous devez capturer ces deux variables dans le corps de votre message, puis appeler votre Content Block. Capturez votre payload JSON minifié à partir de l’étape 1 :

Attribuer l’URL du projet

1
{% assign projectUrl = "https://pub1.pskt.io/c/ww0jir" %}

Capturer le 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 %}

Référencer le Content Block que vous venez de créer

1
{{content_block.${passkit_SmartPass_url}}}

Le corps de votre message devrait ressembler à ceci : Image du compositeur de messages du Content Block avec le JSON capturé et la référence du Content Block affichée.

L’URL de sortie de l’exemple est la suivante : URL de sortie qui inclut une longue chaîne de caractères alphanumériques générée de manière aléatoire.

L’URL de sortie sera longue. La raison en est qu’elle contient toutes les données du pass et intègre une sécurité de premier ordre pour garantir l’intégrité des données et empêcher toute modification via l’URL. Si vous utilisez le SMS pour distribuer cette URL, vous pouvez la faire passer par un processus de raccourcissement de lien tel que bit.ly. Cela peut se faire par le biais d’un appel de contenu connecté à un endpoint bit.ly.

Mettre à jour le pass à l’aide du webhook PassKit

Dans Braze, vous pouvez configurer une campagne webhook ou un webhook dans un Canvas pour mettre à jour un pass existant en fonction du comportement de votre utilisateur. Consultez les liens suivants pour obtenir des informations sur les endpoints PassKit utiles.

Paramètres du payload

Avant de commencer, voici les paramètres de payload JSON courants que vous pouvez inclure dans vos webhooks de création et de mise à jour vers PassKit.

Étape 1 : Créer votre modèle de webhook Braze

Pour créer un modèle de webhook PassKit à utiliser dans de futures Campaigns ou Canvas, accédez à la section Templates & Media dans le tableau de bord de Braze. Si vous souhaitez créer une campagne webhook PassKit unique ou utiliser un modèle existant, sélectionnez Webhook dans Braze lors de la création d’une nouvelle campagne.

Une fois que vous avez sélectionné le modèle de webhook PassKit, vous devriez voir ce qui suit :

  • URL du webhook : https://api-pub1.passkit.io/coupon/singleUse/coupon
  • Corps de la requête : texte brut

En-têtes de requête et méthode

PassKit requiert un HTTP Header pour l’autorisation qui inclut votre clé API PassKit encodée en base 64. Les éléments suivants seront déjà inclus dans le modèle en tant que paire clé-valeur, mais dans l’onglet Settings, vous devez remplacer <PASSKIT_LONG_LIVED_TOKEN> par votre jeton PassKit. Pour récupérer votre jeton, accédez à votre projet/programme PassKit, puis accédez à Settings > Integrations > Long Lived Token.

  • Méthode HTTP : PUT
  • En-tête de la requête :
    • Authorization : Bearer <PASSKIT_LONG_LIVED_TOKEN>
    • Content-Type : application/json

Corps de la requête

Pour configurer le webhook, renseignez les nouveaux détails de l’événement dans le corps de la requête, y compris les paramètres de payload nécessaires à votre cas d’utilisation :

1
2
3
4
5
{
  "externalId": "{{${user_id}}}",
  "campaignId": " 2xa1lRy8dBz4eEElBfmIz8",
  "expiryDate": "2020-05-10T00:00:00Z"
}

Étape 2 : Prévisualiser la requête

Votre texte brut sera automatiquement mis en évidence s’il s’agit d’une balise Braze applicable.

Prévisualisez votre requête dans le panneau Preview ou accédez à l’onglet Test, où vous pouvez sélectionner un utilisateur aléatoire, un utilisateur existant ou personnaliser le vôtre pour tester votre webhook.

Récupérer les détails du pass via le contenu connecté

Outre la création et la mise à jour des pass, vous pouvez également récupérer les métadonnées des pass de vos utilisateurs via le contenu connecté de Braze afin d’incorporer les détails personnalisés des pass dans vos campagnes de communication.

Appel de contenu connecté 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}}

Exemples de réponses 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
New Stuff!