LiveThe dashboard is here. Six years in the making.

Guides

Member Verification

Ask new members to pass a quick check, or confirm a phone number, before they get a role, and get told when two accounts look like the same person.

Member Verification puts a Verify button in your server. A member clicks it, passes a check in their browser, and Zira gives them your verified role. You choose the check: a quick Cloudflare check (free) or a phone number confirmed by text message (Premium). Bots and scripted joins never get past either, and your staff hear about it when two accounts verify from the same connection.

Set it up at Verification in your server's dashboard.

How it works for members#

  1. A member clicks Verify on the panel you posted.
  2. Zira replies privately with a link to a check page on zira.bot. The link already knows who clicked, so there is no sign-in step. The member completes your chosen check:
    • Cloudflare check: a short "I am human" check. Nothing to type and no puzzle to solve for most people.
    • Phone number: the member picks their country (prefilled from their browser), types their number, Zira texts them a 6-digit code, and they type it in. The code lasts 10 minutes and five wrong guesses cancel it.
  3. The moment the check passes, Zira grants the verified role and the page offers a Back to Discord button.

One passed check covers every server that uses the same kind of Zira verification: a Cloudflare check for 24 hours, a verified phone number for 30 days. A member who verified in another server recently gets your role the moment they click Verify (or, if you allow it, the moment they join), with no second check.

Info

Zira never stores a member's IP address or phone number. It keeps only keyed, one-way hashes for 30 days: the connection hash spots two accounts verifying from the same place in the same server, and the phone hash makes sure one number verifies one Discord account.

Setup#

Before you start, make sure Zira's highest role sits above the role you want to hand out, and that Zira can Manage Roles, Send Messages and Embed Links in the panel channel.

  1. Open Verification in the dashboard.
  2. Under Setup, pick the Verified role. Only roles Zira can actually give out are offered.
  3. Optionally pick an Alt alert channel. Leave it empty to use your role log channel from General Settings.
  4. Under Check, keep the Cloudflare check or switch to Phone number (Premium). Zira falls back to the Cloudflare check automatically if Premium ever lapses, so members are never locked out.
  5. Decide whether recently verified members should skip the button when they join. This is on by default: a member who passed a check in the last 24 hours gets the role as soon as they arrive.
  6. Click Enable Verification.
  7. Under Verify panel, pick the channel new members land in and click Post panel. Zira posts a message with the Verify button. If you change the copy later, Update panel edits the same message in place.

That is the whole setup. Members who click the button from now on go through the check.

Tip

Give the verified role access to your main channels, and keep @everyone limited to the channel with the panel plus your rules. New members then see exactly one thing to do.

Phone verification#

A phone number verifies one Discord account. If someone tries to verify a second account with a number that is already in use, Zira refuses with a clear message; the first account keeps its verification. A member who verifies a new number releases their old one. Text messages are included with Premium: there is no per-server cap, and per-member and per-connection limits (a few codes per ten minutes, a handful per day) keep costs and abuse in check. The Check card shows how many codes your server sent today.

Alt account alerts#

When a member's grant goes through, Zira looks at the other accounts that verified in your server from the same connection in the last 24 hours. If it finds any, it posts a yellow Possible alternate accounts notice in your alert channel naming the accounts involved.

Zira only flags this. Nothing is removed or changed automatically; what to do about it is your call. Two people sharing a home network can trigger it, so treat it as a prompt to look, not proof.

The panel and the join DM#

By default the panel is a short embed with a Verify button. With Premium you can write your own panel text and design your own embed in the Embed Builder. Zira always adds the button itself.

Premium servers can also DM new members the verification link the moment they join, so nobody has to hunt for the panel. The DM has default copy, or you can write your own. Members who have DMs closed simply do not receive it, and the panel still works for them.

Placeholders you can use in either message: $user, $mention, $id, $guild, $membercount. In the panel there is no specific member, so the user placeholders show your server name.

Free and Premium#

FeatureFreePremium
Cloudflare check + verified role
Verify panel (default copy)
Alt account alerts
Skip the button for recently verified members
Verification history in the dashboard
Phone number verification (texted codes included)-
Custom panel text and embed-
Join DM with the verification link-
Premium

Phone verification, custom panel copy and the join DM are Premium features. If Premium lapses, members get the Cloudflare check instead, the panel goes back to the default copy and the join DM stops; your role, panel and history stay.

If something goes wrong#

  • "Verification is not set up in this server yet." The verified role is missing or verification is switched off. Check the Setup card.
  • The member passed the check but got no role. Open the Recent verifications table. A red Failed result names the reason when you hover it: most often Zira's role is below the verified role, or Zira lost Manage Roles. Fix the role order in Server Settings, then ask the member to click Verify again.
  • "Waiting for the bot." Zira was briefly restarting when the check passed. The role is granted automatically within a minute or two, no action needed.
  • "That phone number is already verified on a different Discord account." Each number verifies one account. The member needs a different number, or to use the account the number is already tied to.
  • The text never arrives. Check the right country was selected and the number is correct. Codes can take a minute; after ten minutes ask for a new one. A member can request three codes every ten minutes.
  • The panel vanished. Someone deleted the message or the channel. Pick a channel and click Post panel again.
  • The verified role was deleted. Zira turns verification off so the button does not promise a role that no longer exists. Pick a new role and enable it again.