Skip to content
SOLUTIONS · SAAS

Block throwaway signups before they reach your product.

Screen new-user emails through the verification API at signup — reject dead addresses on the form and flag disposables before they burn onboarding emails and free-tier credits.

Fake signups cost more than they look.

Every self-serve product collects them: mistyped addresses that can never confirm, ten-minute inboxes grabbing a free tier, bots padding your activation funnel. Each one burns an onboarding email, skews your metrics, and — when the welcome mail bounces — chips at the sender reputation your real users' emails depend on.

The cheapest place to stop a bad address is the signup form, while the person who typed it is still looking at it. That's one API call.

We hold ourselves to this: ClearMX's own registration form runs every address through the same pipeline this page describes, and rejects domains that can't receive email.

How you do it

01

Create an API token

One click in the dashboard — the token is shown once, store it in your secrets.

02

POST from your signup handler

One request per signup, before you create the account. Median for a single verify is ~290ms — no spinner needed.

03

Act on the verdict

Reject undeliverable with an inline message. Allow deliverable. Let risky and unknown through but flag them — a role address or catch-all domain is often a real customer.

04

Fail open

If the check times out, let the signup through. A verification hiccup should never cost you a real user — it's how we run ours.

POST /api/v1/verify — in your signup flow
curl -X POST https://clearmx.app/api/v1/verify \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email": "trial-7f2@dropmail.example"}'

# → { "result": "risky", "score": 50,
#     "reason": "disposable_domain", ... }

Every rejection is explainable.

When support asks why a signup was flagged, the answer is in the result: each check reported individually, a score, and a reason your team can read. A disposable domain is risky, not a hard no — the policy stays yours.

app.clearmx.app/results
trial-7f2@dropmail.example risky
Reason: disposable_domain · score 50
CHECKS
syntax Address format pass
mx Mail servers for the domain found
smtp Mailbox probe — no email sent unconfirmed
disposable Throwaway / temporary provider yes
role Shared inbox (info@, billing@…) no

Product UI shown with sample data.

Every answer is explained — and nobody gets emailed.

Four honest outcomes

deliverable, risky, undeliverable — or an honest unknown when a mailbox can't be confirmed, instead of a confident guess.

A reason for every row

A 0–100 score plus a machine-readable reason (no_mx, mailbox_not_found, disposable_domain…) you can act on and show your team.

No email is ever sent

The mailbox probe talks to the receiving server but always stops before any message — the people on your list never see anything.

What 10,000 signups costs

One credit checks one address. Pay once — credits never expire, and there's no subscription required. The full rate schedule is on the pricing page.

€54.00
€0.0054 per verification

Frequently asked questions

Do you use this on your own signup form?

Yes. ClearMX's own registration form runs every address through this same pipeline and rejects domains that cannot receive email — the exact integration this page describes.

What should my form do with each verdict?

A common policy: reject undeliverable with an inline message, allow deliverable, and let risky and unknown through but flag them — a role address or a catch-all domain is often a real customer, and unknown means the mailbox could not be confirmed either way.

How fast is a single verification?

Our production median for a single-address verify is ~290ms — fast enough to run inline on a signup form without a spinner.

Keep reading: Email Verification API Guide: Integrate Verification in Minutes · Disposable Email Addresses: What They Are and Why to Block Them