Shopify
Catch the bad addresswhile they are still typing.
A checkout UI extension that checks the email domain and the shipping address in place, on the checkout page, before the order exists. A failed delivery costs between 5 and 15 euros and most of them start on the form.
The arithmetic
A failed delivery costs 5 to 15 euros. A wrong refusal costs the order.
Both numbers are on the page because both decide the defaults. Nothing blocks a checkout unless you turn blocking on, and even then only on the one verdict backed by the street and its house numbers being on file.
- In the checkout, not after itThe extension renders under the contact field and above the delivery address, so a correction happens while the shopper is still looking at what they typed.
- Mistyped email domainsA banner offering the correction, dismissible, never a blocked button. The shopper may genuinely own an address at a domain no list has seen.
- Corrections are applied only when they press the buttonThe banner shows the normalized address and a button that puts it in the form. Nothing is rewritten behind their back.
- Blocking is per store and fires on one verdictOnly an address the register says does not exist can ever stop the buyer journey, and only when you have turned blocking on.
- An outage resolves to "continue"Requests are abandoned after 3.5 seconds and the checkout proceeds. A verification that blocks a sale when it cannot reach its own backend is worse than no verification.
- Your key never reaches the shopperA checkout extension runs in a sandbox on the shopper's device, so anything shipped to it is public. The extension calls the app backend, which holds the key.
Setup
Three steps, then a setting.
- Install the app on your storeIt asks for
read_customersand nothing else. An app that wantsread_ordersto validate an address is an app worth declining. - Get a free key and paste it into the app100 calls a month per endpoint, no card. The key stays on the app backend.
- Add the extension to your checkoutCheckout editor, add the block. It renders on the contact and delivery address sections.
- Decide whether blocking is onOff until you switch it on, per store.
Debounced
These fields fire on every keystroke.
The email check waits 600ms after typing stops, the address check 800ms. A request per character would be useless and expensive, and your bill is bounded by real checkouts rather than by typing.
- Only France is asked aboutElsewhere the honest answer is "unknown", and asking would spend your quota to learn nothing. Email verification works worldwide.
- TranslatedEnglish and French, from the extension's own locale files, so a French store shows French banners.
- Nothing beyond what is being checked leaves the checkoutThe email address and the postal address. No cart contents, no customer history.
Questions
Including the awkward answers.
- Does it slow the checkout down?
- No. Both checks are debounced and every request is abandoned after 3.5 seconds, and abandoning means the checkout continues.
- Can it block an order?
- Only if you turn blocking on, and only on an address the register says does not exist. An address we have no data for never blocks: that is our coverage gap, not the shopper's mistake.
- Where does my API key live?
- On the app backend. A checkout extension runs on the shopper's device and everything in it is readable, so an extension carrying a live key hands a working credential to every visitor.
- Which countries are supported for addresses?
- France, from the Base Adresse Nationale. Email verification works everywhere.
- What does it cost?
- The free key covers 100 checks a month per endpoint with no card.