> ## Documentation Index
> Fetch the complete documentation index at: https://docs.snagsolutions.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Delegate.cash integration

> Enable delegate.cash support so users can participate in loyalty programs through delegated wallets.

<head>
  <script type="application/ld+json">
    {JSON.stringify({
            "@context": "https://schema.org",
            "@graph": [
              {
                "@type": "TechArticle",
                "headline": "Delegate.cash integration",
                "description": "Enable delegate.cash support so users can participate in loyalty programs through delegated wallets.",
                "author": {"@type": "Organization", "name": "Snag Solutions", "url": "https://www.snagsolutions.io/"},
                "publisher": {"@type": "Organization", "name": "Snag Solutions", "url": "https://www.snagsolutions.io/", "logo": {"@type": "ImageObject", "url": "https://assets.snagsolutions.io/public/docs/snag-logo-dark-no-bg.svg"}},
                "mainEntityOfPage": "https://docs.snagsolutions.io/users/delegate-cash"
              },
              {
                "@type": "BreadcrumbList",
                "itemListElement": [
                  {"@type": "ListItem", "position": 1, "name": "Home", "item": "https://docs.snagsolutions.io/welcome"},
                  {"@type": "ListItem", "position": 2, "name": "Loyalty", "item": "https://docs.snagsolutions.io/loyalty/loyalty-overview"},
                  {"@type": "ListItem", "position": 3, "name": "Advanced workflows", "item": "https://docs.snagsolutions.io/loyalty/managing-user-accounts"},
                  {"@type": "ListItem", "position": 4, "name": "Delegate Cash"}
                ]
              }
            ]
          })}
  </script>
</head>

[Delegate.cash](https://delegate.xyz) 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:

<Steps>
  <Step title="Enable the toggle in Admin">
    Navigate to **Customization > Platform Settings** in your Snag Admin dashboard and enable the delegate.cash integration toggle.
  </Step>

  <Step title="Users authenticate">
    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.
  </Step>

  <Step title="Holdings are combined">
    Assets from delegated wallets are automatically combined with the user's connected wallet for eligible loyalty rules.
  </Step>
</Steps>

<Warning>
  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.
</Warning>

## 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.

<Tip>
  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.
</Tip>

## Supported rules

Delegate.cash integration currently applies to:

* **[Hold an NFT](/loyalty/rules/token-hold)**: NFT holdings from delegated cold wallets are aggregated with the hot wallet when evaluating token hold rules

<Info>
  Delegation-based holding checks apply only to the "Hold an NFT" rule. Other loyalty rules do not use delegated wallet holdings.
</Info>

## Limitations

<Warning>
  **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.
</Warning>

## How it works technically

When delegate.cash is enabled for your website:

1. **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
2. **Delegation storage**: Valid delegations are stored in the user's metadata (`delegatedTo` and `delegationsFrom` relationships)
3. **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)
4. **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:

<Steps>
  <Step title="Set up delegation on delegate.cash">
    Users visit [delegate.xyz](https://delegate.xyz) and create a full-wallet delegation from their cold wallet to their hot wallet.
  </Step>

  <Step title="Connect hot wallet to your loyalty program">
    Users connect their hot wallet (the delegated-to wallet) to your loyalty site.
  </Step>

  <Step title="Automatic aggregation">
    Snag automatically detects the delegation and combines NFT holdings from both wallets when evaluating token hold rules.
  </Step>
</Steps>

<Note>
  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.
</Note>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Delegated holdings not appearing">
    * **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](https://delegate.xyz)
  </Accordion>

  <Accordion title="Delegation not syncing after changes">
    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.
  </Accordion>

  <Accordion title="Holdings showing for wrong wallet">
    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.
  </Accordion>
</AccordionGroup>

## Related resources

<CardGroup cols={2}>
  <Card title="Hold an NFT rule" icon="image" href="/loyalty/rules/token-hold">
    Learn how token hold rules work with delegated wallet holdings.
  </Card>

  <Card title="User groups" icon="users" href="/loyalty/multi-wallet-support">
    Compare with user groups for bi-directional multi-wallet support.
  </Card>
</CardGroup>
