Spam-Resistant Consultation Form
A consultation form that resists spam, never creates duplicates, and instantly sends a confirmation and an admin alert.
- Status
- Live
- Layers
- FrontendBackend
- Used by
- Prospective students or parents asking for a consultation, and the admin who follows up.

The problem
Ordinary contact forms attract spam, sometimes submit twice, and lose their contents when the page closes.
The solution
The form uses a honeypot and minimum fill time, and an idempotency key so double submits don't create duplicates. Each submission creates a lead, a confirmation email, and an admin alert.
How it works
What happens, step by step, from the user's point of view.
- 01
Fill in the consultation form
The visitor enters a name, level, programme interest, learning goal, and contact details. For minors, a guardian's details are asked too.
- 02
Bot submissions filtered out
A hidden trap field and a minimum fill time catch bots. The server also limits how many submissions come from one source.
- 03
Double submits ignored
Each form carries a unique key, so pressing send twice doesn't create a duplicate record.
- 04
A new lead is saved
The details are saved as a lead in the CRM first, before any notification goes out.
- 05
Confirmation and admin alert
The sender gets a confirmation email if they agreed to service messages. The admin is alerted straight away by Telegram or email.
System design
Who uses it, what they see, what works behind the scenes, and where the data lives. Read it from left to right.
1People
- VisitorFills in the form on the consultation or contact page.
2What they see
- Consultation formA form with clear error messages on each field.
3Behind the scenes
- Spam filterHoneypot, minimum fill time, and a limit on submissions.
- Form serverFastAPI saves the lead and rejects duplicate submissions.
4Data and alerts
- DatabasePostgreSQL stores leads, consent, and an activity log.
- Telegram and emailAlerts the admin and sends a confirmation to the sender.
Key features
- Honeypot and minimum fill time
- No duplicate records
- Automatic confirmation to sender
- Instant admin notification
Built with
- Next.js
- FastAPI
- PostgreSQL
What the business gets
- The lead list stays cleaner, with fewer bot submissions.
- One request is never recorded twice.
- The admin knows about new requests right away without watching the dashboard.
- Leads are still saved even when email or Telegram is having problems.
Terms on this page
- Honeypot
- A hidden field people can't see; if it gets filled in, the sender is almost certainly a bot.
- Kunci idempoten
- A unique code for one submission, so the same submission only counts once.
- Rate limit
- A cap on how often an action can be repeated in a short time, to prevent abuse.
Can it work for your business?
Fits any business contact page: incoming leads are cleaner, and you know right away when a new request arrives.
Ask about this project