Skip to main content

Module 9 — Creating links in the dashboard

Routing only works when the link you create points at a path your router understands. This is Layer 4 of the mental model — and the most common cause of "it opens but lands on the wrong screen."


The rule

The link's target path must use the same words as your parseTarget. If your router handles products, the link's destination must be products/<id> — not urunler/<id>, not product-detail/<id>.

Your router expectsBuild the link as
case "products" → detailyourapp://products/42 or https://link.paylisher.com/products/42
case "wallet"yourapp://wallet
campaigns/<slug>/apply (auth)yourapp://campaigns/summer/apply?auth=required

Both forms (custom scheme and Universal Link) resolve to the same pathSegments, so a single dashboard campaign can target either.


Add campaign and source parameters

Attach a campaign key so the SDK can resolve campaign data and attribute the session:

yourapp://products/42?keyName=SUMMER25&source=instagram
ParameterPurpose
keyName (key, k)Campaign key → resolved into campaignData, registered as campaign_key.
source (utm_source)Traffic source → normalized into the canonical campaign_source.
campaign_id (campaign)Campaign id for your reporting.
auth=requiredForce this one link behind login.

When the dashboard issues a short link (e.g. https://link.paylisher.com/c/<key>), it resolves through a bridge page:

  • The bridge is a small web page opened in the browser.
  • If your app is installed, it triggers the app's registered target (the custom scheme or Universal Link) — so your app sees the final destination, not the bridge URL.
  • If the app is not installed, it sends the user to the App Store, enabling the deferred deep link flow on first launch.

So the short link's resolved destination must still be a path your router knows. If it resolves to a path you don't handle, the user falls back to your safe default (Home).


  • The target path's first segment matches a case in your parseTarget.
  • Any id/slug segment is present (products/42, not bare products, if you want the detail screen).
  • A keyName is attached if you want campaign resolution and attribution.
  • For Universal Links, the path is covered by your AASA paths (see Module 2).

Next: Module 10 — Testing