AGENT VIEW This page as an agent reads it. Fetch it from /docs/quickstart.md, or send Accept: text/markdown.

Open llms.txt
GET /docs/quickstart · accept: text/markdown200 text/markdown; charset=utf-8 · vary: Accept
# Quickstart

Add signo to a site that signs people in with Google today. It takes about five minutes and no new SDK: your auth library already speaks OpenID Connect, and so does signo.

These steps use the public signo at https://usesigno.co.uk. On your own copy of signo, use its address instead; [Self-hosting](https://usesigno.co.uk/docs/self-hosting.md) shows how to run one.

## 1. Add your site

Sign in at https://usesigno.co.uk/account/sites with a passkey or an email link, and add your site: the name people will see when they sign in, and the callback URL your auth library uses. signo then shows three values.

| Setting | Value |
|---|---|
| Issuer | `https://usesigno.co.uk` |
| Client ID | shown on your site's page |
| Client secret | shown once, when you add the site |

Copy the secret straight away. If you lose it, your site's page gives you a new one, and the old one stops working at once.

## 2. Swap three settings

Put signo's values where your auth library has Google's. With Auth.js:

```ts
providers: [
  {
    id: "signo",
    name: "signo",
    type: "oidc",
    issuer: process.env.AUTH_SIGNO_ISSUER,
    clientId: process.env.AUTH_SIGNO_ID,
    clientSecret: process.env.AUTH_SIGNO_SECRET,
  },
],
```

Each of these guides was tested against a running signo and shows the exact change:

- [Auth.js (NextAuth)](https://usesigno.co.uk/docs/authjs.md)
- [Better Auth](https://usesigno.co.uk/docs/better-auth.md)
- [Supabase](https://usesigno.co.uk/docs/supabase.md)
- [Any other OpenID Connect library](https://usesigno.co.uk/docs/openid-connect.md)
- [A single-page app with no server, using signo.js](https://usesigno.co.uk/docs/single-page-apps.md)

## 3. Keep the people who signed up with Google

signo sends each person's email with `email_verified: true`, because it only creates an account after the person opens a link sent to that address. Match existing users by that email. Better Auth and Supabase do it without extra settings. Auth.js needs `allowDangerousEmailAccountLinking: true` on the provider when it stores users in a database; the Auth.js guide explains why that is safe with signo.

## 4. Test a sign-in

Sign in on your site. You see signo's sign-in page with your site's name. The first time, signo then shows what your site will receive and the domain you will return to. After you allow it, you are back on your site, signed in.