How domain verification works
If the domain an end user connects to matches the one verified in the Reown dashboard, the user proceeds with confidence. If the domain doesn’t match, the user is notified. When a user initiates a connection with an application, the Verify API gives wallets four states to help determine whether the domain might be malicious. The API categorizes session proposals and session requests with a validation ofVALID, INVALID, UNKNOWN, or isScam, which map to the four states below.

1. Domain Match
The domain linked to this request has been verified as this application’s domain.Shown when the domain a user is connecting to matches the application’s verified domain in the registry, and the domain isn’t flagged by any of the security tools Reown works with (Hexagate, ChainPatrol, Hypernative). The
verifyContext on the request has a validation of VALID.
2. Cannot Verify
The domain sending the request cannot be verified.Shown when the domain isn’t in the registry but also isn’t flagged as suspicious. The
verifyContext has a validation of UNKNOWN.
3. Domain Mismatch
The application’s domain doesn’t match the sender of this request.Shown when the domain a user is connecting to differs from the domain the application verified in the registry, and the domain isn’t flagged as suspicious. The
verifyContext has a validation of INVALID.
4. Security Risk
This domain is flagged as malicious and potentially harmful.Shown when the domain has been flagged as malicious by one or more of the security tools Reown works with. The
verifyContext on the request contains isScam: true.
Get a domain verified
Two steps get an app to a domain match:Allowlist the domain in the Reown dashboard
- Open the project in the Reown dashboard.
- Select the “Configuration” tab.
- Scroll to the “Domain” section and click ”+ Domain”.
- Enter the domain name.
- Click “Allowlist” to submit.
Set the domain in AppKit metadata
verifyContext won’t return VALID, and the app may be flagged “Cannot verify” or “Domain mismatch”.Troubleshooting
My app is flagged as Domain mismatch, what's wrong?
My app is flagged as Domain mismatch, what's wrong?
My app is flagged as Security Risk by the Verify API, what's wrong?
My app is flagged as Security Risk by the Verify API, what's wrong?
My app's domain verification isn't working with certain wallets, such as Trust Wallet or MetaMask. What's wrong?
My app's domain verification isn't working with certain wallets, such as Trust Wallet or MetaMask. What's wrong?
I've added multiple domains to the allowlist via the dashboard, but they don't show as verified when users connect through those domains. What's wrong?
I've added multiple domains to the allowlist via the dashboard, but they don't show as verified when users connect through those domains. What's wrong?
I have a non-browser setup, such as server-side or Node.js. The Verify API isn't working.
I have a non-browser setup, such as server-side or Node.js. The Verify API isn't working.