Google Wallet Auto Linked Passes

Send additional passes to users who already have a pass in their Google Wallet, automatically grouped with the existing pass.

View as Markdown

About Auto Linked Passes

Google Wallet’s Auto Linked Passes feature automatically groups related passes together in a user’s wallet. You use the Wallet API to link passes to a primary pass that the user already has, and Google Wallet handles the rest:

  • The linked passes appear alongside the primary pass without the user needing to save or install them.
  • The Wallet app displays a notification on the primary pass when a new linked pass arrives.

You can use auto-linking for all Airship-supported Google Wallet pass types, and any pass type can serve as either the primary or linked pass. Because the user doesn’t need to take any action, auto-linking increases the likelihood that they see and use the pass at the right moment.

Use this feature whenever a customer’s journey involves multiple complementary passes:

  • Boarding pass + loyalty card — When a frequent flyer already has your loyalty card in their Google Wallet, you can issue a boarding pass and link it to the loyalty card so the boarding pass appears alongside it automatically.
  • Event ticket + parking pass — For a stadium or venue event, link a parking pass to the event ticket at the time of purchase. When the user opens their wallet on arrival, both passes are grouped and immediately accessible.
  • Boarding pass + lounge access — When a business class traveler is issued a boarding pass, link their lounge access pass to it so they can locate it without a separate distribution step.
  • Member card + coupon — During a promotional campaign, link a discount pass to a customer’s existing member card so the offer appears in their wallet without requiring them to install it separately.

To link passes, submit a POST request to the Wallet API. The primary pass must be created using the Wallet API.

Three endpoints are available for linking passes, each based on how you identify the primary pass: by pass ID, by template ID and external pass ID, or by external template ID and external pass ID. In the request body, provide a passURIs array listing the passes to link. See Pass URI formats for supported formats.

Use the Auto link passes to existing Google Pass endpoint when you have the Airship-generated numeric ID for the primary pass.

Link passes using a pass ID
POST /v1/pass/12345/linkedPasses HTTP/1.1
Authorization: Basic <authorization string>
Content-Type: application/json

{
  "passURIs": ["v1/pass/adaptive/fqsl9UyW3O7", "v1/pass/adaptive/Xzq5O7lf262"]
}

Use the Auto link passes to Google Pass with external ID endpoint when you have the Airship-generated template ID and your own external ID for the primary pass.

Link passes using a template ID and external pass ID
POST /v1/pass/template/12345/id/boarding-pass-smith-815/linkedPasses HTTP/1.1
Authorization: Basic <authorization string>
Content-Type: application/json

{
  "passURIs": ["v1/pass/adaptive/gqsl9UyW3O8", "v1/pass/template/id/lounge-template/id/lounge-smith-815"]
}

Use the Auto link passes to Google Pass with external template ID endpoint when you manage both the template and pass with your own external IDs.

Link passes using an external template ID and external pass ID
POST /v1/pass/template/id/boarding-pass-template/id/boarding-pass-smith-815/linkedPasses HTTP/1.1
Authorization: Basic <authorization string>
Content-Type: application/json

{
  "passURIs": ["v1/pass/template/id/parking-template/id/parking-lot-b-007", "v1/pass/template/id/lounge-template/id/lounge-smith-815"]
}

Each of these endpoints returns HTTP 200 with a ticketId on success. Use the ticketId to look up the status of the operation. See the Tickets API in the Wallet API reference.

Example link passes response
{
  "ticketId": 12345
}

Pass URI formats

Each entry in the passURIs array is a URI that identifies a pass. The format depends on which identifier you have:

FormatIdentifier referenced
v1/pass/{passId}Airship-generated pass ID
v1/pass/adaptive/{adaptiveLinkId}Adaptive Link ID
v1/pass/template/{templateId}/id/{passExternalId}Template ID and external pass ID
v1/pass/template/id/{templateExternalId}/id/{passExternalId}External template ID and external pass ID
v1/pass/dynamic/{dynamicPassId}Dynamic pass ID

For more information about external IDs, see External (or Custom) IDs in Wallet basics.