Fake-signup & free-trial abuse protection for SaaS

Stop fake signups. Rescue the real ones.

One script tag on your signup form. Vetto blocks disposable and dead emails, catches the trial abuser's 7th Gmail alias and stops bot bursts, and turns [email protected] into a one-click fix so real users still get in.

Founding offerPro for life, $69 once. First 100 buyers, until Nov 27.

<script src="https://usevetto.com/v.js" data-site="pk_xxxxxxxxxxxxxxxxxxxx" defer></script>

Free on 1 site · no card · Next.js, Supabase, Webflow, Framer, WordPress · fails open after 800 ms

Start your free trial

Type any email, or pick an example below.

This week on your site

Demo

$0.00

saved: rescued × $29 + blocked × $0.50

Rescued
0
Blocked
0
Aliases
0
Datacenter
0
  • Nothing yet. Every catch lands here.

6.2×

Stripe saw 6.2× more abusive free trials between Nov 2025 and Feb 2026.

Source: Stripe

~10%

~10% of new registrants typed their email wrong or left it missing.

Source: Discourse Meta

gmai.com

gmai.com has a live mail server — MX-only checks let it through.

Source: Google Public DNS

What Vetto catches

Eight signals. One verdict per signup.

Each signal maps to an action you choose: allow, flag, suggest, warn or block. Pro signals run in shadow mode on Free, so you see what you'd catch.

  • Typo rescue

    Asks “Did you mean…?” with a one-click Fix.

    [email protected] → [email protected] (default action: suggest)

  • Throwaway inboxes

    A maintained throwaway list, plus the mail servers behind new ones.

    [email protected] → blocked (default action: block)

  • Dead domains

    NXDOMAIN, null MX or no mail host. Nobody will ever confirm.

    [email protected] → no mail server (default action: block)

  • Lookalike domains

    Pro

    Typo-squats that accept mail. Your welcome email would reach a stranger.

    [email protected] → live MX, not Gmail (default action: warn)

  • Alias farms

    Pro

    Dots, +tags and googlemail.com collapse into one identity.

    [email protected] = [email protected] (default action: warn)

  • Datacenter & VPN

    Pro

    Datacenter, VPN and Tor networks, plus browser-vs-IP timezone mismatches.

    AS14061 · DigitalOcean → flagged (default action: flag)

  • Signup bursts

    Pro

    More signups from one IP in an hour than your burst limit allows.

    16 signups · 1 IP → blocked after 5 (default action: block)

  • Bots via honeypot

    A hidden field only bots fill. On Pro, signed tokens also stop direct API posts.

    hidden field filled → blocked (default action: block)

Day-zero audit

How many of your existing signups are fake?

Paste a few recent signups or drop your whole CSV. Vetto finds typos, throwaway inboxes, dead domains and alias clusters before you install anything.

One email per line, straight from your users table. Free, no signup.

Or drop your whole signups CSV here (Stripe, Supabase, Postgres, any export)

Emails never leave your browser — only domain names are checked.

Free audits summarize the first 1,000 rows. Pro audits every row and exports the flagged ones.

More free tools: disposable email checker, email typo checker, Gmail alias checker and the disposable domains list.

How it works

One line of HTML. No backend changes.

  1. 1

    Paste one line

    Before </body> on any page with a signup form. Every email field is guarded; nothing else changes.

    <script src="https://usevetto.com/v.js" data-site="pk_xxxxxxxxxxxxxxxxxxxx" defer></script>
  2. 2

    Choose policies

    Pick what each signal does. Start gentle with warnings; tighten when the ledger agrees.

    Typo
    Suggest
    Throwaway
    Block
    Lookalike
    Warn
    Alias
    Warn
    Datacenter
    Flag
    Relay
    Allow
  3. 3

    Watch the ledger

    Rescued, blocked and dollars saved, every day. You set what a real signup is worth and what a fake costs you.

    rescued × $29 signup value

    + blocked × $0.50 compute per fake

    = $ saved this week

Built to be boring in production

Built to never cost you a real customer.

A signup gate that breaks is worse than none. Vetto is designed to step aside whenever it is unsure.

Fails open after 800 ms

If Vetto is slow or down, your form submits as if Vetto were not there. An outage on our side never blocks a signup on yours.

Emails never stored

Salted hashes only, used for 90 days of repeat detection, then ignored and purged automatically. Your verdict log shows masked addresses like ja•••@gmail.com.

Relays allowed

