How it works
What happens when someone presses Send.
Five steps, from the form opening to the enquiry reaching you. Your visitor only notices one of them: pressing Send.
- 01The form opensIt fetches a signed challenge.
- 02Quiet checksNothing for the visitor to solve.
- 03Saved firstBefore anything is sent.
- 04The same replyFor people and bots alike.
- 05DeliveredTo your inbox and your systems.
Spam is saved too, but never sent anywhere.
The form opens
When the page loads, it asks speir for a challenge: a token signed for your site that works once. It is accepted from 3 seconds after it is issued until it is 30 minutes old, because people take a few seconds to write and bots don’t.
The challenge also names two hidden decoy fields, different every time, and can include a small puzzle for the browser, if your site switches that on.
The quiet checks
When the visitor presses Send, speir runs every check at once. None of them asks the visitor to do anything.
- refusesYour site, your fieldsOnly your registered sites can send, and only with the fields your site declared.
- refusesA signed timerA token that is too new, too old, already used or for another site is refused, with an error that never says why.
- marks as spamHidden decoysTwo fields people never see, with names that change every time. A bot that fills one in has given itself away.
- adds to a scoreContentLinks, known spam phrases and other tells each add a little. It takes several to tip a message over, and each site can tune where that line is.
- slows downRate limitsPer visitor address, per site and across the platform. Addresses are hashed under a key that changes every hour.
- optionalProof of workYour site can ask each browser to do a little hashing first, usually hidden behind the 3-second wait. Off unless you turn it on.
Saved before anything is sent
The enquiry and the jobs to deliver it are written to the database in a single step, before any email is attempted. If the mail server is down, the message waits rather than being lost. If speir restarts in the middle of a delivery, another process picks the job up.
Spam is saved too, with the reasons it was caught, so the rules can be tuned. It is never sent anywhere, and it is deleted after 90 days.
The same reply, whoever sent it
Every submission that passes the checks on the form gets an identical answer, spam included. A bot learns nothing about what gave it away.
202 {"status":"received"}Filled in a decoy. Told nothing.
202 {"status":"received"}The same reply, with no puzzle on the way.
Only the real one arrives.
Delivered, and retried if it has to be
- 5 s
- 30 s
- 2 min
- then every 5 min
If delivery gives up, we’re alerted, and the enquiry is still stored. speir never emails the visitor, so your form can’t be used to send mail to anyone else.