Stop fake and mistyped sign-ups at the form
One script tag, under 8 KB, no dependencies. It checks the email as people leave the field and again on submit, then shows a clear message or a one-click fix.
- Six checks on every address
- A plain reason with every result
- Slow servers never cost a second credit
- 200 free credits, no card
On your form
Fix the typo before the account exists
The message appears under the field. Clicking the suggestion fills it in.
Install
Two lines of HTML
Create a key in the dashboard, add the script once, and mark the email fields to check. The key is public by design, so it is safe in your page.
<!-- Before </body>, once per page --> <script src="https://simplecold.com/api/v1/widget/v1.js" data-key="sc_pub_XXXX" defer></script> <!-- Mark each email field you want checked --> <input type="email" name="email" data-simplecold>
<script src="https://simplecold.com/api/v1/widget/v1.js" data-key="sc_pub_XXXX" data-selector="#signup-email" data-block-submit="false" data-turnstile="true" defer ></script> <input type="email" id="signup-email" data-simplecold data-msg-disposable="Please use your work email.">
document.addEventListener("simplecold:verdict", (e) => {
// e.detail: { email, allow, verdict, reason, suggestion }
if (e.detail.verdict === "warn") analytics.track("email_flagged", e.detail);
});
document.addEventListener("simplecold:suggestion", (e) => {
// e.detail: { from, to } after someone clicks "Did you mean …?"
});:root {
--sc-fp-ok: rgb(21 128 61);
--sc-fp-warn: rgb(180 83 9);
--sc-fp-block: rgb(185 28 28);
--sc-fp-font-size: 13px;
--sc-fp-gap: 4px;
--sc-fp-link: inherit;
}
/* The message under the field */
.sc-fp-msg[data-verdict="block"] { font-weight: 600; }Two modes
Basic or full, per key
Start with basic for free. Switch a key to full when you want the mailbox checked too.
| Basic | Full | |
|---|---|---|
| Format and syntax | Yes | Yes |
| Throwaway inboxes | Yes | Yes |
| Typo fixes (Did you mean) | Yes | Yes |
| Role addresses like info@ | Yes | Yes |
| Mailbox exists | Yes | |
| Catch-all and risky mailboxes | Yes | |
| Cost | Free, no credits | 1 credit per unique address every 30 days |
| Speed | Instant | Answers within about 1.5 seconds |
In full mode a repeat check of the same address is free for 30 days after its first check, however often it is typed.
You decide
Block, warn or allow
Set what happens for each kind of address, per key.
Disposable
Throwaway inboxes. Blocked by default, because they stop working soon after sign-up.
Role addresses
info@, sales@ and support@ reach a shared inbox. A warning by default.
Risky
Full mode only. Catch-all domains and mailboxes we can't fully confirm. A warning by default.
Undeliverable
Full mode only. The mailbox or the domain does not exist. Blocked by default.
Built for real forms
Safe to put on your sign-up page
A slow check should never cost you a real customer.
Fails open
If a check takes longer than about 1.5 seconds, or anything goes wrong, the form goes through as normal.
Your domains only
Each key works only on the domains you list. Use *.example.com for every subdomain.
Bot protection
Every check needs a signed, single-use token from the page. Add Cloudflare Turnstile on top if you use it.
Monthly cap
Set a monthly limit on checks per key, so a busy month never surprises you.
Accessible
Messages are announced to screen readers and sit right under the field they belong to.
Yours to style and extend
Match your brand with CSS variables, rewrite any message, and listen for the simplecold:verdict event.
Add it to your form today
Basic mode is free. Sign up for 200 free credits to try full mode on real traffic.
FAQ
Form protection questions
Before you add it to a form.
Still have a question? Talk to us.
Keep fake sign-ups out
Start with 200 free credits. Basic mode never uses any.