# How to show flight status on the lock screen

Show each checked-in passenger gate, status, and timing on the lock screen until the flight lands. This guide builds that journey with the [Live Activity element](/product/customer-journey/journey-elements/channels/live-activity/).

## Prerequisites

* Your iOS app supports Live Activities. See the [iOS SDK Live Activities guide](/developer/pushwoosh-sdk/ios-sdk/ios-live-activities/).
* A flight widget schema is published for this app. See [iOS Live Activity schemas configuration](/developer/first-steps/connect-messaging-services/ios-configuration/ios-live-activity-schemas-configuration/).

## Create the events

These are example event names for this guide. When your app or backend sends a name for the first time, Pushwoosh [creates that event automatically](/product/audience-data-and-segmentation/events/#implementation). Create the events in the Control Panel first only if you want to set attribute types yourself before the first send.

Create (or reuse) the events `CheckInCompleted`, `FlightStatusChanged`, and `FlightLanded`.

[Learn more about creating events](/product/audience-data-and-segmentation/events/#implementation)

## Build the journey

Open [Customer Journey Builder](/product/customer-journey/pushwoosh-journey-overview/), create a campaign, and build everything below on one canvas.

1. Go to **Campaigns → Customer Journey Builder**.
2. Click **Create campaign**.
3. Click **Build a journey from scratch**.

### Set the entry

1. Add a **Trigger-based entry** element to the canvas.
2. Set it to `CheckInCompleted`.

![Trigger-based entry panel with EVENT set to CheckInCompleted](/live-activity-how-to-track-flight-status-with-live-activity-3.webp)

### Start the flight card

1. Add a **Live Activity** element after the entry.
2. Name it `Flight card start`.
3. Set **Action** to **Start**.
4. Select the flight **Widget** and **Schema version**.

![Flight card start with Action set to Start and flight Widget and Schema version selected](/live-activity-how-to-track-flight-status-with-live-activity-1.webp)

5. Set **Card key: event** to `CheckInCompleted`.

![Card key: event set to CheckInCompleted](/live-activity-how-to-track-flight-status-with-live-activity-4.webp)

6. Fill **Card content** (`gate`, `status`, `estimatedTime`) and the alert fields.

![Card content fields gate, status, and estimatedTime filled in, with alert fields below](/live-activity-how-to-track-flight-status-with-live-activity-5.webp)

7. Click **Apply**.


### Wait and update the card

Continue on the same canvas after the Start element.

1. Add a **Wait for Trigger** element.
2. Wait for `FlightStatusChanged`.
3. Set a waiting period that fits your flight updates.

![Wait for Trigger set to FlightStatusChanged with a waiting period](/live-activity-how-to-track-flight-status-with-live-activity-6.webp)

4. On the branch that fires when the event happens, add a **Live Activity** element.
5. Name it `Flight card update`.
6. Set **Action** to **Update**.
7. Choose the same **Widget** and **Schema version**.

![Flight card update with Action set to Update and the same Widget and Schema version selected](/live-activity-how-to-track-flight-status-with-live-activity-7.webp)

8. Select `Flight card start` in **Card created by**.

![Card created by set to Flight card start on the Update element](/live-activity-how-to-track-flight-status-with-live-activity-8.webp)

9. Update **Card content**.

![Card content fields updated on the Flight card update element](/live-activity-how-to-track-flight-status-with-live-activity-9.webp)

10. Click **Apply**.

### Wait and end the card

Continue on the same canvas after the Update element.

1. Add another **Wait for Trigger** element.
2. Wait for `FlightLanded`.

![Wait for Trigger set to FlightLanded](/live-activity-how-to-track-flight-status-with-live-activity-10.webp)

3. On the branch that fires when the event happens, add a **Live Activity** element.
4. Name it `Flight card end`.
5. Set **Action** to **End**.
6. Choose the same **Widget** and **Schema version**.
7. Select `Flight card start` in **Card created by**.

![Flight card end with Action set to End, the same Widget and Schema version selected, and Card created by set to Flight card start](/live-activity-how-to-track-flight-status-with-live-activity-11.webp)

8. Set alert and **Dismiss after, min** if needed.

![Alert fields and Dismiss after, min on the Flight card end element](/live-activity-how-to-track-flight-status-with-live-activity-12.webp)

9. Click **Apply**.

![Full flight status journey on the canvas with entry, Start, Wait for Trigger, Update, Wait for Trigger, and End](/live-activity-how-to-track-flight-status-with-live-activity-13.webp)

## What the passenger sees

On the lock screen, the passenger gets one Live Activity card that changes as the flight progresses. For example:

<Tabs>
<TabItem label="After check-in">
Gate `B12`, status `Boarding`, estimated time `18:45`.

![Lock-screen Live Activity card after check-in showing gate B12, Boarding, and estimated time 18:45](/live-activity-how-to-track-flight-status-with-live-activity-14.webp)
</TabItem>
<TabItem label="When status changes">
The same card updates, for example gate `B14`, status `Delayed`, estimated time `19:10`.

![Lock-screen Live Activity card after a status change showing gate B14, Delayed, and estimated time 19:10](/live-activity-how-to-track-flight-status-with-live-activity-15.webp)
</TabItem>
<TabItem label="After landing">
The card closes and leaves the lock screen.
</TabItem>
</Tabs>