> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encorekit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Present Offers with Superwall

> Trigger an Encore placement from a Superwall paywall dismissal or a custom paywall action.

## Overview

Superwall owns the paywall, so the only thing that changes is *where* you call `show()`. Everything else in [Presenting Offers](/publishers/ios/quickstart/present-offers) applies unchanged: the same placement call, the same handlers, the same outcome model.

***

## Trigger on paywall dismissal

Present an offer when a user closes your Superwall paywall without converting:

```swift theme={null}
import SuperwallKit
import Encore

class SWDelegate: SuperwallDelegate {
    func willDismissPaywall(withInfo paywallInfo: PaywallInfo) {
        Encore.shared.placement("paywall_decline").show()
    }
}
```

Full contract: [`placement()`](/publishers/ios/sdk-reference/placement).

***

## Trigger from a custom paywall action

Superwall paywalls can emit named actions. Handle the name in your delegate and route it to a placement:

```swift theme={null}
import SuperwallKit
import Encore

class SWDelegate: SuperwallDelegate {
    func handleCustomPaywallAction(withName name: String) {
        if name == "EncoreTrigger" {
            Encore.shared.placement("paywall_decline").show()
        }
    }
}
```

In the Superwall editor, add a custom action named `EncoreTrigger` to the button or element that should open the offer.

<video className="w-full aspect-video rounded-xl" autoPlay loop muted playsInline src="https://storage.googleapis.com/yaw-assets/website/Superwall%20Demo.mp4" />

***

## Next

* [Add Subscription Product](./add-subscription-product) - let Superwall observe the purchase Encore makes
