/deep
GETDeeplink endpoint. Registered as a Universal Link / App Link — the OS opens your app instantly when installed, with a graceful store fallback otherwise.
Overview#
/deep is Mobana's re-engagement link path. Use it when the primary intent is to open the installed app — unlock codes, referral links, share flows, deep-routed push notifications, and any link where you want the user inside the app, not in the store.
- App installed — iOS / Android intercept the URL via Universal Links / App Links and hand it directly to your app.
onDeepLink('universal_link')fires within ~50 ms of the tap, before any network round-trip. No browser involved. - App not installed (via browser) — Mobana captures attribution, then serves a scheme:// (iOS) or intent:// (Android) interstitial that attempts to open the app. After a 2–3 s timeout the user is redirected to the App Store / Play Store. On first launch the SDK calls
/findto match the install — attribution lands ingetAttribution()and the payload fires viaonDeepLink('deferred').
For pure acquisition campaigns where a clean, instant store redirect matters more than app-open, use /link instead. /link skips the app-open attempt entirely so there is no 2–3 s timeout in the not-installed funnel.
See the Deeplinks guide for the full lifecycle and platform setup.
Endpoint#
GET https://YOUR_APP_ID.mobana.ai/deepOr use your custom endpoint: https://yourdomain.com/d/deep
Query Parameters#
| Parameter | Type | Description |
|---|---|---|
utm_source | string | Traffic source (e.g., email, push, sms). Highly recommended. |
utm_medium | string | Marketing medium (e.g., referral, push, share). Highly recommended. |
utm_campaign | string | Campaign name. |
utm_content | string | Ad content identifier (e.g. ad variant name). |
utm_term | string | Search keywords. |
data | string | URL-encoded JSON object for structured custom payloads (unlock codes, referral IDs, in-app routing). Delivered as a typed object on event.data in onDeepLink and on attribution.data in getAttribution(). For simple flat values, skip data and pass plain query params — they come back via click_params. |
url | string | Override the store fallback destination. If omitted, the endpoint auto-detects platform and uses the App Store / Play Store URLs configured for your app. |
Every other query parameter (e.g. fbclid, ttclid, gclid, partner IDs) is captured automatically and surfaced as click_params — no configuration needed.
Examples#
Re-engagement with payload
https://YOUR_APP_ID.mobana.ai/deep
?data={"unlock":"PROMO50","ref":"sara"}The data JSON is delivered to your app via onDeepLink:
interface Payload { unlock?: string; ref?: string; route?: string }
Mobana.onDeepLink<Payload>(({ data, source }) => {
if (data?.unlock) applyUnlock(data.unlock); // "PROMO50"
if (data?.ref) trackReferral(data.ref);
if (data?.route) navigate(data.route);
});UTM-tagged re-engagement
https://YOUR_APP_ID.mobana.ai/deep
?utm_source=email
&utm_campaign=reactivation
&data={"route":"settings/notifications"}Native setup#
For /deep links to open your app directly when it's installed, two things are needed:
- iOS URL Scheme in App Settings → Deeplinks (e.g.
myapp) and the same scheme registered in your app'sInfo.plist. Mobana firesmyapp://…from the/deepredirect page; if the app is installed iOS hands the URL to your app viaLinking. - Android intent-filter in
AndroidManifest.xmlscoped toandroid:pathPrefix="/deep". Mobana uses anintent://URL targeting your package name; the intent-filter lets the AndroidLinkingAPI receive the URL. - SDK wiring.
Mobana.init()attaches the URL and AppState listeners that fireonDeepLinkand notify the server about the delivered link.
See the Deeplinks guide for full setup steps (code snippets, Expo config, and Universal Links / App Links).
<!-- AndroidManifest.xml — required for intent:// routing and App Links.
autoVerify enables App Links (OS-level interception) when SHA-256
fingerprints are configured in the Dashboard -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="YOUR_APP_ID.mobana.ai"
android:pathPrefix="/deep" />
</intent-filter>Custom endpoints#
To serve Mobana links from your own domain, your reverse proxy must forward:
/deep(plus/link,/link/record,/link/probe,/find,/conversion,/flows,/ping) under your chosen path prefix./.well-known/apple-app-site-associationand/.well-known/assetlinks.jsonat the host root — the OS only looks at the root.
# Using your custom endpoint
https://yourdomain.com/d/deep?data={"promo":"SUMMER25"}The nginx / Apache templates in App Settings → Custom Endpoint already include all required forwarding rules.