Delegate.cash integration
Enable delegate.cash support so users can participate in loyalty programs through delegated wallets.
Delegate.cash is an on-chain registry that lets users delegate rights from one wallet to another without moving assets. Snag integrates with delegate.cash so users can prove ownership of NFTs in cold storage while interacting with your loyalty program using a hot wallet.
How it works
When a user sets up a delegation on delegate.cash, they create an on-chain record that says "Wallet A delegates to Wallet B." In Snag's context:
- Delegating wallet (cold wallet): The wallet holding valuable assets like NFTs
- Delegated-to wallet (hot wallet): The wallet the user connects to your loyalty program
When the delegated-to wallet authenticates with your loyalty program, Snag checks the delegate.cash registry and combines the holdings from both wallets for rule evaluation.
Enabling delegate.cash
To enable delegate.cash support for your loyalty program:
Navigate to Customization > Platform Settings in your Snag Admin dashboard and enable the delegate.cash integration toggle.
Once enabled, Snag indexes delegations for users when they authenticate. The system checks the delegate.cash on-chain registry for any delegations pointing to the user's connected wallet.
Assets from delegated wallets are automatically combined with the user's connected wallet for eligible loyalty rules.
If users don't see their delegated wallet holdings after enabling this feature, they need to re-authenticate (sign out and sign back in) to trigger the delegation indexing.
Delegation vs user groups
Snag offers two ways to combine wallet holdings: delegate.cash and user groups. These work differently:
| Feature | Delegate.cash | User Groups |
|---|---|---|
| Relationship | One-way (delegator → delegatee) | Bi-directional (all wallets equal) |
| Control | Only the delegated-to wallet controls the pool | All wallets in the group have equal control |
| Setup | On-chain via delegate.cash | In-app via Snag |
| Use case | Cold wallet security | Multiple personal wallets |
| Points sharing | No point balance sharing | Full point balance aggregation |
| Rule scope | Token hold rules only | All loyalty rules |
One-way delegation explained
With delegate.cash, the delegation is one-way:
- The delegated-to wallet (hot wallet) can claim rewards based on combined holdings
- The delegating wallet (cold wallet) cannot independently claim rewards through this delegation
- If the cold wallet owner wants to interact directly, they must connect that wallet separately
This differs from user groups where all connected wallets are treated as equals and share the same identity, points balance, and social connections.
Use delegate.cash when users want to keep valuable NFTs in cold storage while participating in your loyalty program. Use user groups when users simply have multiple active wallets they want to combine.
Supported rules
Delegate.cash integration currently applies to:
- Hold an NFT: NFT holdings from delegated cold wallets are aggregated with the hot wallet when evaluating token hold rules
Delegation-based holding checks apply only to the "Hold an NFT" rule. Other loyalty rules do not use delegated wallet holdings.
Limitations
Current limitations:
- Full-wallet delegations only: Collection-level or token-level delegations are not supported. The delegation must grant full wallet rights.
- Ethereum mainnet only: Only delegations on Ethereum mainnet are tracked. Delegations on other networks (Polygon, Arbitrum, etc.) are ignored.
- Token hold rules only: Delegation aggregation only applies to NFT holding rules, not to other rule types like social connections or check-ins.
How it works technically
When delegate.cash is enabled for your website:
- On authentication: When a user connects their wallet and authenticates, Snag queries the delegate.cash registry for any delegations where the user's wallet is the delegatee
- Delegation storage: Valid delegations are stored in the user's metadata (
delegatedToanddelegationsFromrelationships) - Rule evaluation: When evaluating token hold rules, the system combines holdings from:
- The user's connected wallet
- Any wallets that have delegated to the user's wallet
- The wallet the user has delegated to (if applicable)
- On-chain sync: Delegation data is synced from the on-chain state, so changes made on delegate.cash are reflected after the user re-authenticates
User experience
For end users with delegate.cash set up:
Users visit delegate.xyz and create a full-wallet delegation from their cold wallet to their hot wallet.
Users connect their hot wallet (the delegated-to wallet) to your loyalty site.
Snag automatically detects the delegation and combines NFT holdings from both wallets when evaluating token hold rules.
Users do not need to connect their cold wallet directly. The delegation on delegate.cash is sufficient for Snag to recognize and aggregate their holdings.
Troubleshooting
- Re-authenticate: Have the user sign out and sign back in to trigger delegation indexing
- Check delegation type: Ensure the delegation is a full-wallet delegation, not collection or token-level
- Verify network: Confirm the delegation was created on Ethereum mainnet
- Check delegate.cash: Verify the delegation is active on delegate.xyz
Changes to delegations on delegate.cash require the user to re-authenticate for Snag to pick up the updates. The system syncs delegation state at authentication time.
With one-way delegation, only the delegated-to wallet (hot wallet) receives the aggregated holdings. The delegating wallet (cold wallet) will not see combined holdings unless it's also connected and has its own delegations.