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 expects | Build the link as |
|---|---|
case "products" → detail | yourapp://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
| Parameter | Purpose |
|---|---|
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=required | Force this one link behind login. |
Short links & the bridge page
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).
Checklist before you publish a link
- The target path's first segment matches a
casein yourparseTarget. - Any id/slug segment is present (
products/42, not bareproducts, if you want the detail screen). - A
keyNameis 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 →