# How do I create a custom form?

**URL:** <https://community.glideapps.com/t/how-do-i-create-a-custom-form/25014>\
**Category:** Community Resources\
**Created:** [April 1, 2021, 11:46am UTC](https://community.glideapps.com/t/how-do-i-create-a-custom-form/25014 "2021-04-01T11:46:14Z")\
**Posts on this page:** 1\
**Showing post:** 41

<div class="post-metadata">

**Author:** ![Darren\_Murphy](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/darren_murphy/32/47326_2.png) [@Darren\_Murphy](https://community.glideapps.com/u/Darren_Murphy)\
**Post date:** [December 22, 2021, 8:56am UTC](https://community.glideapps.com/t/how-do-i-create-a-custom-form/25014/41 "2021-12-22T08:56:41Z")

</div>

> [@Test\_Test](#):
>
> I very much liked your [video example](https://community.glideapps.com/t/unique-numbers/35039/8).

Thank you 🙂

> [@Test\_Test](#):
>
> However, I’m still puzzled by the [race condition](https://community.glideapps.com/t/action-sequencing-blocking-or-non-blocking/19601/2). Have you ever received feedback from Glide about this?

No, not really. But concurrency can definitely be a problem, and I’ve bumped into its effects several times.

> [@Test\_Test](#):
>
> Same question, different approach, have you ever found out a way to force an action to be on the server-side? Specifically, having the compound action of “incremate” happen on the server. This will, hopefully, complete remove any chance of a race condition, even if two forms are submitted at the exact same time.

My goto solution these days for dealing with race conditions/concurrency is to delegate to Integromat. By funnelling critical updates through Integromat I’m able to ensure that they are queued and handled serially, and avoid users tripping over each other or clobbering each other’s updates.

Below is some more reading on this topic, where I described an option for a specific use case:

> [@Row Numbers](https://community.glideapps.com/t/row-numbers/27619/11):
>
> I do believe that if you had just a single GSheet, then you could solve your problem. I’m not sure what your current user journey looks like, but it would need to be a two step process, with a short delay in between each step. Here is what I’m envisaging: When a user taps a button to claim a collectable, you put them into a “holding pattern” The button that they tap sends a webhook to Integromat with two values: the UserID, and the ID (RowID?) of the item they are attempting to claim. Integrom…

> [@Test\_Test](#):
>
> Again, this one-row custom form table isn’t immune to the race condition. Or is it?

No, it’s not. As far as I’m aware, the only way to ensure immunity is to delegate updates to a 3rd party.

---

_[View the full topic](https://community.glideapps.com/t/how-do-i-create-a-custom-form/25014)._
