Every fake email at checkout costs you money. Here's how smart online stores stop fraud before it starts — with one simple API call.
An email address is the single most important identity signal during online checkout. Yet most stores accept any string with an @ symbol and call it a day. The result? Fake accounts, coupon abuse, fraud orders, and chargeback disputes that drain your margins.
Email verification solves this at the source — by confirming an address actually exists and can receive mail before the order completes. With a free API from CheckMail1, you can add this protection in under 30 minutes.
Fraudsters often use randomly-generated or temporary email addresses to place orders they intend to dispute. If the email bounces when you try to reach the buyer, you lose the dispute by default — even if you shipped the product.
Real-time email verification blocks these orders before fulfillment, eliminating the underlying fraud vector.
Welcome-back offers, first-order discounts, and referral bonuses are routinely abused by bots that generate throwaway addresses. One free API check at signup reduces multi-account abuse by up to 70%.
Transactional emails (order confirmation, shipping update, review request) reach a dead inbox and never get opened. That means lost upsell opportunities, zero reviews, and weaker LTV. Cleaning emails at capture fixes this permanently.
Sending marketing campaigns to addresses that bounce hammers your domain reputation. ISPs start routing your mail to spam — affecting every customer you've legitimately built a relationship with.
Key insight: The best time to verify an email is before it enters your database. Retroactive cleaning costs 10× more than point-of-capture validation.
A modern email verification API like CheckMail1 performs a layered check without sending a real email:
| Check | What it Detects | Fraud Prevention Value |
|---|---|---|
| Format validation | Typos, malformed addresses | Low — bots know email format |
| MX record lookup | Domain can receive mail | Medium — dead domains blocked |
| SMTP handshake | Mailbox actually exists | High — most fake accounts filtered |
| Disposable email detection | Temp-mail, Guerrilla Mail, etc. | Very high — kills coupon abuse |
| Catch-all flag | Domain accepts all addresses | Context-dependent — flag, don't block |
| Free provider flag | Gmail, Yahoo, Outlook vs. business | Useful for B2B lead qualification |
Sign up at checkmail1.com. Free accounts include 100 verifications/day — enough to prototype and test without any credit card.
The simplest integration is a server-side check when the checkout form is submitted. Here's a Node.js example:
const axios = require('axios');
async function verifyEmail(email) {
const res = await axios.get('https://checkmail1.com/api/verify', {
params: { email },
headers: { 'X-API-Key': 'YOUR_API_KEY' }
});
return res.data;
}
// In your checkout route:
app.post('/checkout', async (req, res) => {
const { email, ...orderData } = req.body;
const check = await verifyEmail(email);
if (check.result === 'invalid') {
return res.status(400).json({ error: 'Please enter a valid email address.' });
}
if (check.is_disposable) {
return res.status(400).json({ error: 'Disposable email addresses are not accepted.' });
}
// Proceed with order...
});
The CheckMail1 API returns a JSON object. For e-commerce, focus on these fields:
{
"email": "buyer@example.com",
"result": "valid", // valid | invalid | catch_all | unknown
"is_disposable": false, // block disposable addresses
"is_free_provider": true, // flag for B2B stores
"smtp_valid": true, // mailbox exists
"mx_found": true, // domain has mail servers
"score": 0.97 // 0-1 confidence score
}
Not all risk signals warrant a hard block. Use this decision table:
| Scenario | Recommended Action |
|---|---|
result = invalid | Hard block — show inline error |
is_disposable = true | Hard block for new signups; soft block for returning customers |
smtp_valid = false | Hard block |
result = catch_all | Allow but flag for manual review queue |
score < 0.5 | Trigger CAPTCHA or phone verification fallback |
For the best UX, validate as the user finishes typing (debounced at 600ms) rather than waiting for form submission:
let debounceTimer;
const emailInput = document.getElementById('email');
const statusEl = document.getElementById('email-status');
emailInput.addEventListener('input', () => {
clearTimeout(debounceTimer);
debounceTimer = setTimeout(async () => {
const email = emailInput.value.trim();
if (!email.includes('@')) return;
const res = await fetch(`/api/check-email?email=${encodeURIComponent(email)}`);
const data = await res.json();
if (data.valid) {
statusEl.textContent = '✓ Email looks good';
statusEl.style.color = '#16a34a';
} else {
statusEl.textContent = '✗ Email address not found';
statusEl.style.color = '#dc2626';
}
}, 600);
});
add_action('woocommerce_checkout_process', 'checkmail1_verify_email');
function checkmail1_verify_email() {
$email = $_POST['billing_email'];
$api_key = 'YOUR_API_KEY';
$url = "https://checkmail1.com/api/verify?email=" . urlencode($email);
$response = wp_remote_get($url, [
'headers' => ['X-API-Key' => $api_key]
]);
if (!is_wp_error($response)) {
$data = json_decode(wp_remote_retrieve_body($response));
if ($data->result === 'invalid' || $data->is_disposable) {
wc_add_notice('Please enter a valid, permanent email address.', 'error');
}
}
}
Shopify doesn't allow direct server-side checkout hooks without a custom app, but you can inject a JavaScript validation snippet via the Additional Scripts section in your theme settings, calling a lightweight proxy endpoint you host on your own server or Cloudflare Workers.
Already have thousands of contacts with unknown quality? CheckMail1's API works for bulk verification too. A simple Python script can process a CSV in minutes:
import csv, requests, time
API_KEY = 'YOUR_API_KEY'
BASE_URL = 'https://checkmail1.com/api/verify'
with open('customers.csv') as f_in, open('customers_verified.csv', 'w', newline='') as f_out:
reader = csv.DictReader(f_in)
fieldnames = reader.fieldnames + ['email_result', 'is_disposable']
writer = csv.DictWriter(f_out, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
r = requests.get(BASE_URL,
params={'email': row['email']},
headers={'X-API-Key': API_KEY})
data = r.json()
row['email_result'] = data.get('result', 'unknown')
row['is_disposable'] = data.get('is_disposable', False)
writer.writerow(row)
time.sleep(0.05) # ~20 req/sec, well within rate limits
print("Done. Check customers_verified.csv")
After running this, segment your list: suppress invalid addresses from all campaigns, and create a re-engagement flow for catch_all contacts using less aggressive send cadences.
Let's model a mid-size e-commerce store with 2,000 new signups per month:
| Metric | Without Verification | With CheckMail1 |
|---|---|---|
| Invalid / disposable emails per month | ~300 (15%) | ~20 (after filtering) |
| Chargeback disputes linked to fake emails | ~18/month | ~2/month |
| Chargeback cost (dispute + fee + lost goods) | ~$540 | ~$60 |
| Coupon abuse incidents | ~40/month | ~5/month |
| Coupon abuse loss ($8 avg discount) | $320 | $40 |
| Email deliverability score | Declining | Stable / Improving |
| Monthly savings | — | ~$760 |
| CheckMail1 cost (2,000 verifications) | — | ~$4 |
| Net ROI | — | ~190× return |
Takeaway: For most e-commerce businesses, email verification pays for itself within the first hour of the first day it's enabled.
Slightly — expect a 1–3% drop in registrations. But those registrations had near-zero LTV and high fraud risk. Most stores see net revenue increase after 60 days due to lower chargebacks and better email deliverability.
Many corporate email domains are catch-all (they accept mail to any address). Don't hard-block these — instead, flag them for a secondary check or require email confirmation before order fulfillment.
CheckMail1 returns results in under 400ms on average, well below the user-perceptible threshold. SMTP-based checks can occasionally take 1–2 seconds on slow mail servers — for checkout flows, consider running the check asynchronously and confirming via email rather than blocking the UI.
Yes. CheckMail1 does not store the email addresses it verifies beyond the immediate request. No PII is retained, no data is sold. The API call is equivalent to a DNS lookup from a compliance perspective.
Email verification is one of the highest-ROI protections an e-commerce store can add. It costs pennies per verification, blocks the majority of fraud at the source, and keeps your sender reputation intact for the customers you actually want to reach.
CheckMail1 makes this easy: a single API endpoint, no credit card required for 100 free verifications per day, and response times fast enough for real-time checkout use.
Start protecting your store today — it takes about 30 minutes to integrate and the savings show up in your first billing cycle.
100 free verifications per day. No credit card. Production-ready API in minutes.
Get Your Free API Key →