Apple Hide My Email, Firefox Relay, addy.io and SimpleLogin users are real people. They pass, tagged.

No SMTP probing

Vetto reads public DNS only. It never connects to mail servers to test inboxes, so nothing gets greylisted or blocklisted.

Works with any stack

If it renders an HTML form, one script tag covers it. On Pro, forms that never touch a browser can call /v1/check from your server with your secret key.

  • Plain HTML
  • Framer
  • Webflow
  • Next.js
  • Supabase
  • Better Auth
  • Rails
  • Laravel

Pricing

Cheaper than the fakes it stops.

Start free on one site. Upgrade when the ledger shows it pays for itself.

Free

For your first site and your first fakes.

$0forever

Start free

No card needed.

  • 1 site · 1,000 checks / month
  • Typo rescue: “Did you mean…? Fix”
  • Throwaway + dead-domain blocking
  • Privacy relays allowed and tagged
  • Bot honeypot
  • 7-day stats with “$ saved this week”
  • Pro signals in shadow mode (counts only)
  • CSV audit summary up to 1,000 rows
  • Small “Protected by Vetto” link under messages

Pro

Recommended

Every signal, enforced on your server.

$12/ month

Get Pro: $12/month

Gumroad membership · cancel anytime.

  • 3 sites · 20,000 checks / site / month
  • Lookalike domains with a live mail server
  • Alias and repeat-signup detection
  • Datacenter / VPN and signup-burst signals
  • Custom policies, messages, allow & deny lists
  • Signed tokens + /v1/verify for your backend
  • Slack and Discord alerts
  • 90-day ledger, verdict log and CSV export
  • Unlimited CSV audit with export
  • No branding

Founding Lifetime

First 100

Pro forever for less than one year of Pro ($99). First 100 buyers, until Black Friday Nov 27, 2026.

$69once

Get Pro for life: $69

One payment via Gumroad · no renewals.

  • Everything in Pro, for as long as Vetto runs
  • One payment, no renewals
  • Founding price for the first 100 buyers

After checkout, paste the license key from your Gumroad receipt into Dashboard → Billing.

At ~$0.50 of compute per fake AI-tier account, 24 blocked fakes a month pay for Pro — so does one rescued signup.

FAQ

Questions founders ask first.

Something else? Start free (no card) and try it on your own form. Paying customers can reply to their Gumroad receipt.

Will it block real customers?

It is built not to. Privacy relays (Apple Hide My Email, Firefox Relay, addy.io, SimpleLogin) are allowed and tagged. Uncertain signals warn first: the visitor sees a message and the second submit goes through. And if Vetto does not answer within 800 ms, the form submits as if Vetto were not installed.

Do you store emails?

No. Vetto keeps salted hashes for repeat and alias detection, used for 90 days, then ignored and purged automatically, and your verdict log shows masked addresses (ja•••@gmail.com). The demo and the CSV audit on this page store no email addresses; the audit only sends domain names.

How does it handle bots posting directly to my API?

On Pro, every guarded form gets a signed vetto_token field when it submits. On your server, verify it with one call to POST /v1/verify, or offline with a short HMAC check. Reject a token that is present but fails verification. An empty token means Vetto failed open (slow, paused or over quota) or the request skipped your form: accept it, or re-check it server-side with POST /v1/check and your secret key. On Free, the hidden honeypot field still catches simple bots.

Does it slow my site?

No. v.js is a static script of about 4 KB gzipped, loaded with defer and cached at the edge. It makes no request until someone uses an email field, and any check slower than 800 ms is skipped.

Which stacks does it work with?

Anything that renders an HTML form: Plain HTML, Framer, Webflow, Next.js, Supabase, Better Auth, Rails, Laravel. Limit it to specific forms with data-forms, skip a field with data-vetto-ignore, or (on Pro) call /v1/check from your server for forms that never touch a browser.

How do Pro license keys work?

Buy Pro or Lifetime on Gumroad. Your receipt contains a license key: paste it into Dashboard → Billing and Pro unlocks for your account right away.

Can I cancel?

Yes. Pro is a Gumroad membership: cancel anytime from your Gumroad receipt or library. When it ends, your account falls back to the Free plan and your sites keep running on Free limits. Lifetime is a single payment with nothing to cancel.

Give your signup form sharp eyes.

Free on one site. One line of HTML. Remove it any time and your form works exactly as before.

Founding offer: Pro for life for $69 once, first 100 buyers, until Nov 27.