Zum Inhalt springen

PassKit

PassKit ermöglicht es Ihnen, Ihre mobile Reichweite zu erweitern, indem Sie Apple Wallet und Google Pay Pässe in das Kundenerlebnis integrieren. Erstellen, verwalten, verteilen und analysieren Sie ganz einfach die Performance von digitalen Coupons, Kundenkarten, Mitgliedskarten, Tickets und vielem mehr – ohne dass Ihre Kund:innen eine weitere App benötigen.

Diese Integration wird von PassKit gepflegt.

Über die Integration

Die Integration von Braze und PassKit ermöglicht es Ihnen, das Engagement Ihrer Online-Campaigns zu steigern und zu messen, indem Sie sofort angepasste Apple Wallet- und Google Pay-Pässe bereitstellen. Anschließend können Sie die Nutzung analysieren und Realtime-Anpassungen vornehmen, um den In-Store-Traffic zu erhöhen – durch standortbasierte Nachrichten und personalisierte, dynamische Updates für die mobile Wallet Ihrer Kund:innen.

Voraussetzungen

Anforderung Beschreibung
PassKit-Konto Sie müssen über ein PassKit-Konto und eine:n PassKit-Account-Manager:in verfügen.
userDefinedID Um angepasste Events und angepasste Attribute für Ihre Nutzer:innen zwischen PassKit und Braze ordnungsgemäß zu aktualisieren, müssen Sie die externe Braze-ID als userDefinedID festlegen. Diese userDefinedID wird bei API-Aufrufen an die PassKit-Endpunkte verwendet.
Braze-REST-API-Schlüssel Ein Braze-REST-API-Schlüssel mit users.track-Berechtigungen.

Dieser kann im Braze-Dashboard unter Einstellungen > API-Schlüssel erstellt werden.
Braze-REST-Endpunkt Ihre REST-Endpunkt-URL. Ihr Endpunkt hängt von der Braze-URL Ihrer Instanz ab.

Integration

Um die Erfahrungen Ihrer Kund:innen mit der mobilen Wallet weiter zu verbessern, können Sie von Ihrem PassKit-Dashboard aus Daten über den Braze /users/track-Endpunkt an Braze weitergeben.

Beispiele für Daten, die Sie von PassKit weitergeben können:

  • Pass erstellt: wenn ein:e Kund:in auf einen Pass-Link klickt und zum ersten Mal einen Pass angezeigt bekommt.
  • Pass-Installationen: wenn der/die Kund:in den Pass in seine/ihre Wallet-App einfügt und speichert.
  • Pass-Updates: wenn ein Pass aktualisiert wird.
  • Pass löschen: wenn ein:e Kund:in den Pass aus seiner/ihrer Wallet-App löscht.

Sobald die Daten an Braze übergeben wurden, können Sie Zielgruppen aufbauen, Inhalte über Liquid personalisieren und Campaigns oder Canvases triggern, nachdem diese Aktionen durchgeführt wurden.

Passkit mit Braze verbinden

Um Daten von PassKit zu übergeben, stellen Sie sicher, dass Sie Ihre externe Braze-ID als PassKit-externalId festgelegt haben.

  1. Klicken Sie in den Einstellungen unter Integrations in Ihrem PassKit-Pass-Projekt oder -Programm auf Connect unter dem Braze-Tab.
    Die Braze-Integrationskachel in der PassKit-Plattform.

  2. Geben Sie Ihren Braze-API-Schlüssel und die Endpunkt-URL ein und vergeben Sie einen Namen für Ihren Konnektor.

  3. Aktivieren Sie Enable Integration und wählen Sie die Events aus, die in Braze ausgelöst werden sollen oder mit denen Sie Ihre Nachrichten personalisieren möchten.
    Die erweiterte PassKit-Braze-Integrationskachel zur Eingabe von API-Schlüssel, Endpunkt-URL, Integrationsname, Aktivierungseinstellungen, Mitgliedschaftseinstellungen und Pass-Einstellungen.

