The email drop
Your form, your field, your backend. Two lines of HTML and it verifies as visitors type.
<script src="https://drop.parseapi.com/field.js" data-key="parse_public_YOUR_KEY" defer></script> <input type="email" name="email" data-parse>
Try it
This is the drop itself, live. Type a typo like billy@gmail.con and watch it catch the domain.
data-parse-status="empty"
What it does
- Checks the address is real as the visitor types, on pause and on blur.
- Catches typos with a clickable suggestion. gmail.con becomes Did you mean billy@gmail.com?
- Blocks disposable addresses and domains that take no mail through the browser's own form validation. No custom error UI to build.
- Your input stays yours. Same markup, same CSS, same name attribute, same value in the POST your backend already reads.
The contract
The script stamps data-parse-status on the input: empty, unchecked, checking, valid, invalid, disposable. A parse event bubbles from the input on every change:
document.querySelector('[data-parse]').addEventListener('parse', (e) => {
// e.detail = { field: 'email', status: 'valid', value: 'billy@gmail.com', suggestion: null }
});invalidanddisposableset the input's customValidity, so a plain form refuses submit with the native browser message.uncheckedmeans the value passed through unverified. A network hiccup never blocks your form.- The suggestion line under the input is a
p.parse-hintyou can restyle from your own CSS. - Added a field after page load? Call
parsedrop.scan().
Keys and pricing
- The key is a public key, locked to your domains on the Keys page. Safe in page source, useless on anyone else's site.
- Every check is a request on your own plan, pooled with everything else. No credits, no per-field pricing. Free plan works.
- Your form data never touches us. The address goes to the API for the check and the answer comes back. Nothing is stored.
Links
- The email API behind the drop.
- Bulk email verification for the list you already have. The drop keeps the next one clean.
- Docs
- Plans