---
title: Creating an airline boarding pass using semantic tags
framework: walletpasses
role: article
role_heading: Article
path: walletpasses/creating-an-airline-boarding-pass-using-semantic-tags
---

# Creating an airline boarding pass using semantic tags

Update your semantic tags to provide live and interactive passenger information for boarding passes.

## Overview

Overview Beginning with iOS and watchOS 26, you can update airline boarding passes with live information using semantic tags.

This experience builds on the existing PKPass bundle in Wallet and maintains backward compatibility. If you can’t use semantic tags for some reason, Wallet falls back to the legacy boarding pass. For existing boarding passes, you can update your legacy boarding pass by using semantic tags to enable up-to-date flight information, real-time updates, and interactive features in Wallet. For more information on semantic tags, see Supporting semantic tags in Wallet passes. By adding semantic tags to your boarding pass, you provide structured data that Wallet uses to automatically display information like flight status, gate changes, and baggage information, as well as an overall more dynamic and helpful experience for passengers. After you meet the minimum requirements to display a boarding pass using semantic tags, you can optimize a passenger’s experience by adding badges to highlight travel attributes and ticket add-ons. To display a semantic boarding pass, you need to meet the following minimum requirements: Add semanticBoardingPass to the preferredStyleSchemes. Set the transitType in the boardingPass top-level style dictionary to PKTransitTypeAir. For more information, see Pass.BoardingPass. Provide the required semantic tags to populate the pass and certain dashboard content. note: Use the semantic boarding pass style only for airline boarding passes. Set the preferred style scheme The preferred style scheme is a top-level key that you provide. It takes an array of strings that correspond to schemes that the system resolves into a style. For semantic boarding passes, the scheme is semanticBoardingPass. Wallet recognizes this scheme and runs the appropriate validation to designate the pass as a semantic boarding pass, or falls back to the legacy boarding pass (boardingPass). The following is an example of the preferred style scheme structure:   "preferredStyleSchemes": [     "semanticBoardingPass",     "boardingPass" ] note: To automatically suppress the Wallet-based Live Activity, list your App Store Identifier (Adam ID) in the associatedStoreIdentifiers array in the pass.json file of the boarding pass. Set the top-level style dictionary The style dictionary determines the pass type. To provide the upgraded boarding pass experience, set the transitType to PKTransitTypeAir in the boardingPass top-level style dictionary key. Add the required semantic tags

Semantic tags are objects that contain machine-readable metadata the system uses to offer a pass and suggest related actions. For the semantic boarding pass style, the following list of semantic tags is required. If you omit any of the tags, your pass falls back to the legacy boarding pass style. For more information on semantic tags, see SemanticTags.  |   |   |   |   |   |   |   |   |   |   |   |   |  Include recommended and optional semantic tags The following list of semantic tags are optional, but recommended for optimal pass design:  |   |   |   |   |   |   |   |   |  The following list of semantic tags are optional:  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  Add the supported Special Service Request (SSR) codes SSR codes can be provided through several semantic tags, such as passengerAirlineSSRs, passengerInformationSSRs, and passengerServiceSSRs. Boarding passes display certain SSRs as a badge, which always appears last, after all other badges. For more information on semantic tags, see SemanticTags. The passengerInformationSSRs semantic tag supports the following SSR codes as array values:  |   |  The passengerServiceSSRs semantic tag supports the following SSR codes as array values:  |   |   |   |   |   |   |   |   |   |   |   |  For a comprehensive list of SSRs, including codes not supported by Wallet, see the IATA Airlines Developer Guide in the “List of Information SSRs” section. Ensure backward compatibility To ensure your pass is backward compatible, continue to provide the PassFields.PrimaryFields, PassFields.SecondaryFields, and PassFields.AuxiliaryFields so the system presents the legacy boarding pass style, if necessary. Semantic boarding passes add keys and assets to the existing PKPass bundle that legacy boarding passes use. By building on the legacy pass bundle, Wallet automatically generates the appropriate device experience for iOS and watchOS.

When someone adds a pass to a device, that pass automatically syncs to all devices linked to the same Apple Account. When a supported device with iOS or watchOS 26 or later syncs to a device that doesn’t support semantic tags, Wallet recognizes the pass as a legacy boarding pass. The possible scenarios are: The legacy fields aren’t present. This means there is no content on the pass. The legacy fields are present but invalid. This means the ingestion fails on all devices. The legacy fields are present and valid. This means Wallet shows a fully populated legacy boarding pass. If someone adds a pass to an unsupported device and syncs it to a supported device with iOS or watchOS 26 or later, Wallet displays the semantic boarding pass information after you meet the minimum requirements by setting the top-level style dictionary and adding the required semantic tags. If you don’t meet the requirements, Wallet displays a legacy boarding pass. Offer additional flight information Populate an airline and services page to provide additional information related to a flight. The system uses metadata you provide to display an airline and services page in Wallet. Below the boarding pass, passengers can select a quick action link to navigate to a separate page within Wallet with useful information related to their flight and airport experience. Depending on the information you provide, you can populate links for the following:  |   |   |   |   |   |   |   |   |   |   |   |   |   |   |  Provide live flight information Boarding passes use semantic tags to correlate which flight the pass belongs to. With semantic tags, Wallet subscribes to updates for flight and surface functionalities, like Share Flight Tracker, which allows passengers to share flight information from Wallet through iMessage or iPhone nearby interactivity. If live flight information isn’t available for the current flight, Wallet provides the following information:  |   |   |   |   |   |   |   |   |   |  You provide the following information through semantic tags, and Wallet doesn’t supersede it:  |   |   |   |   |   |  For the full list of semantic tags, see SemanticTags. note: The information you provide determines the boarding time. Wallet calculates the boarding time by applying the time difference between your originalDepartureDate and originalBoardingDate to the known live departure time.

## See Also

### Boarding passes

- [Pass.BoardingPass](walletpasses/pass/boardingpass-data.dictionary.md)
- [SemanticTags](walletpasses/semantictags.md)
- [SemanticTagType](walletpasses/semantictagtype.md)
