Getting started
Signup form widget
Stop fake, disposable and mistyped addresses at the moment people sign up, with one line of HTML.
Add it to your site
Create a Website form key under API Keys and list the domains your forms are on. Then paste the snippet it gives you before </body>:
<script src="https://bouncerly.com/widget.js" data-key="bn_pub_…" async></script>Every <input type="email"> on the page is checked when the visitor leaves the field. The widget suggests fixes for typos (gmial.com → gmail.com) and blocks the form for addresses that don't exist or are disposable. If our check fails or takes too long, the form goes through as normal. It also works with forms added after the page loads, as in React or Vue apps.
Options
Set these as data- attributes on the script tag.
<script src="https://bouncerly.com/widget.js" async
data-key="bn_pub_…"
data-block="undeliverable,disposable,role"
data-selector="#signup input[name=email]"
data-msg-disposable="Please use your work email."
data-msg-typo="Did you mean {suggestion}?"></script>data-block picks what stops the form: undeliverable, disposable and role (shared addresses like info@). The default is undeliverable,disposable. Messages can be replaced with data-msg-undeliverable, data-msg-disposable, data-msg-role and data-msg-typo.
Styling and events
Messages appear in a .bouncerly-msg element right after the field (with .bouncerly-error when the address is blocked), so you can style them with CSS. Blocked fields also get aria-invalid and a native validation message. Each check fires a bouncerly:result event on the field with the full result as event.detail, and window.Bouncerly.check(email) returns the same result if you want to build your own UI.
Limits and safety
Website form keys are meant to be public: they can only verify single addresses, only from the domains you listed (and their subdomains, plus localhost for testing), and each visitor can make 20 checks a minute. Checks count towards your monthly quota like any other, and unknown results are free.