guides

How TuitionDesk Protects Your Enquiry Form From Spam

TuitionDesk's public enquiry API has two independent limits — a per-IP anti-spam limit and a per-plan daily cap — so bots can't flood your Admissions CRM with fake leads.

TuitionDesk Team··4 min read

A public enquiry form has to be public — no login, no CAPTCHA friction, one tap for a parent to reach you. That openness is exactly what makes it a target. Bots crawl the internet submitting garbage into every open form they find, and a single bad actor can hammer an endpoint hundreds of times a minute just to see what breaks.

TuitionDesk's enquiry API (the same endpoint behind your iframe embed, your public site's form, and any custom integration) is protected by two separate limits, each guarding against a different kind of abuse.

Limit 1: Per-IP rate limit (anti-bot)

Every submission to POST /api/public/{your-slug}/enquiry is checked against the IP address it came from: no more than 5 submissions per hour from the same IP.

This is the classic anti-spam guard. It doesn't care which centre is being targeted — it stops a single bot or script from hammering any enquiry endpoint, yours or anyone else's, at machine speed. A real parent filling in your form once is nowhere near this limit. A script trying to flood your pipeline hits it on the sixth attempt and gets a 429 Too Many Requests with a Retry-After header telling it (and any legitimate retry logic) exactly when to try again.

This limit is IP-based, not org-based — it exists purely to stop abuse of the public endpoint itself, independent of which centre's form is being hit.

Limit 2: Per-plan daily cap (org-level)

The second limit is different: it caps how many enquiries your centre's form can accept in a single day, scaled to your plan.

PlanEnquiries per day
Free2
Starter10
Growth30
Pro100
EnterpriseUnlimited

This exists for a different reason than the IP limit. Even if an attacker spreads their spam across many IP addresses (defeating the per-IP limit), this cap still stops your Admissions pipeline from being flooded with hundreds of fake leads that would bury your real ones and cost you time to clean up. It resets at midnight in your centre's local timezone — not UTC, not India time by default, whatever timezone your organisation is configured for.

If a genuine spike of real enquiries pushes you against your daily limit — a big local ad campaign, an admission-season rush — that's a sign to upgrade your plan, not a bug. The limit exists to catch abuse, and it scales with the plan tiers built for centres running real marketing campaigns.

What happens when a limit is hit

Both limits return a clear response so your embedded form (or custom integration) can show the parent something sensible instead of a silent failure:

  • IP limit hit: 429 Too Many Requests — "Too many submissions. Please try again later."
  • Daily cap hit: 429 Too Many Requests — "This centre has reached its daily enquiry limit. Please try again tomorrow or contact them directly."

Genuine enquiries are never silently dropped — the parent always sees a message, and if they need to reach you urgently, your WhatsApp button (shown on every TuitionDesk enquiry form when you have a WhatsApp number set) still works regardless of the form's limits.

Why this matters if you're building a custom integration

If you're posting to the enquiry API directly instead of using the iframe (see our guide on embedding the enquiry form), build your integration assuming both limits exist:

  • Don't retry aggressively on a 429 — respect the Retry-After header
  • Don't build a "test script" that hits the endpoint in a loop during development — you'll burn your own daily quota
  • If you're running a legitimate high-volume campaign and expect to exceed your plan's daily cap regularly, upgrade rather than architecting around the limit — it's there by design

The bigger picture: why this protects you, not just TuitionDesk

An unprotected public form is a liability two ways: bots can use it to spam you with junk leads, and a compromised or malicious script could theoretically use it to spam others by embedding fake contact details in the message field. Rate limiting closes both doors without adding any friction — no CAPTCHA, no login, no delay — for the parents actually trying to reach you.


Building on top of TuitionDesk's public API? Get your API access and see the full enquiry form embed guide — protected by default, no extra setup needed.

enquiry APIrate limitingspam protectionlead form abusetuition centre softwareadmissions CRM

Run your centre with TuitionDesk — free

Fee tracking, attendance, batches, and a free public website with enquiry form. All in one place. No setup fee.

Start free — no credit card →