# handleDeepLink()

A function that handles deep links and triggers paywalls based on configured campaigns.

> **Tip**

Configure deep link campaigns on the Superwall dashboard by adding the `deepLink` event to a campaign trigger.



> **Info**

Deep link events are also tracked via [`SuperwallEvent.deepLink`](/docs/ios/sdk-reference/SuperwallEvent) and sent to your [`SuperwallDelegate`](/docs/ios/sdk-reference/SuperwallDelegate).



Purpose [#purpose]

Processes a deep link URL and triggers any associated paywall campaigns configured on the Superwall dashboard. Returns whether Superwall will handle the URL so you can fall back to your own routing.

Signature [#signature]

```swift
@discardableResult
public static func handleDeepLink(_ url: URL) -> Bool
```

Parameters [#parameters]

<TypeTable
  type="{
  url: {
    type: &#x22;URL&#x22;,
    description: &#x22;The deep link URL to process for paywall triggers.&#x22;,
    required: true,
  },
}"
/>

Returns / State [#returns--state]

Returns `true` when Superwall will handle the URL. If called before `Superwall.configure(...)` completes, it only returns `true` for known Superwall URL formats or when cached config contains a `deepLink_open` trigger. Use the return value to continue your own deep-link handling when it is `false`.

Usage [#usage]

In your SceneDelegate or AppDelegate:

```swift
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
  guard let url = URLContexts.first?.url else { return }
  
  // Handle the deep link with Superwall
  let handled = Superwall.handleDeepLink(url)
  
  // Continue with your app's deep link handling if Superwall won't
  if !handled {
    handleAppDeepLink(url)
  }
}
```

iOS 13+ SceneDelegate:

```swift
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
  // Handle deep link on app launch
  if let url = connectionOptions.urlContexts.first?.url {
    let handled = Superwall.handleDeepLink(url)
    if !handled {
      handleAppDeepLink(url)
    }
  }
}
```

Legacy AppDelegate:

```swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  // Handle the deep link with Superwall
  let handled = Superwall.handleDeepLink(url)
  
  // Continue with your app's deep link handling
  if handled {
    return true
  }
  return handleAppDeepLink(url)
}
```