> ## Documentation Index
> Fetch the complete documentation index at: https://vlyai-1c28d863.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Passwordless (magic links)

> Sign in via email-only magic links. No passwords to forget, no resets, no leaks.

Magic-link authentication: the user enters their email, gets a sign-in link, clicks it, they're signed in. No passwords on either side. Common in modern SaaS for its simplicity.

## How to enable

```text theme={null}
Switch to magic-link-only authentication. Remove the password field
from sign-up. On sign-in, just collect an email and send the link.
```

vly:

1. Removes the password field from sign-up.
2. Wires up the magic-link flow using built-in auth.
3. Sets up the email template (default: simple branded message with the link).

You can keep email + password as an option alongside magic links — same prompt without "remove the password field."

## How it works

<Steps>
  <Step title="User enters email">
    On the sign-in page.
  </Step>

  <Step title="vly sends a one-time link">
    Token expires in 15 minutes. Email goes via your configured provider (Resend by default).
  </Step>

  <Step title="User clicks the link">
    Opens your app, authenticates, signs them in.
  </Step>

  <Step title="Session created">
    Same long-lived session as password auth.
  </Step>
</Steps>

## Tradeoffs

<CardGroup cols={2}>
  <Card title="✅ No passwords to forget" icon="check-circle">
    Eliminates the password-reset support burden.
  </Card>

  <Card title="✅ No leaked credentials" icon="check-circle">
    A leaked database can't expose passwords that don't exist.
  </Card>

  <Card title="✅ Smoother sign-up" icon="check-circle">
    Lower friction — one field instead of two; no password requirements to remember.
  </Card>

  <Card title="❌ Requires email access" icon="x-circle">
    Users without a working email can't sign in.
  </Card>

  <Card title="❌ Slightly slower" icon="x-circle">
    Round-trip via email; \~5–30 seconds to receive.
  </Card>

  <Card title="❌ Email security matters" icon="x-circle">
    Compromised email = compromised account. Same as password reset, but every sign-in.
  </Card>
</CardGroup>

## Customizing the email

The default template is short and branded. To customize:

```text theme={null}
Customize the magic link email. Use the company's brand color (#6D28D9) on
the button. Add the company logo at the top. Update the subject to "Sign in
to YourApp".
```

For full template control, edit the `magicLink` template under **Workspace settings → Auth → Email templates**.

## Related

<CardGroup cols={3}>
  <Card title="Built-in auth" icon="lock" href="/features/auth/built-in-auth">
    The full auth system.
  </Card>

  <Card title="OAuth providers" icon="key" href="/features/auth/oauth-providers">
    Google / GitHub / etc. as alternatives.
  </Card>

  <Card title="Resend integration" icon="mail" href="/integrations/resend">
    The default email sender.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.