# How to show delivery progress on the lock screen

Let customers follow the courier on the lock screen from order placed until delivery. 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 delivery 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 `OrderPlaced`, `CourierStatusChanged`, and `OrderDelivered`.

[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 `OrderPlaced`.

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

### Start the order card

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

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

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

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

6. Fill **Card content** (`courierName`, `eta`, `distanceMeters`) and the alert fields.

![Card content fields courierName, eta, and distanceMeters filled in, with alert fields below](/live-activity-how-to-track-deliveries-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 `CourierStatusChanged`.
3. Set a waiting period that fits your delivery updates.

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

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

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

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

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

9. Update **Card content**.

![Card content fields updated on the Order card update element](/live-activity-how-to-track-deliveries-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 `OrderDelivered`.

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

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

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

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

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

9. Click **Apply**.

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

## What the customer sees

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

<Tabs>
<TabItem label="After the order is placed">
Courier `Alex M.`, ETA `18:30`, distance `1200` meters.

![Lock-screen Live Activity card after order placed showing courier Alex M., ETA 18:30, and distance 1200 meters](/live-activity-how-to-track-deliveries-with-live-activity-14.webp)
</TabItem>
<TabItem label="When courier status changes">
The same card updates, for example courier `Alex M.`, ETA `18:15`, distance `400` meters.

![Lock-screen Live Activity card after a courier update showing ETA 18:15 and distance 400 meters](/live-activity-how-to-track-deliveries-with-live-activity-15.webp)
</TabItem>
<TabItem label="On delivery">
The card closes and leaves the lock screen.
</TabItem>
</Tabs>