Investment and trading apps have deep linking use cases that require precision and security. A deep link to a stock page needs to resolve instantly (prices move). A deep link to a trade confirmation needs authentication before displaying sensitive data. A deep link from a push notification about a price alert needs to open the exact asset the user is tracking.
This guide covers deep linking patterns for investment and trading apps. For broader fintech deep linking, see deep linking for fintech and banking apps. For budgeting apps, see budgeting app deep links.
Route Patterns
Asset Pages
/stocks/{ticker} → Stock detail page (AAPL, MSFT, TSLA)
/etfs/{ticker} → ETF detail page
/crypto/{symbol} → Cryptocurrency page
/funds/{fund-id} → Mutual fund page
/bonds/{isin} → Bond detail page
Portfolio and Account
/portfolio → Portfolio overview
/portfolio/{account-id} → Specific account portfolio
/watchlist → User's watchlist
/watchlist/{list-id} → Specific watchlist
/positions/{ticker} → Position detail for an asset
Trading
/trade/{ticker} → Trade screen for an asset
/trade/{ticker}/buy → Pre-filled buy order
/trade/{ticker}/sell → Pre-filled sell order
/orders → Order history
/orders/{order-id} → Specific order detail
Research and Education
/research/{ticker} → Analyst research for an asset
/news/{article-id} → Market news article
/learn/{topic} → Educational content
/screener/{filter-preset} → Stock screener with preset filters
Implementation
iOS: Stock Detail Deep Link
func handleDeepLink(_ url: URL) {
let pathComponents = url.pathComponents
guard pathComponents.count >= 2 else {
navigateToHome()
return
}
switch pathComponents[1] {
case "stocks":
guard pathComponents.count >= 3 else { return }
let ticker = pathComponents[2].uppercased()
navigateToStock(ticker: ticker)
case "trade":
guard pathComponents.count >= 3 else { return }
let ticker = pathComponents[2].uppercased()
let side = pathComponents.count >= 4 ? pathComponents[3] : nil
navigateToTrade(ticker: ticker, side: side)
case "portfolio":
navigateToPortfolio()
case "orders":
if pathComponents.count >= 3 {
navigateToOrder(id: pathComponents[2])
} else {
navigateToOrders()
}
default:
navigateToHome()
}
}
Android: Trade Screen Deep Link
class DeepLinkActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val uri = intent.data ?: return finish()
val segments = uri.pathSegments
when (segments.firstOrNull()) {
"stocks" -> {
val ticker = segments.getOrNull(1)?.uppercase() ?: return
navigateToStock(ticker)
}
"trade" -> {
val ticker = segments.getOrNull(1)?.uppercase() ?: return
val side = segments.getOrNull(2) // "buy" or "sell"
navigateToTrade(ticker, side)
}
"portfolio" -> navigateToPortfolio()
"watchlist" -> navigateToWatchlist()
else -> navigateToHome()
}
finish()
}
}
Security Considerations
Authentication Before Display
Investment app deep links must always verify authentication before showing account data:
func navigateToStock(ticker: String) {
// Stock pages are public info, no auth needed
showStockDetail(ticker)
}
func navigateToPortfolio() {
// Portfolio is private, require auth
if authManager.isAuthenticated {
showPortfolio()
} else {
// Store pending destination
pendingDeepLink = "/portfolio"
showLogin()
}
}
func navigateToTrade(ticker: String, side: String?) {
// Trading requires auth AND account verification
guard authManager.isAuthenticated else {
pendingDeepLink = "/trade/\(ticker)/\(side ?? "")"
showLogin()
return
}
guard authManager.hasVerifiedAccount else {
showAccountVerificationRequired()
return
}
showTradeScreen(ticker: ticker, side: side)
}
Preventing Order Manipulation
Never allow deep links to execute trades directly. A deep link should open a pre-filled order form, not submit an order:
GOOD: /trade/AAPL/buy → Opens buy form for AAPL, user confirms
BAD: /trade/AAPL/buy?quantity=100&type=market → Auto-submits a market order
The user must always confirm a trade with explicit action (button tap, biometric confirmation).
Rate Limiting Deep Link Access
Investment apps should rate-limit deep link resolution to prevent:
- Account enumeration (iterating through portfolio IDs).
- Price feed abuse (rapid requests for stock data).
- Brute force attacks on order IDs.
Notification Deep Links
Price Alerts
{
"title": "AAPL hit your price target",
"body": "Apple Inc. reached $195.00",
"deep_link": "https://links.yourapp.com/stocks/AAPL",
"category": "price_alert"
}
Order Execution
{
"title": "Order filled",
"body": "Buy 10 MSFT at $420.50 executed",
"deep_link": "https://links.yourapp.com/orders/ORD-789",
"category": "order_filled"
}
Earnings and Events
{
"title": "Earnings report: TSLA",
"body": "Tesla reports Q2 2026 earnings after market close",
"deep_link": "https://links.yourapp.com/research/TSLA",
"category": "earnings"
}
Dividend Notifications
{
"title": "Dividend received",
"body": "$12.50 dividend from VTI",
"deep_link": "https://links.yourapp.com/portfolio",
"category": "dividend"
}
Sharing Deep Links
Investment apps share content in specific ways:
Stock Sharing
When a user shares a stock from your app, the shared link should:
- Open the stock detail page in the app (for users with the app).
- Show a web preview with the stock price, chart, and a download prompt (for users without the app).
- Include Open Graph tags for rich previews in messaging apps.
<meta property="og:title" content="AAPL - Apple Inc. | $195.00">
<meta property="og:description" content="View Apple Inc. stock on YourApp. Real-time quotes, charts, and analysis.">
<meta property="og:image" content="https://yourapp.com/og/stocks/AAPL.png">
Watchlist Sharing
Some apps allow sharing watchlists:
https://links.yourapp.com/watchlist/shared/{share-token}
The share token should be one-time or time-limited to prevent unauthorized access to a user's investment interests.
Referral Links
Investment app referrals often include incentives (free stock, bonus cash):
https://links.yourapp.com/invite/{referral-code}
The referral deep link should:
- Credit the referrer after the new user signs up and funds their account.
- Show the new user what they will receive.
- Handle the case where the new user already has an account.
Regulatory Considerations
Investment apps are regulated by financial authorities (SEC, FINRA, FCA). Deep links must comply with:
- Disclosure requirements. Links to specific investments may need to include risk disclosures on the web fallback page.
- Advertising rules. Deep links used in marketing must comply with investment advertising regulations.
- Record keeping. Links used for client communications may need to be archived for regulatory compliance.
- Suitability. Do not deep link users directly to complex products (options, leveraged ETFs) without appropriate context.
Tolinku for Investment Apps
Tolinku supports the route patterns investment apps need. Define routes for stocks, portfolios, trades, and research in the Tolinku dashboard. The lightweight SDK adds minimal overhead to your app's startup time, which matters for apps where users expect instant market data.
For product page deep links, see product page deep links. For fintech deep linking patterns, see deep linking for fintech and banking apps.
Get deep linking tips in your inbox
One email per week. No spam.