ウォレットパスAPIを使うと、自社のバックエンドから顧客ごとに氏名、残高、バーコード、場所を入れたパスを作成し、データが変わるたびに更新できます。テンプレートを一度デザインし、ユーザーごとの個別の値を送れば、Apple Wallet用のインストールリンクまたはGoogle Wallet用の保存リンクが返ってきます。

すべてのチームにAPIが必要なわけではありません。この記事の例ではPushwooshのWallet passes APIを使います。各パスはUser IDにひも付き、同じUser IDでプッシュ通知、メール、カスタマージャーニーも動きます。API優先で設計されているため、ポイント台帳や会員基盤を自社で持つ日本のECアプリ、小売アプリ、金融アプリでも、既存システムに組み込みやすい構成です。

APIがビルダーより向いているケース

ビルダーは、パスのデザインや、小規模な配布、単発の配布に向いています。パスの内容が自社システムのデータに依存するようになったら、APIの出番です。

作業ビルダーAPIジャーニーのステップ
テンプレートをデザインする可可不可
1人の顧客にパスを発行する可可可
数千人に、それぞれ個別の値でパスを発行する不可可可
POSや予約システムからリアルタイムに更新する不可可不可
顧客ごとに最寄りの10店舗を選ぶ不可可不可

コードを書く前に、ジャーニーの列を確認してください。トリガーがPushwooshですでに計測している顧客行動であれば、Customer JourneyのIssue Wallet Pass(ウォレットパスの発行)ステップだけで済み、独自のコードが不要になることも少なくありません。

テンプレートと個別の値

仕組みは両プラットフォームで共通です。テンプレートにはレイアウト、ブランディング、フィールド構成を持たせます。発行時に、ユーザーごとの値でテンプレートを埋めます。

個別の値とは、顧客ごとに変わる情報です。氏名、会員番号、ポイント、会員ランク、バーコードの値、有効期限、最寄りの店舗などです。それ以外はすべてテンプレートから来るため、デザインを変更しても連携部分に手を入れずに、新しく発行するすべてのパスに反映されます。

PushwooshのGoogle Walletパスビルダーにあるポイントカードのフィールド設定と、個別の値を埋めるInsert a tagダイアログ

ジャーニーでは、Issue Wallet PassステップにAppleとGoogleのパスキャンペーン(apple_campaign_id、google_campaign_id)と、埋め込むpersonal_valuesを指定します。1つのステップで、同じUser IDに両方のバージョンを発行できます。

チャネル一覧にIssue wallet passステップが表示されたPushwoosh Customer Journeyのキャンバス

Apple Walletのフロー

Appleのパスビルダーでできることは、すべてApple Wallet PassKit APIでも行えます。パスの作成、更新、一覧取得、ダウンロード、削除です。

典型的な連携は4つのステップで構成されます。

  1. 検証する

    何かを作成する前に、パスのデータがAppleの要件を満たしているかを検証します。不正なフィールドは、顧客のWalletに届いてから見つけるより、ここで見つけるほうがはるかに低コストです。

  2. 作成する

    User IDに対して、個別の値を入れたパスを作成します。Pushwooshがパスを生成し、Pass Type ID証明書で署名します。

  3. 共有する

    インストールリンクをメール、SMS、プッシュ通知、QRコードで共有します。

  4. 更新する

    データが変わったらパスを更新します。Pushwooshが登録済みの端末に通知し、iOSがバックグラウンドで新しいバージョンを取得します。

アプリケーションごとにPass Type ID証明書(.p12)と、Apple Developerアカウント(年額99ドル)が必要です。設定方法はiOS Wallet passの設定ドキュメントをご覧ください。iPhoneの利用率が高い日本市場では、まずこのAppleのフローから固めるのが現実的です。

Google Walletのフロー

Google Wallet APIは、Googleのパスについて同じライフサイクルをカバーします。

  1. 作成する

    User IDに対して、個別の値を入れたパスオブジェクトを作成します。

  2. 保存リンクを取得する

    pay.google.com/gp/v/save/ で始まるURLの保存リンクを取得し、共有します。

  3. 更新する

    パスを更新します。Googleがパスを保存しているすべての端末に変更を同期します。

  4. 状態を変更する

    必要に応じて状態を変更します。無効化、再有効化、削除が可能です。

Google Pay & Wallet ConsoleのIssuer IDが必要で、発行者にPushwooshのサービスアカウントを招待しておきます。設定はアプリケーションごとに一度だけです。手順はGoogle Walletの設定ドキュメントに記載されています。

See Pushwoosh in action
Request a demo

