Deep links that open the right screen
A notification that dumps someone on the home feed wasted the tap. Carry a route — a screen plus parameters — and let your own navigator handle it.

The visible part of a message is half the job. The other half is where the tap lands. If it lands on a generic home screen, you spent the interruption to show someone a place they already know.
Carry a route, not a URL soup
A useful payload is structured: a screen name, plus key/value parameters. cart with id=abc is enough for your app to reopen that cart. A long HTTPS URL that your app then has to parse is how schemes drift between iOS, Android and email.
Keep one route shape across push, email and in-app. The channel should not change the contract your navigator implements.
Map it in your app, not in the vendor
Your app already has a router. An onNavigate handler that receives { screen, kv } and calls that router is the whole integration. The vendor should not need to know whether you use React Navigation, a custom stack, or something else.
That also means you can refuse unknown screens. If a campaign points at a route you have not shipped yet, drop it instead of crashing.
Parameters have to be real
A deep link to a cart that no longer exists, or a product that is out of stock, is worse than no link. Either keep the referenced object around long enough for the campaign's delay to fire, or fall back in the handler to a sensible screen and log the miss.
Images and iOS
If the push includes an image, iOS will silently drop http URLs. Use https. Fail the campaign at save time rather than discovering this from "why did nobody on iPhone see the picture".
Where Retainza fits
Every Retainza campaign can carry a structured { screen, kv } route. It travels on push, email and in-app. Your SDK onNavigate handler maps it onto the navigator you already have.


