/deep

GET

Deeplink 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 /find to match the install — attribution lands in getAttribution() and the payload fires via onDeepLink('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/deep

Or use your custom endpoint: https://yourdomain.com/d/deep

Query Parameters#

ParameterTypeDescription
utm_sourcestringTraffic source (e.g., email, push, sms). Highly recommended.
utm_mediumstringMarketing medium (e.g., referral, push, share). Highly recommended.
utm_campaignstringCampaign name.
utm_contentstringAd content identifier (e.g. ad variant name).
utm_termstringSearch keywords.
datastringURL-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.
urlstringOverride 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

Deeplink URL
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

Re-engagement URL
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:

  1. iOS URL Scheme in App Settings → Deeplinks (e.g. myapp) and the same scheme registered in your app's Info.plist. Mobana fires myapp://… from the /deep redirect page; if the app is installed iOS hands the URL to your app via Linking.
  2. Android intent-filter in AndroidManifest.xml scoped to android:pathPrefix="/deep". Mobana uses an intent:// URL targeting your package name; the intent-filter lets the Android Linking API receive the URL.
  3. SDK wiring. Mobana.init() attaches the URL and AppState listeners that fire onDeepLink and 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-association and /.well-known/assetlinks.json at 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.

AI agents: for complete Mobana SDK & API documentation, get full context here or visit llms.txt