Push notifications and deep links

BackendTier 3 · scale vocabularyPhase 7 · Grow beyond one city

Messages sent to a user's device to pull them back, and links that open the app directly on the exact right screen.

A product often needs to reach a user who is not currently in the app, and to send them to the exact screen that matters rather than the home page. Push notifications and deep links exist to do both: bring the user back with a message and drop them directly on the relevant place.

A push notification is a message your server sends to a user's phone even when the app is closed ("your order's on the way"). It relies on Apple's and Google's delivery systems and the user's permission. A deep link is a link that, when tapped, opens your app straight to a specific screen, a product, an order, rather than the home screen.

Together they're how you re-engage users and land them exactly where you want. Both need care: too many notifications and users disable them or uninstall.

A junior PM, stuck

Marketing's Eid campaign push dropped everyone on the home screen instead of the offers page, and they are asking me why it broke. The catch is our order-status pushes land on the right screen every time, so I cannot tell what is different about the campaign one. I do not want to guess and send them chasing the wrong team.

The difference is one line in the payload, and you can spot it by putting the two pushes side by side. A push is just a small JSON message your server sends to the phone, and whether the tap lands on the right screen depends on a deep link inside it that tells the app exactly where to go. Here is the working order push next to the campaign one: same shape, one field apart.

The order-update push and the campaign push, side by side
01The order push, lands on the order screen
fires
{
"notification": { "title": "Your Kacchi is on the way" },
"data": {
"deeplink": "tiffinbox://order/o_5512"
}
}
02The campaign push, lands on home
fires
{
"notification": { "title": "Eid offers are live" },
"data": {}
}

Click a step to see the lines it points at.

Judging a push by whether it was delivered. Delivery and destination are different things: the campaign push arrived perfectly, it just carried no deeplink, so a green send report told marketing nothing about the broken landing.
Leaving the deeplink to whoever composes the campaign by hand. Hand-built pushes drop the field silently, so the durable fix is a template that requires a deeplink before the send button works.
Testing a deeplink by reading the payload instead of tapping it. A deeplink can be present and still point at a screen that has since moved or been removed; only tapping it on a device proves where it actually lands.
Blaming the app or the delivery system for a home-screen landing. The app did exactly what an empty data block asks for, so the fix is in the message content, not the client or the push provider.

Tell marketing: "The campaign push landed on home because its payload had no data.deeplink. The order pushes work because they always include one, like tiffinbox://order/o_5512. We'll add the deeplink to the campaign template and test it by tapping the real notification, not just checking the send succeeded." You read a push payload and separated delivery from destination, then aimed the fix at the message instead of the app. That is the skill.

Notification strategy is squarely product: what's worth interrupting someone for, and how often, before they turn you off.
Deep links make campaigns and messages far more effective by removing steps; broken ones ("it just opens the home screen") are a common, fixable frustration.

"The push should deep-link to the order screen, not dump them on home."

Appears in Phase 7, Grow beyond one city.