Use TransitClass.appLinkData to place an app link at the bottom of all the passes of that class.
One benefit of app linking is that it empowers your call-to-action to navigate
users to your branded experiences from Google Wallet. Links with this feature appear at the bottom
of the Pass.
Feature example
Issuer
Set the app link on your Google Wallet pass
For a given transit pass, set the field TransitObject.appLinkData
to the URI or Package name of your app or website.
See the format and context of the appLinkData field in the following source code:
The displayText field is limited to 30 characters.
[null,null,["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThere are four ways to add links to a transit pass, including associating links with all passes of a class or individual passes.\u003c/p\u003e\n"],["\u003cp\u003eApp linking empowers call-to-actions within Google Wallet passes, allowing navigation to branded experiences by placing links at the bottom of the pass.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eappLinkData\u003c/code\u003e field is used to configure the link, accepting a URI or package name and allowing for Android or web app targets.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003edisplayText\u003c/code\u003e field, with a 30-character limit, is used to customize the link's display within the Google Wallet pass.\u003c/p\u003e\n"]]],["Links can be added to transit passes via `TransitClass.LinksModuleData` (for all passes) or `TransitObject.LinksModuleData` (for a specific pass). App links, displayed at the bottom of passes, can be added using `TransitObject.appLinkData` (specific pass) or `TransitClass.appLinkData` (all passes of that class). `appLinkData` utilizes `androidAppLinkInfo` or `webAppLinkInfo` to link to an app or website, respectively, with a maximum of 30 characters in the `displayText`.\n"],null,["# Add links to your Transit pass\n\nThere are four ways to add links to a transit pass.\n\n- Use `TransitClass.LinksModuleData` to add links to all transit passes that are associated with the `TransitClass`.\n- Use `TransitObject.LinksModuleData` to add a link to a specific transit pass `TransitObject`.\n- Use [TransitObject.appLinkData](/wallet/tickets/transit-passes/qr-code/rest/v1/AppLinkData) to place an app link at the bottom of that particular Pass.\n- Use [TransitClass.appLinkData](/wallet/tickets/transit-passes/qr-code/rest/v1/AppLinkData) to place an app link at the bottom of all the passes of that class.\n\n\nOne benefit of *app linking* is that it empowers your call-to-action to navigate\nusers to your branded experiences from Google Wallet. Links with this feature appear at the bottom\nof the Pass.\n\n### Feature example\n\n|--------|\n| |\n| Issuer |\n\n### Set the app link on your Google Wallet pass\n\nFor a given transit pass, set the field `TransitObject.appLinkData`\nto the URI or Package name of your app or website.\n\n\nSee the format and context of the `appLinkData` field in the following source code:\nThe `displayText` field is limited to 30 characters.\n**Note:** To deep link to a specific view within an app you must use webAppLinkInfo. \n\n```\n {\n \"id\": string,\n \"classId\": string,\n …\n …\n …\n \"appLinkData\": {\n \"androidAppLinkInfo\": {\n \"appTarget\": {\n \"packageName\": \"com.google.android.gm\",\n }\n },\n \"webAppLinkInfo\": {\n \"appTarget\": {\n \"targetUri\": {\n \"uri\": \"https://mail.google.com/mail/\",\n \"description\": \"Web link for Gmail\"\n }\n }\n }\n \"displayText\": {\n \"defaultValue\": {\n \"value\": \"Our awesome app!\"\n }\n }\n }\n }\n```\nFor posterity the following implementation will also work. \n\n```\n{\n \"id\": string,\n \"classId\": string,\n …\n …\n …\n \"appLinkData\": {\n \"androidAppLinkInfo\": {\n \"appTarget\": {\n \"targetUri\": {\n \"uri\": \"https://play.google.com/store/apps/details?id=com.google.android.gm\",\n \"description\": \"Play store link for Gmail app\"\n }\n }\n }\n }\n}\n```"]]