Rules allow you to decide which users see a paywall when a trigger is fired.

  1. Rules are evaluated in order.
  2. Once a rule is matched, no other rules are evaluated.
  3. A user's paywall assignment is sticky.


What are Sticky Paywall Assignments?

So long as that paywall exists in a rule (even if you change its percent to 0%) a user will continue to be served that paywall.

Remember: Changing a paywall's percentage doesn't effect assignments for users who already saw that paywall — to remove assignments you must explicitly click the X button. To remove assignments for users who saw no paywall, create a new rule.

This allows you to decide if you should continue showing an old paywall to users who already saw it. For example, you may decide to increase prices but for consistency keep the paywall with the old pricing visible for those who've already seen it.

Adding Rules

Add a rule to a campaign by clicking the Add Rule button from within a Campaign.


Updating Conditions

Change a rule's condition by clicking the condition itself, marked with a pencil icon to its right. In this example, we add a condition that evaluates to true if user has logged greater than or equal to 3 days.



Conditions Adopt Liquid Syntax

Under the hood, Superwall's client library evaluates if statements in Liquid (learn more).

You do NOT need to add {% if or %} tags as they will break your condition. Superwall wraps your conditions with them client side before evaluation.

As with Paywall Text Variables, Superwall exposes user, params and device dictionaries for referencing in your conditions:




User attributes your SDK implementation sets on the user. See Setting User Attributes


Parameters defined when triggering a campaign. See Triggering Paywalls and Tracking Events


Device attributes that are gathered by the SDK.

The condition editor offers suggestions (with a random example user object) as you type. At this point in time, suggestions don't work for params.


Condition Operators

The following operators are valid in Liquid:






does not equal


greater than


less than


greater than or equal to


less than or equal to


checks for the presence of a substring inside a string


logical or


logical and


user.age > 40
user.genre == "jazz" or user.genre == "classical"
params.outcome contains "substring"

Rule Settings

The following settings can be access by clicking the ellipse icon to the right of any rule




Move Up

Swaps the rule's order with the rule directly above it.

Move Down

Swaps the rule's order with the rule directly below it.


Pauses the rule, preventing it from being evaluated all together.


Deletes the rule.

Did this page help you?