The idea is simple
For your users — easy authentication: scanning a QR code or tapping a single button is all it takes to sign in to your app or website. Even a user’s first sign-in takes only 4–6 seconds. See the measurements. For your website or app: set up in 15–30 minutes on any stack and get the user’s details straight from their messaging app — name, language, photo and, with their consent, phone number. Another benefit: at sign-in your website automatically gets a live channel to the user through their messaging app, and you stop paying for SMS.How it works
On a computer, a TV or a kiosk, your user scans the QR code on the sign-in page; on a phone they tap a button. The messaging app they already use opens — Telegram, WhatsApp or another popular one — and the user confirms the sign-in with a single tap there.You can also use Veriqa to confirm AI agent actions and sensitive operations: deleting
important data, changing payment details, granting access to another person.
Try the live examples.
- Easy to embed in your project: Veriqa is tested with popular CMSs — WordPress, Drupal, Joomla, TYPO3 and Bitrix — and with enterprise systems: GitLab, Keycloak, Grafana, Nextcloud, Discourse, Odoo and Moodle. See Veriqa in a CMS for details.
- Any stack: it works with .NET, Node, Python, Java, Go, PHP and any other stack.
- Easy to deploy: a NuGet package, a Docker image or a self-contained binary for Linux and Windows.
- Easy to extend: you can write a channel in any language for your corporate messaging app or bot and plug it in without changing the core.
What you get
Add sign-in with a messaging app to your website, next to the sign-in methods you already have. You get less friction at sign-in, lower costs, stronger security and a live connection with the user. Setting up Veriqa takes 15–30 minutes and costs nothing, and your users get a quick and convenient way to authenticate on your website or in your app.For your users
Nothing to type
No password, no SMS code, no sign-up form. Scanning a QR code or tapping a button, then
confirming in the messaging app, is all it takes.
Nothing to install or remember
The messaging app is already on their phone. No new app, no authenticator app and no password to forget
and recover.
The same on any device
On a computer, a TV or a kiosk it is a QR code; on a phone, a button. The confirmation is always
the same tap in the messaging app.
For your product
Higher sign-in conversion
Instead of a password, an SMS code and switching between screens — one familiar action: opening the camera
on the phone. Sign-in or sign-up takes 4–6 seconds, and that is the whole path:
pointing the camera, tapping the link and confirming in the messaging app.
Savings on every sign-in
SMS is billed per message. Sign-in and confirmation via
Veriqa aren’t billed per message: in WhatsApp, Veriqa replies to the user’s message without a
template, and under Meta’s current pricing such replies are free. Veriqa itself is
open source.
A live channel instead of a “dead” address
Along with the sign-in, your product gets a connected messaging channel — for notifications,
confirmations and future service use cases.
Configuration-only integration
Nothing for the user to install and no new client-side code — Veriqa plugs into your existing app
through configuration.
Account recovery
“Forgot password” is no longer an ordeal: a linked trusted channel becomes a reliable recovery
path, without a chain of emails and codes.
Resilience to a personal-data leak
Veriqa stores the bare minimum: the identifier that each messaging app assigns to the user. No
names, no phone numbers. The data a sign-in needs appears only during the sign-in and can be
kept in memory only. In the next release you will be able to store a
pseudonym instead of the identifier itself.
Get started
Start with the quickstart: the Veriqa server in a container and sign-in for your app on any stack.Use cases
Examples of how Veriqa handles everyday tasks for websites and apps.Passwordless authentication
Your website or app shows a QR code, and the user confirms the sign-in in their messaging app — no
password needed. A new user signs up with the same action, with no form and no CAPTCHA: the
confirmation in the app itself acts as the bot barrier.Learn more · Video
AI agents: a human approves the risky step
Before an AI agent calls a tool or receives access, it asks a human for approval. The request
arrives in the user’s own messaging app — a surface the agent does not control — and the answer
goes into the audit trail.Learn more · Video
A direct channel to the user
The user signs in through a messaging app, and with the same action your product gets a live
channel to them — Telegram, WhatsApp, another channel or email, depending on where they
confirmed. One action, two results: you can use the channel for notifications and service
messages.Learn more
Replacing SMS codes
Instead of typing a code from an SMS, the user confirms the sign-in with a button in their
messaging app. You pay no per-message charge and get full authentication rather than just a
delivered code.Learn more · Video
Leads and feedback without CAPTCHA
Before submitting a form, a visitor verifies themselves through a messaging app — it takes a few seconds.
Your site gets a verified contact and a live channel instead of a “dead” address typed into a
field. Tested and working on WordPress, Bitrix, Drupal, Joomla, TYPO3 and other CMSs.Learn more
Second factor, step-up and action confirmations
When a user does something sensitive — deletes important data, changes payment details, grants
someone else access — your product asks them to confirm it. They confirm with a single tap in
their messaging app, with no code to type.Learn more · Video
Sign-in methods compared
The Veriqa times are for a sign-in with confirmation; with automatic sign-in it takes 2.4–3.5 s.
The source of every figure, what the user does step by step and how the setup was assessed are in
the full comparison. How Veriqa fundamentally differs from passkeys,
sign-in widgets built into messaging apps, SMS codes and the device flow is covered
separately.
Architecture
Veriqa is a bridge between your application and the user’s trusted messaging app. It opens a sign-in or confirmation transaction, binds it to the chosen channel, waits for the user’s confirmation and hands the result back — as tokens for the sign-in, or as an outcome to your backend. What Veriqa is made of, block by block, and its main technical characteristics:- Transaction orchestration. A sign-in is a transaction with an explicit state, a lifetime and a single outcome. It survives a change of device, expires on its own, handles repeated requests idempotently and lands in the audit trail — instead of a request left hanging somewhere between the browser and the messaging app.
- Channel adapters. Telegram, WhatsApp, Email and others are switched on by configuration. A channel of your own needs no change to the core, and it does not have to be .NET: an external service in any language over HTTP, or the bot you already run, as is. Your channels take their place in the chain alongside the built-in ones.
- Integration. Any stack, standard OIDC. On .NET — a connector on top of OpenIddict. Everywhere else — a standard OIDC provider: Node, Java, Python, Go, PHP. In an IAM such as Logto it is added as an ordinary social connector.
- Settings and multi-project support. Tokens, channels, the texts and branding of the sign-in page, policies, limits, the audit trail — all of it is configuration, with four levels of ownership, including the core, the tenant and the application, and a defined resolution order. One installation serves many projects and bots, each with its own settings.
- Audit trail and observability. The audit trail is off by default; you switch it on and set its rules. Identities are always masked, and tokens are written neither to the log nor to the audit trail — that is how it is built, not a setting you have to remember. Metrics, logs and traces work the same way: they carry no tokens and no personal data.
- Stack. .NET 10, shipped as NuGet packages that plug into a running application. Clean architecture; storage in memory, EF Core (PostgreSQL, SQL Server and others) or Redis. The sign-in page is plain JS — no frameworks, no external dependencies. The data does not leave your perimeter.
Deployment
Veriqa Cloud is in development; its API contract is described in Cloud.
A note on .NET. In embedded mode Veriqa extends the OpenIddict setup in your
ASP.NET Core application rather than replacing it: it runs the sign-in transaction between
/connect/authorize and /connect/token and leaves token issuance to OpenIddict. On any other
stack OpenIddict is not involved at all — the application talks to Veriqa over plain OpenID
Connect.Channels
Eight channels are built into the core, including Telegram, WhatsApp (direct or through Twilio), Instagram, Messenger, WeChat, Viber and Email. Any other channel — a corporate messaging app, a bot of your own, a regional platform — connects as an HTTP channel written in any language. Pseudo-channels for sign-in with Google, Apple and Huawei accounts ship as a sample in the repository. Adapters for LINE, Slack, Microsoft Teams, Discord, Zalo, KakaoTalk, Threema and more are already implemented — they live in thechannel-adapters repository, together
with sample hosts (see the source code).
The full list, with the status of each channel, is on the
website’s channels page and in
Supported channels.