大規模に更新する

APIの真価が発揮されるのは更新です。ポイント台帳や予約システムが、値が変わった瞬間にパスを更新できるため、顧客のWalletにあるカードは常に自社の正しいデータと一致します。

大量の更新を安全に行うための3つのルールがあります。

  • 現在のパスから始める。 Appleの更新はパスオブジェクト全体を受け取るため、パスを取得し、変わった値だけを変更します。Googleの更新はオブジェクトの部分的な変更(パッチ)です。
  • 通知はフィールドごとに決める。 Appleでは、変更メッセージのあるフィールドだけがロック画面に通知を表示します。Googleでは、notifyOnUpdateでGoogle独自の通知を依頼できますが、通知が出るのはポイントカード、イベントチケット、搭乗券のパスだけで、1枚のパスにつき24時間で最大3件です。notifyMessageを使えば、どのパスタイプでも独自のAndroid通知テキストを送れます。
  • 通知はパスに関する内容に限る。 AppleとGoogleが許可しているのはパスに関する通知であり、販促ではありません。

コードサンプル

どちらのAPIも、ベースURLはhttps://apple-passkit.svc-nue.pushwoosh.comで、Authorization: Token <api-token>ヘッダーにPushwooshのAPIアクセストークンを指定します。以下のリクエストボディは、APIリファレンスに掲載されている例です。

Apple Walletパスを作成する: POST /api/pass/create。レスポンスでパスのserialNumberが返されます。

{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"description": "Acme loyalty card",
"logoText": "Acme",
"backgroundColor": "rgb(60, 65, 76)",
"foregroundColor": "rgb(255, 255, 255)",
"labelColor": "rgb(255, 255, 255)",
"storeCard": {
"primaryFields": [
{ "key": "balance", "label": "BALANCE", "value": "1200 pts" }
],
"secondaryFields": [
{ "key": "member", "label": "MEMBER", "value": "Jane Doe" }
]
},
"barcodes": [
{
"format": "PKBarcodeFormatQR",
"message": "1234567890",
"messageEncoding": "iso-8859-1"
}
]
},
"images": [
{ "imageType": "icon", "data": "<base64>", "contentType": "image/png" },
{ "imageType": "logo", "data": "<base64>", "contentType": "image/png" }
]
}

Google Walletパスを作成する: POST /api/google/pass/create。レスポンスでserialNumberとsaveLinkが返されます。

{
"applicationCode": "XXXXX-XXXXX",
"userId": "user-123",
"pass": {
"hexBackgroundColor": "#3c414c",
"logoUrl": "https://cdn.acme.com/logo.png",
"loyalty": {
"programName": "Acme Rewards",
"accountName": "Jane Doe",
"accountId": "1234567890",
"pointsLabel": "Points",
"pointsBalance": "1200",
"rewardsTier": "Gold"
},
"barcode": {
"format": "QR_CODE",
"value": "1234567890"
}
}
}

更新するには、シリアル番号を指定して新しい内容を送ります。AppleはPOST /api/pass/update/{serialNumber}、GoogleはPOST /api/google/pass/update/{serialNumber}です。

ビルダー、API、ジャーニー:使い分けの目安

デザインとテストにはビルダーを使います。会員登録や初回購入など、トリガーがすでにPushwooshにある顧客イベントであれば、ジャーニーのステップを使います。トリガーやデータが自社のバックエンドにある場合は、APIを使います。

多くのチームは最終的に3つすべてを使います。それで問題ありません。デザインはビルダー、ライフサイクルの節目はジャーニー、リアルタイムの残高やステータスはAPIです。失敗するのは、1つの手段にほかの役割まで無理に担わせたときです。

Pushwooshですべてのパスを大規模にパーソナライズする

Pushwooshは、ネイティブのApple WalletパスとGoogle Walletパスのためのビジュアルビルダー、ジャーニーのステップ、APIを提供します。間にパス専用のベンダーを挟む必要はありません。各パスはプッシュ通知、アプリ内メッセージ、メール、SMSと同じUser IDを共有するため、1つのデータですべてのチャネルを動かせます。ISO 27001:2022とSOC 2 Type 2の認証、GDPR準拠、EUと米国のデータセンターといった情報は、情報システム部門の審査資料としてそのまま提示できます。

大規模なパーソナライズに必要なのは、テンプレートを増やすことではありません。すべてのWalletのすべてのカードに反映される、1つの正しいデータです。

Wallet passesのデモを予約する
Wallet passesのデモを予約する

FAQ


Pushwoosh Team
Content Team / Pushwoosh
シェア

関連記事

すべて見る