Skip to Content
Dial v1 live 🎉
BeaconVerify with Dial

Verify with Dial

Verify with Dial lets you gate Beacon actions behind wallet verification. Visitors prove wallet ownership via SIWE (Sign-In with Ethereum) or SIWS (Sign-In with Solana) before accessing protected features — verified support, holder-only content, role-based access, and more.

How It Works

1. User clicks a "verify_then" action 2. Beacon calls DialClient.auth.getNonce(walletAddress) 3. User signs a SIWE/SIWS message in their wallet 4. Beacon calls DialClient.auth.authenticate({ message, signature }) 5. SDK returns auth result with verified wallet 6. Beacon checks scopes (wallet, role, social) via profile/registry 7. Gate satisfied → next action executes automatically

The Dial SDK handles all auth plumbing. Beacon orchestrates the UX.

Configuration

Enable verification and define gates:

{ "verify": { "enabled": true, "provider": "dial", "gates": { "holder-gate": { "required": true, "scopes": ["wallet", "role:holder"], "onSuccessActionId": "holder-perks" }, "basic-verify": { "required": true, "scopes": ["wallet"], "onSuccessActionId": "verified-support" } } } }

Gates

A gate defines the verification requirements for a specific action.

PropertyTypeDescription
requiredbooleanWhether verification is mandatory
scopesstring[]Required scopes to pass the gate
onSuccessActionIdstringAction to execute after successful verification

Scopes

Scopes determine what the verification checks:

ScopeDescription
walletBasic wallet ownership verification (default)
role:*Role-based access (e.g., role:holder, role:admin, role:vip)
social:*Social account verification (e.g., social:x, social:discord)

Multiple scopes can be combined — all must be satisfied for the gate to pass.

Linking Actions to Gates

Use the verify_then action type to create a verification-gated action:

{ "quickActions": [ { "id": "claim-role", "label": "Claim Holder Role", "icon": "badge", "type": "verify_then", "nextActionId": "holder-perks" }, { "id": "holder-perks", "label": "View Holder Perks", "icon": "gift", "lane": "community", "type": "open_link", "url": "https://example.com/perks" } ], "verify": { "enabled": true, "provider": "dial", "gates": { "claim-role": { "required": true, "scopes": ["wallet", "role:holder"], "onSuccessActionId": "holder-perks" } } } }

The gate ID matches the verify_then action ID. When the user clicks “Claim Holder Role”:

  1. Wallet verification is triggered
  2. On-chain holder status is checked
  3. If verified, “View Holder Perks” executes automatically

Wallet Provider

Beacon uses the standard EIP-1193 wallet provider (window.ethereum) for wallet interactions. Users need a browser wallet (MetaMask, Coinbase Wallet, etc.) installed.

Use Cases

Anti-Spam Verification

Gate support chat behind basic wallet verification to prevent spam:

{ "id": "verified-support", "label": "Verified Support (Anti-Spam)", "icon": "shield", "type": "verify_then", "nextActionId": "support-chat" }

NFT Holder Access

Verify NFT ownership before granting access to exclusive content:

{ "gates": { "nft-gate": { "required": true, "scopes": ["wallet", "role:holder"], "onSuccessActionId": "exclusive-content" } } }

Priority Support

Offer priority support to verified wallets:

{ "gates": { "priority": { "required": true, "scopes": ["wallet"], "onSuccessActionId": "priority-chat" } } }

Analytics Events

Verification triggers two analytics events:

  • verify_started — when the verification flow begins
  • verify_completed — when verification succeeds

See Analytics for details.

Last updated on