Deeplinks automations

Purchasely supports the use of Deeplinks to trigger different actions to improve conversion, retention and upsell. You can send a Push or an email with that deeplink and Purchasely will open the requested presentation or page for you.

Here are the actions Purchasely supports:

  • Display a product page (paywall)

  • Display the user subscriptions

  • Display the cancellation survey

  • Update credit card (Deeplink to App Store)


To integrate these automations you need 2 things:

  • Pass the deeplink to Purchasley when it is received by the application

  • Allow Purchasely to display content over your interface

The first thing you need to do is to pass the deeplink URL to Purchasely when your app receives it:

// ---------------------------------------------------
// If you are **NOT** using SceneDelegate
// ---------------------------------------------------

// AppDelegate.swift

import Purchasely

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
	// You can chain calls to multiple handler using a OR
	return Purchasely.isDeeplinkHandled(deeplink: url) 

// ---------------------------------------------------
// If you are using SceneDelegate
// ---------------------------------------------------

// SceneDelegate.swift

import Purchasely

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

	// …

	if let url = connectionOptions.urlContexts.first?.url {
		_ = Purchasely.isDeeplinkHandled(deeplink: url)

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
	if let url = URLContexts.first?.url {
		_ = Purchasely.isDeeplinkHandled(deeplink: url)

Allow display

Your app might have a launch routine that requires to be fulfilled before another screen can be displayed. It can be splash screen, on boarding, login …

The display of Purchasely deeplinks is deferred until you authorize it. Once your app is ready, notify Purchasely.


Get presentation result

When a deeplink is called, as you don't instanciate the paywall yourself, no closure will be called to tell you what happened. You can retrieve the result of the user action in a paywall opened with a deeplink by setting a DefaultPresentationResultHandler.

Purchasely.setDefaultPresentationResultHandler { [weak self](result, plan) in
    switch result {
        case .purchased:
        case .restored:
        case .cancelled:
        @unknown default:

The callback PLYProductViewControllerResult(iOS) / ProductViewResultListener (Android) is optional, you can set to null if you do not need it. You can override it when you display a presentation directly.


You can open a product presentation directly to the user with the default presentation or a specific one used for a specific purpose / promotion.

⚠️ This kind of push requires users opt-in (see App Store Review Guidelines - 4.5.4).


app_scheme://ply/presentations app_scheme://ply/placements/PLACEMENT_ID app_scheme://ply/placements

Cancellation survey

Cancellation survey can be triggered to get some feedback by the user after a subscription cancellation.




This deeplink will open the subscriptions view inside the app.


Update billing

This deeplink will open the App Store / Play Store setttings for the user to updates its credit card after a payment error.


Last updated

© Purchasely 2020-2023