Multi-wallet Support
Connect multiple wallets to aggregate points, earnings, and holdings to enhance your loyalty experience.
Overview
In blockchain-based loyalty programs, users often have multiple wallet addresses across different networks. Snag’s multi-wallet support allows users to connect multiple wallets to a single user group, enabling:
- Aggregated points display - See combined point balances across all connected wallets
- Group-based spending - Spend points from the collective balance of all linked wallets
- Pooled token holdings - Combine NFT/token holdings for higher-tier multiplier qualification
- Shared multiplier benefits - Access the best multipliers earned by any wallet in the group
This feature creates a seamless experience for users with multiple wallets while maintaining individual tracking for each wallet address.
How User Groups Work
Points Aggregation
While Snag treats each wallet address as a separate user, connecting wallets through a user group enables points aggregation across all wallets in that group:
Example:
- User A has 100 points in their primary wallet
- User B has 300 points in their secondary wallet
- When connected in the same user group, both users will see a total of 400 points
Shared Points Spending
All wallets in a user group share access to the combined point balance when redeeming rewards:
Example:
- User A (100 points) wants to redeem a reward costing 350 points
- Since User A’s wallet is connected to User B’s wallet (300 points) in a group
- User A can spend 350 points from the combined 400-point balance
- After redemption, the system intelligently deducts points from both wallets:
- User A’s wallet: 0 points (depleted its 100 points)
- User B’s wallet: 50 points (depleted 250 of its 300 points)
Token Holdings Pooling for Multipliers
For multiplier rules based on token holdings, assets across all connected wallets are pooled to determine qualification level:
Example:
- A multiplier rule gives:
- 1.5x multiplier for holding 10-14 NFTs
- 2x multiplier for holding 15+ NFTs
- User A holds 10 NFTs and User B holds 5 NFTs
- When connected in the same group:
- Their combined holdings (15 NFTs) qualify for the 2x multiplier
- Both users receive the 2x multiplier benefit
Important: Token pooling only applies to multiplier-type rules, not to points-based token holding rules.
Multiplier Selection Logic
When multiple wallets in a group earn different multipliers for the same rule type:
- The system selects the highest multiplier of each type
- Multipliers are not stacked within the same multiplier type
- Each multiplier type is counted once with the highest value available in the group
Example:
- User A has a 1.5x multiplier for completing Discord quests
- User B has a 2x multiplier for the same Discord quest type
- Both users will benefit from the 2x multiplier (the highest in the group)
Setting Up Multi-wallet Support
Technical Implementation
The multi-wallet functionality works through a userGroupId
property in the user’s account metadata, which connects different wallets to the same group.
Enabling Multi-wallet Connections
To use multi-wallet functionality:
- Contact Support: Multi-wallet support must be enabled by our team for your project
- Connection Limits: Projects can be configured to allow:
- One additional wallet (total of 2 wallets in a group)
- Up to 3 additional wallets (total of 4 wallets in a group)
User Experience
Once enabled, users can connect additional wallets to their account through the profile settings:
- User signs in with their primary wallet
- From the profile page, they select “Connect Additional Wallet”
- User connects their additional wallet using standard wallet connection flow
- The system verifies ownership and adds the wallet to the user group
- Points and holdings are immediately aggregated across all wallets in the group
API Endpoints for Multi-wallet Support
Updating User Metadata
Use the POST /api/users/metadatas
endpoint to set or update user group connections. You can use either:
userGroupId
- Snag’s internal identifier for the user groupuserGroupExternalIdentifier
- Your custom external identifier for the group
Using userGroupExternalIdentifier
allows you to maintain your own mapping between user groups and your external systems:
Note: When using userGroupExternalIdentifier
, Snag will create a userGroupId
internally and associate this external identifier with it. This allows you to reference user groups using your own identifiers in subsequent API calls.
Fetching User Group Data
The GET /api/loyalty/accounts
endpoint allows you to fetch points balances and other data for all wallets in a group by providing either:
userGroupId
parameter for Snag’s internal group IDuserGroupExternalIdentifier
parameter for your custom external identifier
Best Practices
- Authenticate Wallet Ownership: Always verify that a user owns all wallets they attempt to connect
- Clear User Communication: Explain to users how points aggregation works across their connected wallets
- Visual Indicators: Consider showing which wallet contributed what portion of the total points balance
Limitations
- Maximum of 4 wallets per user group (your specific limit may be lower based on configuration)
- Token holding pooling only applies to multiplier rules, not to points-based token holding rules
- Leaderboard Display: Currently, leaderboards show each individual wallet as a separate entry. Points aggregation across user groups in leaderboards is coming soon.