Overview
Deep linking allows you to open a specific page within your app from an external source such as a website, email, or SMS. If the app is not installed, users are redirected to the appropriate app store. If on an unsupported platform, users are redirected to a fallback website. This guide covers setup and usage of deep linking across:- Android (App Links)
- iOS (Universal Links)
- Push notifications
- Emails
- In-app messages
To function correctly, deep links must:
- Be hosted over HTTPS
- Include the required verification files:
Android setup
Use Android Studio’s App Links Assistant to simplify setup.Steps
- Open Android Studio → Tools → App Links Assistant
- Follow steps to set up links to your site
- Android Studio auto-generates the required code and
assetlinks.jsonfile
Manifest example
Activity handler example
assetlinks.json file must be hosted at:
iOS setup
Apple supports Universal Links for opening your app from external sources like email and SMS. For simpler use cases, URL Schemes can be used when the app is already installed. This guide covers Universal Links setup.Setup Universal Links
- In Xcode → select target → Signing & Capabilities → add Associated Domains
- Add your domain as
applinks:yourdomain.com
AppDelegate logic
Host the apple-app-site-association file
The file must be hosted at:
| Placeholder | Replace with |
|---|---|
TEAMID | Your Apple Team ID (found in Apple Developer account) |
com.example.example | Your iOS app bundle identifier |
/page-name | The path(s) in your app that should handle deep links |
Hosting the verification files
Both Android and iOS require a verification file hosted at a.well-known path on your domain. Here’s a Node.js example serving both:
Send push notifications with deep links
Include the deep link as:urlproperty (Launch URL)- Or
dataproperty (recommended for iOS to suppress browser redirect)
- Android: Opens to the linked activity directly
- iOS: Opens browser, then app (unless suppressed — see iOS setup Warning above)
Send emails with deep links
By default, email links use OneSignal’s tracking, which alters the URL and breaks deep linking.To support deep linking
- Disable link tracking in the dashboard (Track link clicks)
- Or set
disable_email_click_tracking: truein the API

Behavior matrix
| Scenario | Result |
|---|---|
| iOS + Safari + Universal Link + Tracking Enabled | Opens Safari, asks to open app |
| iOS + Safari + Universal Link + Tracking Disabled | Opens app directly |
| iOS + Non-Safari + Universal Link | Opens App Store |
| Android + Universal Link or App Link | May open App Store if not installed |
| Android + App Link + Tracking Disabled | Opens app directly |
| Android + App Link + Tracking Enabled | Opens browser first, then app |
Send in-app messages with deep links
Drag-and-drop editor
- Use Custom Action ID
- Set the deep link URI as Action Name
HTML editor
- Use Click Name