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

Mit der Integration von Braze und PassKit können Sie das Engagement Ihrer Online-Kampagnen steigern und messen, indem Sie sofort angepasste Pässe für Apple Wallet und Google Pay bereitstellen. Anschließend können Sie die Nutzung analysieren und in Realtime Anpassungen vornehmen, um mehr Besucher:innen in Ihre Geschäfte zu bringen. Dazu triggern Sie standortbasierte Nachrichten sowie personalisierte, dynamische Updates für das Mobile Wallet Ihrer Kund:innen.

Voraussetzungen

Voraussetzung Beschreibung
PassKit-Konto Sie benötigen ein PassKit-Konto und eine:n PassKit Account Manager:in.
userDefinedID Um angepasste Events und angepasste Attribute Ihrer Nutzer:innen zwischen PassKit und Braze korrekt zu aktualisieren, müssen Sie die externe ID von Braze 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.

Diesen können Sie im Braze-Dashboard unter Einstellungen > API-Schlüssel erstellen.
Braze REST-Endpunkt Die URL Ihres REST-Endpunkts. Ihr Endpunkt hängt von der Braze-URL für Ihre 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 übermitteln, stellen Sie sicher, dass Sie Ihre externe Braze-ID als externalId von PassKit festgelegt haben.

  1. Klicken Sie in Ihrem PassKit-Pass-Projekt oder -Programm unter Einstellungen im Bereich Integrationen auf dem Tab Braze auf Verbinden.
    Die Kachel für die Braze-Integration in der PassKit-Plattform.

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

  3. Aktivieren Sie Integration aktivieren sowie alle Events, mit denen Sie in Braze Ihre Nachrichten triggern oder personalisieren möchten.
    Die erweiterte Kachel für die PassKit-Braze-Integration mit Feldern für API-Schlüssel, Endpunkt-URL, Integrationsnamen, Aktivierungseinstellungen, Mitgliedschaftseinstellungen und Pass-Einstellungen.

In Braze können Sie einen SmartPass-Link einrichten, der eine eindeutige URL generiert, über die Ihre Kund:innen ihren Pass auf Android oder iOS installieren können. Dazu definieren Sie eine verschlüsselte SmartPass-Daten-Payload, die aus einem Braze Content-Block aufgerufen werden kann. Diesen Content-Block können Sie anschließend für zukünftige Pässe und Coupons wiederverwenden. Für Ihre Integration benötigen Sie Folgendes:

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

  • PassKit-Secret: Zusätzlich zur URL benötigen Sie den PassKit-Schlüssel für dieses Programm.
    Sie finden ihn auf derselben Seite wie Ihre PassKit-URL.

  • Programm- (oder Projekt-) ID: Ihre PassKit-Programm-ID ist erforderlich, um die SmartPass-URL zu erstellen.
    Sie finden sie im Tab Settings Ihres Projekts oder Programms.

Weitere Informationen zum Erstellen verschlüsselter SmartPass-Links finden Sie unter PassKit SmartPass-Links auf der Website von PassKit.

Schritt 1: Payload Ihrer Pass-Daten definieren

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

Sie können viele verschiedene Komponenten in Ihre Payload aufnehmen, zwei davon sind jedoch besonders wichtig:

Komponente Erforderlich Typ Beschreibung
person.externalId Erforderlich String Wird auf die externe ID von Braze gesetzt. Dies ist entscheidend dafür, dass die Callbacks von PassKit zurück an Braze funktionieren, und ermöglicht es Nutzer:innen, Coupons für mehrere Angebote in einer Campaign zu erhalten. Die Eindeutigkeit wird nicht erzwungen.
members.member.externalId Optional String Wird auf die externe ID von Braze gesetzt. Sie können Ihre externe ID verwenden, um den Mitgliedspass zu aktualisieren. Wenn Sie dieses Feld setzen, wird die Eindeutigkeit der Nutzer:innen innerhalb des Mitgliedsprogramms erzwungen.

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

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 Inhalt > Content-Block navigieren.

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

Als Nächstes müssen Sie Ihren Content-Block Liquid-Tag definieren. Nachdem Sie diesen Content-Block gespeichert haben, können Sie beim Verfassen von Nachrichten auf diesen Liquid-Tag verweisen. In diesem Beispiel haben wir den Liquid-Tag {{content_blocks.${passKit_SmartPass_url}}} zugewiesen.

In diesen Content-Block fügen wir die Payload nicht direkt ein, sondern verweisen über eine Variable {{passData}} darauf. Das erste Code-Snippet, das Sie Ihrem Content-Block hinzufügen müssen, erfasst eine Base64-Kodierung der Variable {{passData}}.

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

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

Als Nächstes erstellen Sie Ihre Verschlüsselungssignatur mithilfe eines SHA1-HMAC-Hashs aus 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 %}

Anschließend müssen Sie mit diesem Hash und Ihrem Project Secret eine Signatur generieren. Dazu fügen Sie ein drittes Code-Snippet ein:

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

