Rules
Rules allow you to decide which users see a paywall when a trigger is fired.
- Rules are evaluated in order.
- Once a rule is matched, no other rules are evaluated.
- 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
and params
dictionaries for referencing in your conditions:
Object | Description |
---|---|
| 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 |
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:
Syntax | Operation |
---|---|
| equals |
| 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 |
Examples:
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


Setting | Description |
---|---|
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. |
Pause | Pauses the rule, preventing it from being evaluated all together. |
Delete | Deletes the rule. |
Updated about 1 month ago