# Prevent Spam on Public Apps

**URL:** <https://community.glideapps.com/t/prevent-spam-on-public-apps/84108>\
**Category:** Ask for Help\
**Created:** [August 30, 2025, 12:01am UTC](https://community.glideapps.com/t/prevent-spam-on-public-apps/84108 "2025-08-30T00:01:30Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mauricio\_Gonzalez](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/mauricio_gonzalez/32/65524_2.png) [@Mauricio\_Gonzalez](https://community.glideapps.com/u/Mauricio_Gonzalez)\
**Post date:** [August 30, 2025, 12:01am UTC](https://community.glideapps.com/t/prevent-spam-on-public-apps/84108/1 "2025-08-30T00:01:30Z")

</div>

Hey there! I was hoping to get some guidance on an app I am working on. I have a **public app** , no sign-in required, and users can create rows (via a form) to request bookings. As you can imagine, that’s an open door for spam and bot submissions.

Question: Is there any way to limit submissions to prevent bots or spam? E.g., Captcha, Limit submissions from the same IP within X minutes. Any other ideas?

Enabling sign-in is not an option, as I expect multiple submissions by different users, and I don’t want to hit user limits.

Thanks so much!

---

<div class="post-metadata">

**Author:** ![nathanaelb](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/nathanaelb/32/43079_2.png) [@nathanaelb](https://community.glideapps.com/u/nathanaelb)\
**Post date:** [August 30, 2025, 3:26am UTC](https://community.glideapps.com/t/prevent-spam-on-public-apps/84108/2 "2025-08-30T03:26:19Z")

</div>

It’s unclear to me if the bot/spam filters we experience online are security features or simply user experience components that are difficult for non-humans to use. I think it would be hard to build the former but possible to build the latter.

It would be easier to build in a custom form I think.

Ideas that come to mind:

1. Set a visibility condition on the submit button.
2. The visibility condition would be conditioned by the user successfully performing a task.
3. Task could be simple math (“What is 2+3 ?”) or typing a word or string of characters displayed (“Type the following word: efsdghur”) or ticking a checkbox.
4. In the table, a column with the correct answer and a column with the submitted answer by the user world be compared and used in the visibility condition. The condition on the checkbox would be the simplest.

I hope these ideas might get you started.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [August 30, 2025, 11:46pm UTC](https://community.glideapps.com/t/prevent-spam-on-public-apps/84108/3 "2025-08-30T23:46:11Z")

</div>

> [@reCAPTCHA or other ways to prevent spam](https://community.glideapps.com/t/recaptcha-or-other-ways-to-prevent-spam/61331/2):
>
> If it’s a public app then it rules out the option to use a rollup and count the number of submissions from an account, let’s say in the past 24 hours. But I think you can build a table with a single row to serve as your “public user profile” row, and build your tab on top of that row. Add a “session ID” user-specific column. When the user opens the form, before showing the form, set a unique ID to that “session ID” column, and pass that value later on to the submissions table. Use a relation +…

There was a bit of discussion in this thread.

I think the bottom line is there would always be workarounds if they want to spam your site, you do the best you can to contain them.