Hängen Sie schließlich 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 zum Schluss sicher, dass Sie Ihre finale URL aufrufen, damit Ihre SmartPass-URL in Ihrer Nachricht ausgegeben wird.

{{longURL}}

Sie haben nun einen Content-Block erstellt, der 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ückzuführen.

Schritt 5: Alles zusammenführen

Sobald dieser Content-Block erstellt ist, können Sie ihn in Zukunft wiederverwenden.

Möglicherweise fällt Ihnen auf, dass im Beispiel-Content-Block zwei Variablen undefiniert bleiben.
{{passData}} – Ihre JSON-Payload mit den Pass-Daten, die Sie in Schritt 1 definiert haben
{{projectUrl}} – Die URL Ihres Projekts oder Programms, die Sie im Tab „Distribution“ Ihres PassKit-Projekts finden.

Das ist beabsichtigt und unterstützt die Wiederverwendbarkeit des Content-Blocks. Da auf diese Variablen im Content-Block nur verwiesen wird, sie dort aber nicht erstellt werden, können sie sich ändern, ohne dass der Content-Block neu erstellt werden muss.

Vielleicht möchten Sie zum Beispiel das Einführungsangebot ändern, um mehr Startpunkte in Ihrem Kundenbindungs-Programm zu vergeben, oder Sie möchten eine zweite Mitgliedskarte oder einen weiteren Coupon erstellen. Für diese Szenarien wären unterschiedliche PassKit-projectURLs oder unterschiedliche Pass-Payloads erforderlich, die Sie pro Campaign in Braze definieren würden.

Nachrichtentext verfassen

Erfassen Sie beide Variablen in Ihrem Nachrichtentext und rufen Sie anschließend Ihren Content-Block auf. 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 %}

Auf den soeben erstellten Content-Block verweisen

{{content_block.${passkit_SmartPass_url}}}

Ihr Nachrichtentext sollte etwa so aussehen: Der Nachrichten-Editor mit dem erfassten JSON und dem Verweis auf den Content-Block.

Die ausgegebene URL für das Beispiel lautet: Die ausgegebene URL mit einer langen, zufällig generierten Zeichenfolge aus Buchstaben und Zahlen.

Die ausgegebene URL ist lang. Das liegt daran, dass sie alle Pass-Daten enthält und erstklassige Sicherheitsmechanismen nutzt, um die Datenintegrität zu gewährleisten und Manipulationen durch Änderungen an der URL zu verhindern. Wenn Sie diese URL per SMS verteilen, empfiehlt es sich, sie mit einem Link-Kürzungsdienst wie bit.ly zu kürzen. Dies lässt sich über einen Connected-Content-Aufruf an einen bit.ly-Endpunkt umsetzen.

Pass mit dem PassKit-Webhook aktualisieren

In Braze können Sie eine Webhook-Kampagne oder einen Webhook innerhalb eines Canvas einrichten, um einen bestehenden Pass auf Grundlage des Verhaltens 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 Ihre Webhooks zum Erstellen und Aktualisieren an PassKit aufnehmen können.

Daten Typ Beschreibung
externalId String Ermöglicht das Hinzufügen einer eindeutigen ID zum Pass-Datensatz, um Kompatibilität mit einem bestehenden System herzustellen, das eindeutige Kundenbezeichner verwendet (zum Beispiel Mitgliedsnummern). Sie können Pass-Daten über diesen Endpunkt mit userDefinedId und campaignName statt mit der Pass-ID abrufen. Dieser Wert muss innerhalb einer Kampagne eindeutig sein und kann nach dem Festlegen nicht mehr geändert werden.

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

programId (Mitgliedschaft)
String Die ID der Kampagne oder des Programm-Templates, das Sie in PassKit erstellt haben. Sie finden sie im Tab Settings Ihres PassKit-Pass-Projekts.
expiryDate IO8601-Datum und -Uhrzeit Das Ablaufdatum des Passes. Nach dem Ablaufdatum wird der Pass automatisch ungültig (siehe isVoided). Dieser Wert überschreibt das Enddatum des Templates und der Kampagne.
status String Der aktuelle Status eines Coupons, zum Beispiel REDEEMED oder UNREDEEMED.

Schritt 1: Erstellen Sie Ihr Braze-Webhook-Template

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

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

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

Anfrage-Header und Methode

PassKit benötigt für die Autorisierung einen HTTP Header, der Ihren Base64-kodierten PassKit-API-Schlüssel 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 Ihren PassKit-Token ersetzen. Um Ihren Token abzurufen, navigieren Sie zu Ihrem PassKit-Projekt bzw. -Programm und dort zu Settings > Integrations > Long Lived Token.

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

Anfragetext

Um den Webhook einzurichten, füllen Sie die Details des neuen Events im Anfragetext 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 ein zutreffendes Braze-Tag handelt.

Sehen Sie sich Ihre Anfrage im Panel Vorschau an oder navigieren Sie zum Tab Test, wo Sie zufällige Nutzer:innen oder bestehende Nutzer:innen auswählen oder eigene anpassen können, um Ihren Webhook zu testen.

Pass-Details über Connected-Content abrufen

Zusätzlich zum 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!