Displaying inline paywalls

This page provides an overview of how to integrate inline paywalls

Media publishers can be interested in displaying inline paywalls - ie: paywalls that are displayed inside an a premium article. Technically, this amounts to displaying a Purchasely Screen (child view) into a parent view handled by the application.


Let us see how you can do that.

  1. Create the desired paywall with the Screen composer.


  2. The desired height of the Purchasely view can be configured by clicking on the first item (the layout) in the Screen structure of the Screen composer


  3. Once saved, this Paywall can then be associated to a given Placement (eg: inline_paywall) that will be called from the article.

  4. To display the block inline with the article, you need to pre-fetch this Placement the Placement

  5. The height of the paywall is defined by the property height of the object PLYPresentation instance retrieved (SDK version >= 5.0.2 on iOS & 5.0.4 on Android)


  6. The view returned can then directly be nested in the viewController of the article displayed by the app.


The CTA inside the Paywall can either:

  • link to another full Screen also created with Purchasely. You can do that by associating the action Open Screen with the button
  • directly trigger the in-app purchase flow with the action Purchase but in this case, you should add a link to the Terms & Conditions inside of the block to be compliant with the app stores guidelines.

If you want to A/B test this inline Paywall, you can configure a standard UI or Price A/B test on the Placement inline_paywall itself.

If you want to A/B test the positioning of the Paywall inside the article, it's possible but the business rule will have to be integrated on the app side, as it's the app which is in charge of displaying the Paywall. You can leverage the value returned in the property abTestVariantId - on which you have control when setting up the A/B test - to determine which variant the user belongs to and adjust the positioning of the block depending on it.