Skip to main content
User authentication overview

Supported authentication providers

How it works

1

Choose your authentication providers

Select one or more authentication providers that best fit your platform.
2

Gather the required credentials

Each provider requires specific keys and configurations. Refer to the separate provider pages for details on what to provide.
3

Send us your credentials

Once you have all the required details, share them with us. Our team will set up authentication on your behalf.

User identification across providers

  • Non-custodial wallets (e.g., MetaMask): Snag identifies users by wallet_address. If your app also identifies users by the same on-chain wallet, you can treat the user as the same across both systems and complete rules via that wallet_address.
  • Email/Social login via embedded wallet providers (e.g., Dynamic, Privy, Thirdweb): When a user logs in with email or social auth via an embedded wallet provider, an embedded wallet is issued. Snag uses that embedded wallet address as the user’s identifier. If your backend uses a different provider or configuration than Snag, the same person may receive different embedded wallet addresses in your system vs. Snag.
Because different providers or configurations can produce different embedded wallets for the same email, do not assume the embedded wallet address is shared between systems. Always use the embedded wallet created within Snag when interacting with Snag.
Use the embedded wallet address issued by Snag’s authentication flow for that user. Pass this address from your client to your backend (or fetch it server-side via your wallet provider SDK for the Snag session) and call Snag using that wallet_address to complete tasks or query user state.
The identifier is the on-chain wallet_address. You can use the exact same address across your app and Snag to reference the same user and complete external rules.
Best practice: Store a mapping in your backend between your primary user ID and the wallet_address that Snag recognizes (non-custodial or Snag-embedded). This guarantees you can reliably retrieve the correct user on Snag when initiating rewards or tasks.
If you maintain your own user IDs, set externalIdentifier when creating users in Snag. See the API docs: Create Users – External Identifier.