Why your business emails go to spam, and how to fix it
The records and settings that keep confirmations, quotes and form emails out of spam.
Spam through your contact form wastes time, and the wrong fix quietly blocks real customers. The fixes in the order to try them, with what each one can cost you in lost enquiries.
Updated 29 October 2026, about 9 minutes to read
The short answer
Start with checks customers never see: a hidden field only bots fill in, checks on the server and a limit on how often one connection can send. Put caught messages in a folder someone skims every week instead of deleting them. Add an invisible check such as Cloudflare Turnstile only if spam still gets through, and avoid puzzles, word blocklists and country blocks, which turn real customers away.
Every spam fix has a cost, and the cost is paid by real customers: the one who gives up on a puzzle, or whose message a filter throws away without telling anyone. So rank the fixes by how many real enquiries they risk, and add them in that order until the spam stops:
Take a cleaning company whose form gets dozens of junk messages a week. The office manager deletes them each morning and once deleted a real quote request with them, because it sat between two adverts. The first three fixes above stop most of the junk without the customer noticing anything, and the review folder means the next real request caught by mistake is still there to answer.
Most small business forms never need more than the first four.
Read a week of it before you change anything. Spam through forms comes in four kinds, and each needs a different fix:
Note the pattern too. Spam that arrives in bursts from the same few connections points to a limit. Spam that fills a field no customer would fill, such as a long link in the name field, points to server checks.
A honeypot is an extra field in the form that people never see. Bots that fill in every field fill this one too, and the server knows a message with something in it did not come from a person. It costs customers nothing, which is why it goes first.
Built carelessly, it blocks real people. Get these details right:
A honeypot stops the simple bots. Better bots skip hidden fields, which is what the next checks are for.
Anything the form checks only in the visitor's browser can be skipped by a script that sends straight to the server. Put the checks that matter on the server, which handles every message whatever sent it:
Treat these as points against a message rather than verdicts. One point, such as a link, delivers the message as normal. Several points together send it to the review folder.
A limit on how many messages one internet address can send in an hour stops floods, where a bot sends the form hundreds of times. Set it loosely. An office, a school or a mobile network can put many people behind one address, and two colleagues may both write to you on the same afternoon.
When someone hits the limit, show a plain message rather than failing quietly: "We have received several messages from this connection. Please try again in a few minutes, or call us on the number at the top of this page." A real customer reads it and waits or calls. A bot moves on.
The forms on ggsites.com work this way: short-lived limits kept in memory stop automated abuse, as its privacy notice says, and nobody is asked to solve a puzzle.
Filters that delete are how real enquiries get lost. Send every caught message to a separate folder or label, such as "Form: check", with the reason it was caught. Someone skims it once a week, and more often in the first month after a change.
Never let a filter delete form messages without a copy. A spam message in your inbox costs a second to delete. A real enquiry deleted by a filter costs you the customer, and nobody ever finds out.
When a real enquiry turns up in the folder, reply to it the same day and change the rule that caught it. Say a dental practice's filter catches every message with the word "free" in it. Before long, "Is the first consultation free?" turns up in the folder, from a new patient who has had no reply. That rule has to go.
Count two numbers each month: spam that reached the inbox, and real enquiries found in the folder. The first can be above zero. The second should be zero, and if it is not, the filter is too tight.
When the steps above are in place and bots still get through, add a check from a specialist service. Two are common on small business sites:
Whichever you use, the result has to be confirmed by your server with the provider for every message. Cloudflare's own documentation says the widget alone does not protect a form, because a script can send anything it likes to your server. A form plugin that shows the widget but never confirms the result is decoration.
Our choice for a small business is Turnstile, because it is free at small business volumes and rarely asks visitors to do anything. Either way, name it in your privacy notice, because both look at the visitor's browser to decide.
European rules on reading or storing information on a visitor's device require consent, with an exception for what is strictly needed to provide the service. Whether a spam check counts as strictly needed is not settled everywhere.
In 2023 the French data protection authority, the CNIL, found that a scooter rental company had broken French rules partly by using reCAPTCHA when people created accounts, logged in or reset a password, without asking for their consent first. Cloudflare says Turnstile processes only the data strictly necessary for its security check and does not read what visitors type into the form.
If you trade in Europe:
These stop spam and customers together. Leave them out:
If a fix needs a customer to do something extra, it is a last resort, and it needs a review folder behind it.
Some forms send the visitor a copy of their message, or offer a box to tick for one. Bots use this to send spam to other people: they type a stranger's address and an advert as the message, and your website emails the advert from your domain, hundreds of times. A host can suspend a site's email when it starts sending spam, and the damage to your domain's reputation reaches your quotes and invoices too.
The fix is simple:
Form emails have their own sending rules as well. A notification that arrives with the customer's address in the From line often goes to spam: see why your business emails go to spam.
The messages that offer to fix your search ranking, rebuild your site or sell you a list of leads are typed by people, and no form check can tell them from customers without blocking customers too. Accept that some will arrive.
Deal with them in the inbox instead of the form. A mail rule can label messages with phrases these pitches share, such as "first page of Google" or "I was checking your website", so they sit apart from real enquiries. Do not reply, and mark them as spam in your own mailbox, which teaches your mail provider and does nothing to the form.
If you would rather hear about sales offers, give them their own route, such as an email address on the contact page, so the form stays for customers.
After any change to the form or its checks, send real test enquiries the way customers do:
Each one should reach the inbox, not the review folder, with the confirmation email in the customer's inbox too. Then look at the review folder every week for the first month and every month after that.
Every site we build has a form that lands in your inbox, tested from a phone before launch: see websites. Once only real enquiries arrive, the next job is getting each one to the right person quickly, which enquiry follow-up covers. If you are deciding whether a form is the right route at all, see chatbot, live chat or contact form.
Bots crawl the web looking for forms to post to, and a form with no checks accepts anything they send. Read a week of it first. Gibberish, links and many messages at once point to bots, which hidden fields, server checks and limits stop. Polished sales pitches are typed by people and are best handled in your inbox.
Start with the honeypot. It costs customers nothing and sends no visitor data to anyone. Add Turnstile or reCAPTCHA only if bots keep getting past the hidden field and the server checks. Used together they catch more than either alone, as long as everything caught goes to a review folder rather than being deleted.
No. People paid to type sales pitches pass any human check, and a check does nothing if your server never confirms its result with the provider. Treat it as one layer next to the hidden field, server checks and limits, and keep reading the review folder for real enquiries it caught by mistake.
Cloudflare's plans page lists a free plan with up to 20 widgets per account and no limit on the number of checks, and your site does not need to run through Cloudflare to use it. Plans change, so check the page before you rely on it. You still need your server to confirm each result with Cloudflare.
It is not settled everywhere. In 2023 France's CNIL found a company broke French rules partly by using reCAPTCHA without asking for consent. Name any check in your privacy notice and ask your privacy adviser what applies where you trade. A hidden field and server checks send nothing to anyone, so they raise no such question.
Keep it on the contact page as a tappable link. Customers who want to send photos or documents need it, and your mailbox's spam filter deals with most junk that harvesting bots send. Put the effort into the form instead, which is where bots can do the most damage.