In Braze können Sie einen SmartPass-Link einrichten, um eine eindeutige URL zu generieren, mit der Ihre Kund:innen ihren Pass auf Android oder iOS installieren können. Dazu müssen Sie eine verschlüsselte SmartPass-Daten-Payload definieren, die über einen Braze-Content-Block aufgerufen werden kann. Dieser Content-Block kann dann für zukünftige Pässe und Coupons wiederverwendet werden. Folgende Elemente werden während Ihrer Integration benötigt:

  • PassKit-URL: Ihre PassKit-URL ist eine eindeutige URL für Ihr PassKit-Programm.
    Jedes Programm hat eine eindeutige URL, die Sie unter dem Tab Distribution Ihres PassKit-Programms oder -Projekts finden. (zum Beispiel https://pub1.pskt.io/c/ww0jir)

  • PassKit-Secret: Neben der URL benötigen Sie den PassKit-Schlüssel für dieses Programm.
    Diesen finden Sie auf derselben Seite wie Ihre PassKit-URL.

  • Programm- (oder Projekt-)ID: Ihre PassKit-Programm-ID wird benötigt, um die SmartPass-URL zu erstellen.
    Sie finden diese unter dem Tab Settings Ihres Projekts oder Programms.

Weitere Informationen zum Erstellen verschlüsselter SmartPass-Links finden Sie in diesem PassKit-Artikel.

Schritt 1: Pass-Daten-Payload definieren

Zunächst müssen Sie die Coupon- oder Mitglieds-Payload definieren.

Es gibt viele verschiedene Komponenten, die Sie in Ihre Payload aufnehmen können, aber hier sind zwei wichtige:

Komponente Erforderlich Typ Beschreibung
person.externalId Erforderlich String Wird als externe Braze-ID gesetzt. Dies ist entscheidend, damit die Callbacks von PassKit zurück zu Braze funktionieren und Unternehmensnutzer:innen Coupons für mehrere Angebote in einer Campaign haben können. Wird nicht als eindeutig erzwungen.
members.member.externalId Optional String Wird als externe Braze-ID gesetzt. Sie können Ihre externe ID verwenden, um den Mitgliedspass zu aktualisieren. Das Setzen dieses Felds erzwingt, dass die Nutzer:in innerhalb des Mitgliedsprogramms eindeutig ist.

Eine vollständige Liste der verfügbaren Felder, ihrer Typen und hilfreichen Beschreibungen finden Sie in der PassKit-GitHub-Dokumentation.

Beispiel-Payload

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

Schritt 2: Undefinierte Payload-Variable erstellen und kodieren

Erstellen und benennen Sie einen neuen Content-Block, indem Sie im Braze-Dashboard zu Content > Content-Block navigieren.

Wählen Sie Content-Block erstellen, um zu beginnen.

Als Nächstes müssen Sie Ihren Content-Block-Liquid-Tag definieren. Nach dem Speichern dieses Content-Blocks kann dieser Liquid-Tag beim Erstellen von Nachrichten referenziert werden. In diesem Beispiel haben wir den Liquid-Tag als {{content_blocks.${passKit_SmartPass_url}}} zugewiesen.

Innerhalb dieses Content-Blocks werden wir die Payload nicht direkt einbinden, sondern in einer {{passData}}-Variable referenzieren. Das erste Code-Snippet, das Sie Ihrem Content-Block hinzufügen müssen, erfasst eine Base64-Kodierung der {{passData}}-Variable.

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

Schritt 3: Verschlüsselungssignatur mit einem SHA1-HMAC-Hash erstellen

Als Nächstes erstellen Sie Ihre Verschlüsselungssignatur mit einem SHA1-HMAC-Hash der Projekt-URL und der Payload.

Das zweite Code-Snippet, das Sie Ihrem Content-Block hinzufügen müssen, erfasst die URL, die für das Hashing verwendet wird.

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

Als Nächstes müssen Sie eine Signatur mit diesem Hash und Ihrem Project Secret generieren. Dies kann durch Hinzufügen eines dritten Code-Snippets erfolgen:

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

Abschließend hängen Sie die Signatur mit dem fünften Code-Snippet an die vollständige URL an:

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

Schritt 4: URL ausgeben

Stellen Sie zuletzt sicher, dass Sie Ihre endgültige URL aufrufen, damit sie Ihre SmartPass-URL innerhalb Ihrer Nachricht ausgibt.

{{longURL}}

An diesem Punkt haben Sie einen Content-Block erstellt, der in etwa so aussieht:

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

In diesem Beispiel wurden UTM-Parameter hinzugefügt, um die Quelle dieser Installationen auf Braze und diese Campaign zurückzuverfolgen.

Schritt 5: Alles zusammenführen

Sobald dieser Content-Block erstellt wurde, kann er in Zukunft wiederverwendet werden.

Möglicherweise fällen Ihnen zwei Variablen auf, die im Beispiel-Content-Block undefiniert geblieben sind.
{{passData}} – Ihre JSON-Pass-Daten-Payload, die in Schritt 1 definiert wurde
{{projectUrl}} – Die URL Ihres Projekts oder Programms, die Sie unter dem Tab „Distribution“ Ihres PassKit-Projekts finden.

Diese Entscheidung ist bewusst getroffen und unterstützt die Wiederverwendbarkeit des Content-Blocks. Da diese Variablen nur referenziert und nicht innerhalb des Content-Blocks erstellt werden, können sich diese Variablen ändern, ohne dass der Content-Block neu erstellt werden muss.

Beispielsweise möchten Sie vielleicht das Einführungsangebot ändern, um mehr anfängliche Punkte in Ihr Kundenbindungs-Programm aufzunehmen, oder Sie möchten eine zweite Mitgliedskarte oder einen Coupon erstellen. Diese Szenarien erfordern unterschiedliche PassKit-projectURLs oder unterschiedliche Pass-Payloads, die Sie pro Campaign in Braze definieren.

Nachrichtentext verfassen

Sie sollten beide Variablen in Ihrem Nachrichtentext erfassen und dann Ihren Content-Block aufrufen. Erfassen Sie Ihre minimierte JSON-Payload aus Schritt 1:

Projekt-URL zuweisen

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

JSON erfassen

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

Den soeben erstellten Content-Block referenzieren

{{content_block.${passkit_SmartPass_url}}}

Ihr Nachrichtentext sollte in etwa so aussehen: Ein Bild des Content-Block-Nachrichten-Editors mit dem erfassten JSON und der Content-Block-Referenz.

Die Ausgabe-URL für das Beispiel ist: Die Ausgabe-URL, die einen langen, zufällig generierten String aus Buchstaben und Zahlen enthält.

Die Ausgabe-URL wird lang sein. Der Grund dafür ist, dass sie alle Pass-Daten enthält und erstklassige Sicherheit gewährleistet, um die Datenintegrität sicherzustellen und Manipulationen über URL-Änderungen zu verhindern. Wenn Sie diese URL per SMS verteilen, sollten Sie sie durch einen Linkverkürzungsprozess wie bit.ly laufen lassen. Dies kann über einen Connected-Content-Aufruf an einen bit.ly-Endpunkt erfolgen.

Pass mit dem PassKit-Webhook aktualisieren

In Braze können Sie eine Webhook-Campaign oder einen Webhook innerhalb eines Canvas einrichten, um einen bestehenden Pass basierend auf dem Verhalten Ihrer Nutzer:innen zu aktualisieren. Unter den folgenden Links finden Sie Informationen zu nützlichen PassKit-Endpunkten.

Payload-Parameter

Bevor Sie beginnen, finden Sie hier die gängigen JSON-Payload-Parameter, die Sie in Ihren Erstell- und Update-Webhooks an PassKit einbinden können.

Daten Typ Beschreibung
externalId String Ermöglicht das Hinzufügen einer eindeutigen ID zum Pass-Datensatz, um die Kompatibilität mit einem bestehenden System zu gewährleisten, das eindeutige Kundenbezeichner verwendet (z. B. Mitgliedsnummern). Sie können Pass-Daten über diesen Endpunkt mithilfe von userDefinedId und campaignName anstelle der Pass-ID abrufen. Dieser Wert muss innerhalb einer Campaign eindeutig sein, und sobald er gesetzt wurde, kann er nicht mehr geändert werden.

Für die Braze-Integration empfehlen wir die Verwendung der externen Braze-ID: {{${user_id}}}
campaignId (Gutschein)

programId (Mitgliedschaft)
String Die ID für die Campaign- oder Programm-Vorlage, die Sie in PassKit erstellt haben. Um diese zu finden, navigieren Sie zum Tab Einstellungen in Ihrem PassKit-Pass-Projekt.
expiryDate IO8601 datetime Das Ablaufdatum des Passes. Nach dem Ablaufdatum wird der Pass automatisch ungültig (siehe isVoided). Dieser Wert überschreibt den Wert für das Template- und Campaign-Enddatum.
status String Der aktuelle Status eines Gutscheins, z. B. REDEEMED oder UNREDEEMED.

Schritt 1: Erstellen Sie Ihr Braze-Webhook-Template

Um ein PassKit-Webhook-Template für zukünftige Campaigns oder Canvases zu erstellen, navigieren Sie zum Bereich Templates und Medien im Braze-Dashboard. Wenn Sie eine einmalige PassKit-Webhook-Campaign erstellen oder ein bestehendes Template verwenden möchten, wählen Sie beim Erstellen einer neuen Campaign Webhook in Braze aus.

Nachdem Sie das PassKit-Webhook-Template ausgewählt haben, sollten Sie Folgendes sehen:

  • Webhook-URL: https://api-pub1.passkit.io/coupon/singleUse/coupon
  • Anfrage-Body: Rohtext

Anfrage-Header und Methode

PassKit erfordert einen HTTP Header zur Autorisierung, der Ihren PassKit-API-Schlüssel in Base-64-Kodierung enthält. Folgendes ist bereits als Schlüssel-Wert-Paar im Template enthalten, aber im Tab Einstellungen müssen Sie <PASSKIT_LONG_LIVED_TOKEN> durch Ihr PassKit-Token ersetzen. Um Ihr Token abzurufen, navigieren Sie zu Ihrem PassKit-Projekt/Programm und dann zu Settings > Integrations > Long Lived Token.

  • HTTP-Methode: PUT
  • Anfrage-Header:
    • Authorization: Bearer <PASSKIT_LONG_LIVED_TOKEN>
    • Content-Type: application/json

Anfrage-Body

Um den Webhook einzurichten, füllen Sie die neuen Event-Details im Anfrage-Body aus, einschließlich der für Ihren Anwendungsfall erforderlichen Payload-Parameter:

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

Schritt 2: Vorschau Ihrer Anfrage

Ihr Rohtext wird automatisch hervorgehoben, wenn es sich um einen gültigen Braze-Tag handelt.

Sehen Sie sich die Vorschau Ihrer Anfrage im Vorschau-Panel an oder navigieren Sie zum Tab Test, wo Sie eine:n zufällige:n Nutzer:in oder eine:n bestehende:n Nutzer:in auswählen oder eigene Daten anpassen können, um Ihren Webhook zu testen.

Pass-Details über Connected Content abrufen

Neben dem Erstellen und Aktualisieren von Pässen können Sie auch die Pass-Metadaten Ihrer Nutzer:innen über Braze Connected Content abrufen, um personalisierte Pass-Details in Ihre Messaging-Kampagnen einzubinden.

PassKit Connected-Content-Aufruf

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

Liquid-Beispielantworten

{
    "redemptionDate": null,
    "redemptionCode": "",
    "lat": 0,
    "lon": 0,
    "alt": 0,
    "redemptionSource": "",
    "redemptionReference": "",
    "transactionReference": "",
    "transactionAmount": 0
}
UNREDEEMED
New Stuff!