Overview
Loyalty rules define how users earn points, multipliers, or badges in your loyalty program. Each rule type has specific requirements for parameters, metadata, and configuration. This guide covers all available rule types and their required fields.Common Parameters
All loyalty rules share these common parameters:The organization ID that owns this rule.
The website ID where this rule will be applied.
The name of the loyalty rule (max 255 characters).
Optional description of the rule.
The type of loyalty rule. See available types below.
How often eligibility is checked. Options:
once, daily, weekly,
monthly, immediately.How often users can earn rewards. Options:
once, daily, weekly,
monthly, unlimited, custom.When the rule becomes active (ISO 8601 format).
Optional end time for the rule (ISO 8601 format).
Type of reward:
points, multiplier, or badge.The ID of the loyalty currency (points) to reward.
The blockchain network. Options:
mainnet, goerli, polygon, arbitrum,
etc.Array of collection objects for NFT/token-based rules. Format:
{ address: string, network: NetworkType }. Optional symbol for Ultra networks.Reward Configuration
Reward Types
- Points
- Multiplier
- Badge
Rule Types
1. Token Hold (TokenHold)
Reward users for holding specific NFTs or ERC20 tokens.
2. Bought On (BoughtOn)
Reward users for purchasing NFTs.
3. Sold On (SoldOn)
Reward users for selling NFTs.
Filter by specific sale currency.
Currency address when hasSaleCurrency is true.
4. Mint On (MintOn)
Reward users for minting NFTs.
Only reward users who have never sold the token.
5. Token Hold ERC20 (token_hold_erc20)
Reward users for holding ERC20 tokens.
Reward based on USD value traded rather than token count.
Enable Uniswap liquidity tracking.
6. Check In (check_in)
Reward users for daily check-ins.
Points for each check-in.
Enable streak tracking for consecutive check-ins.
Optional array of streak milestones and rewards.
Streak Configuration
Streak Configuration
7. Code Entry (code_entry)
Reward users for entering promo codes.
Type:
code, csv, or generate.Single shared code (when promoCodeType is
code).CSV URL with unique codes (when promoCodeType is
csv).Number of codes to generate (when promoCodeType is
generate).Only allow new users (last 6 hours) to redeem.
8. Referred User (referred_user)
Reward users for referring others.
Points for the referred user.
Points for the referrer.
Currency for referrer reward.
Require referred users to achieve points.
Required points when achievePoints is true.
Require complete profile.
Require Twitter connection.
Require Discord connection.
Require email connection.
9. External Rule (external_rule)
Custom rules managed by external services.
Base points amount.
Track completion progress (0-100%).
Range-based rewards with custom amounts.
Multiply reward by number of actions.
Description of what the external rule tracks.
10. Points Airdrop (points_airdrop)
Airdrop points to specific users via CSV.
CSV URL with wallet addresses and point amounts.
Track processing progress.
11. Social Media Rules
Twitter Follow (twitter_follow)
Twitter account to follow.
Twitter user ID of the account.
OAuth credentials for Twitter.
Twitter Like (twitter_like)
Account that posted the tweet.
Twitter user ID.
OAuth credentials.
Drip X New Tweet (drip_x_new_tweet)
Text that must be included in the tweet.
Require users to submit post link (default: true).
Require post to include media.
TikTok Post (tiktok_post)
Text to check in post.
Require post link submission.
IMPRESSIONS_COUNT or ELIGIBLE_POST.12. Discord Rules
Connected Discord (connected_discord)
Servers users must join.
Discord Server Structure
Discord Server Structure
13. Liquidity Rules
Uniswap V2 Liquidity (liquidity_uniswap_v2)
Uniswap V3 Liquidity (liquidity_uniswap_v3)
Chain for liquidity pools.
Protocol identifier (e.g., “uniswap-v2/eth-usdc”).
Array of liquidity pool addresses.
fixed or custom.USD value per day (when calculationType is
fixed).Custom calculation formula (when calculationType is
custom).Base points for the reward.
14. Smart Contract Event (smart_contract_event)
Reward based on smart contract events.
Contract address to monitor.
Event signature to track.
everyEvent or specify conditions.Event parameter filters.
Address parameter name in event.
15. Swap (swap)
Reward users for token swaps.
any, relay, or lifi.Relay referrer ID when provider is
relay.any or specific.Chain ID or
any.Specific tokens when tokenMode is
specific.Require cross-chain swaps.
Track by token amount instead of USD.
16. Poll (poll)
Interactive poll rule.
Poll question text.
Answer choices.
Allow users to vote multiple times.
17. Quiz (quiz)
Quiz with single correct answer.
Question text.
Answer options with
isCorrect flag.Exactly one choice must be correct.
18. Shopify Spend (shopify_spend)
Reward for Shopify store purchases.
Shopify store domain.
Shopify admin API access token.
Range-based rewards by purchase amount.
Range-Based Rewards
Some rules support range-based rewards with tiered amounts:Array of reward ranges.
Minimum value for this range.
Maximum value (use
Number.MAX_SAFE_INTEGER for unlimited).Points awarded for this range.
Optional badge for this range.
Range Examples
NFT Token Hold
NFT Token Hold
ERC20 Token Hold (Multiplier)
ERC20 Token Hold (Multiplier)
Advanced Configuration
Max Reward Limits
Maximum points users can earn in the interval.
Interval period:
daily, weekly, monthly.Claim Type
manual (user must claim) or auto (auto-rewarded).Reward Lifetime
For multipliers/badges:
permanent (never removed) or dynamic (removed if
requirements not met).Airdrop Duration
When airdrop becomes effective.
When airdrop ends.
Validation Examples
Basic Points Rule
Basic Points Rule
NFT Hold with Custom Rewards
NFT Hold with Custom Rewards
Social Quest with Range Rewards
Social Quest with Range Rewards
Error Handling
For Ultra networks (Ultra/UltraTestnet), the collection address format is
address::symbol. For example: accountname::TOKEN.Rule Type Limitations and Restrictions
Multiplier Reward Type Support
Claim Type Support
Different rule types support different claim types (manual vs auto-reward):- Manual Only
- Auto Only
- Both Manual & Auto
These rules require users to manually claim rewards:
check_intext_inputpollquizcreate_partner_accounttelegram_joindrip_x_followdrip_x_tweetdrip_x_new_tweetswap
Reward Lifetime Options
TherewardLifetime field (for multipliers and badges) has different support levels:
Permanent Only
Permanent Only
Most rules only support
permanent lifetime where rewards never expire:check_intwitter_followersRetweetBoughtOn,SoldOn,MintOntwitter_like,twitter_comment,twitter_post_hashtagprofile_completed,referred_userpoll,quiz- Most social and connection rules
With
permanent lifetime, once a user qualifies for the reward, they keep it forever even if they stop meeting requirements.Dynamic & Permanent
Dynamic & Permanent
These rules support both
permanent and dynamic lifetime:TokenHold- Most flexible, supports bothexternal_rule- Can expire if user stops meeting requirements
With
dynamic lifetime, rewards are removed if the user no longer meets the requirements (e.g., sold their NFT).Interval Restrictions
Some rules have limited interval options:Rules with
frequency: immediately typically only support interval: once or specific intervals.Rules with frequency: none may support custom intervals.Range-Based Rewards
Range-based rewards are ONLY supported for:TokenHoldBoughtOn,SoldOn,MintOntoken_hold_erc20twitter_followers(withrewardCriteria)external_rule(withtrackProgress)shopify_spend
Network-Specific Limitations
For Ultra and UltraTestnet networks, collection addresses require a
symbol suffix:
address::symbol (e.g., accountname::TOKEN)Token Holdings
Liquidity Pool Limits
Liquidity rules support a maximum of 20 pools per rule, all within the
same network and protocol with the same factory address.