Search “package tracker” on the App Store and you’ll find the same app forty times: a list of parcels behind a banner ad, a “free trial” that bills $7.99 a week, and — for the polished ones — a request to connect your Gmail so the app can find your orders for you. That last part is the business model. Your purchase history is worth more than your subscription.
I wanted the boring version: paste a tracking number, get told when it arrives, and be left alone. Underway is that, plus the one piece of iOS that’s genuinely delightful for this problem — a Live Activity on delivery day.
Table of contents
Open Table of contents
What a parcel actually costs
This is the part nobody in the category talks about, and it decided every pricing choice.
Consumer apps don’t talk to USPS or DHL directly; they use an aggregator that normalises 900+ carriers into one API. I evaluated the usual ones. AfterShip and TrackingMore are priced for merchants, with a $70/month gate before you can do anything real. EasyPost is US-label-centric. Ship24 has webhooks and automatic carrier detection on every tier including the free one, self-serve USD billing, and — crucially — bills per registered tracking number, roughly four cents each, not per poll.
That “per registration” detail is the whole economics. Each parcel a user adds costs money the moment it’s added, whether they open the app again or not. A free tier of “unlimited parcels” is a promise to lose money on exactly the users who like the app most.
So Underway’s free tier is five new parcels a month, forever. Most people who track packages track two or three a month; five is genuinely free for them. People who track twenty a month are the ones the app costs money on, and they’re the ones asked to pay.
Why annual is $11.99 and not $4.99
The category anchor is $4.99 a year, and I priced above it on purpose. Take a heavy user at twenty parcels a month: 240 registrations × ~$0.039 ≈ $9.40 a year in aggregator cost. Apple’s cut on a small developer is 15%. At $4.99 that user is a loss before I’ve done any work. At $11.99 they’re a modest profit, the light users are subsidised by the free tier rather than by ads, and nobody’s inbox gets read to make the maths work.
Lifetime is built but switched off. A one-time price against a per-parcel running cost is a bet that a user’s lifetime volume stays under a threshold, and I don’t have the data yet to make that bet responsibly. It’s behind a flag (AppConfig.lifetimeEnabled = false) and will turn on when either the per-parcel cost drops — 17TRACK is about $0.002 a parcel at volume, and migrating heavy users there is the plan — or I have twelve months of usage to price it from.
And there is no weekly plan. The category is built on $7.99-a-week “trials”; Underway not having one is a feature I put in the App Store description.
The privacy line
Underway never asks for email access. It learns about a parcel in exactly three ways: you paste a tracking number, you scan a barcode, or you share a number from Mail, Messages, Safari or a shop’s app via the share extension. Carrier detection is automatic, so “paste” is the whole onboarding.
Your list is stored on the device with SwiftData and syncs through your iCloud, not through an Underway account, because there isn’t one. Nothing to delete, nothing to breach.
Delivery day
The moment I wanted to build the app around is out-for-delivery day. Underway starts a Live Activity: the parcel’s status sits on the Lock Screen and in the Dynamic Island until it lands, with local notifications for out-for-delivery, delivered and exceptions. Home and Lock Screen widgets cover the other days.
Two honest caveats from the competitor research. First, stops-away style tracking is mostly an Amazon and UPS thing; most carriers give you “out for delivery” and then “delivered”, so the Live Activity is calm rather than a map. Second, reviews of the category asked for widgets far more than for Live Activities. I built both, and I lead with the widget in the screenshots.
The risk I checked before launch
Deliveries — the app a lot of people loved for a decade — was killed by carrier terms of service. Redistributing tracking data from USPS, UPS and FedEx to consumers through a third party is something the carriers can and do prohibit, and when they enforce it the app is over.
Before shipping I read Ship24’s terms and the carriers’ developer terms with that specific question: does paid consumer redistribution through an aggregator sit inside the lines? For the aggregator route it does, which is one more reason to use an aggregator rather than scraping carriers directly. It’s still the biggest external risk the app has, and I’d rather say so than pretend it isn’t there.
How it’s built
SwiftUI and SwiftData on iOS 17, XcodeGen for the project. A TrackingProvider protocol is the seam: a deterministic mock provider for development and screenshots, the Ship24 provider for production, and room for 17TRACK later. Shipment, checkpoint and a normalised ShipmentStatus enum (including available for pickup, which carriers report six different ways). A widgets target and a share-extension target share the parcel snapshot through an app group. Sixteen languages via a string catalog.
Underway shipped in September 2026 as a category play rather than a takedown: the clone I benchmarked against has 33 silent ratings. The bar is low; the point is to clear it honestly.
Underway is on the App Store. Five parcels a month are free, and it will never ask for your inbox.