# Custom form without source

**URL:** <https://community.glideapps.com/t/custom-form-without-source/55823>\
**Category:** Ask for Help\
**Created:** [December 17, 2022, 6:08am UTC](https://community.glideapps.com/t/custom-form-without-source/55823 "2022-12-17T06:08:27Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 6:08am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/1 "2022-12-17T06:08:27Z")

</div>

Hi all, I searched the forums, but couldn’t find an answer to my concern.

Is it possible to create a custom form without a source table, that submits form data to a webhook (e.g. linked to Make or Zapier), but doesn’t save the form data in any source table?

Of, perhaps have a form mapped to a dummy/blank table, but have control over form submit behaviour, such that form data can be sent to a webhook and the form can be cancelled/rejected to avoid table insert?

---

<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 17, 2022, 6:15am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/2 "2022-12-17T06:15:47Z")

</div>

Yes, you can do that.

Just create a [Custom Form](https://community.glideapps.com/t/how-do-i-create-a-custom-form/25014), and instead of using an Add Row action, trigger a webhook.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 6:24am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/3 "2022-12-17T06:24:10Z")

</div>

Thanks Darren. Apparently, settings the form’s ‘after submit action’ to ‘trigger webhook’ sends the form data to the webhook, but also saves the data in the table, which is what I’m trying to avoid.

---

<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 17, 2022, 6:25am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/4 "2022-12-17T06:25:49Z")

</div>

Sounds like you are using a native form, which will always add a row when submitted.

A custom form is different. You get to choose what happens with the data. Check the link that I gave you.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 6:30am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/5 "2022-12-17T06:30:34Z")

</div>

Thanks, but I’m confused as to how to create a “custom form”?

Is there a step-by-step tutorial or video explaining how to create one?

---

<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 17, 2022, 6:36am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/6 "2022-12-17T06:36:05Z")

</div>

- Create a table to use as a helper table. You typically only need one row in this table.
- Add columns to temporarily store your form input values. Ensure that all columns are _[User Specific](https://www.glideapps.com/docs/reference/basic-columns/user-specific-columns)_ (this is critical).
- Add a Details Screen that uses your Helper Table as it’s source.
- Add input components to collect your “form” data, and target them at the user specific columns.
- Add a button to use as a “Submit” button, and set the action on that button to trigger your webhook.

There is a lot more that can be done with a custom form, but that’s essentially the guts of it. The App in the post I liked to earlier is copyable, so you can make a copy of that and study it if you want to learn more.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 6:39am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/7 "2022-12-17T06:39:47Z")

</div>

Great! Thanks so much.

So, if I have one or more “custom forms” (no table saving), then I’ll need a helper table for each form, right?

---

<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 17, 2022, 6:46am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/8 "2022-12-17T06:46:32Z")

</div>

Yes, no, maybe, it depends 😉

In theory, you could use a single helper table for an infinite number of custom forms. But because Details Layouts are tied to tables, you would need a “Show New Screen” action for each form (assuming that each needs to be different).

Actually, strictly speaking you don’t even need a helper table. You could build your custom forms on top of any table. But helper tables are encouraged, as they keep things a bit tidier.

My advice would be to just do whatever seems to make sense. There is no hard and fast rule.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 6:54am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/9 "2022-12-17T06:54:04Z")

</div>

Does this “custom form” with Details screen apply only to Apps, not to Pages, because I can’t see any such screen style option for a Pages tab 🤨

---

<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 17, 2022, 7:00am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/10 "2022-12-17T07:00:13Z")

</div>

The same principle applies equally to both. In Pages, every screen is a details screen (except for native form screens).

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 7:11am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/11 "2022-12-17T07:11:22Z")

</div>

Sorry, can’t make it work.

Form still saves multiple rows in the helper table.

---

<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 17, 2022, 7:13am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/12 "2022-12-17T07:13:54Z")

</div>

How are you getting to the “form”?

It sounds like you are still opening a form screen - “Show Form Screen” or similar.  
Don’t do that.  
Use either a Show Details Screen or Show New Screen action, with your Helper Table as the source.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 7:18am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/13 "2022-12-17T07:18:35Z")

</div>

Got it to work by creating an action workflow: trigger webhook and then delete row. Data sent, but empty table! This may still incur two data operations: add and delete.

I’ll try the ‘show details screen’ method as per your last comment, to see if it avoids multiple data operations.

And, thanks for sticking with me on this.

---

<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 17, 2022, 7:20am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/14 "2022-12-17T07:20:18Z")

</div>

> [@nickw](#):
>
> Got it to work by creating an action workflow: trigger webhook and then delete row. Data sent, but empty table! This may still incur two data operations: add and delete.

yeah, don’t do that. It’s completely not necessary (and probably won’t work reliably).

> [@nickw](#):
>
> I’ll try the ‘show details screen’ method as per your last comment, to see if it avoids multiple data operations.

That’s the correct way to do it.

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 8:15am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/15 "2022-12-17T08:15:07Z")

</div>

Ok, so I added new page/tab, with source set to helper table. Then added a button to it, with a ‘show new screen’ action. In the new screen overlay, first I added a Form Container again mapped to helper table, but it saved multiple rows (one for each form submission) to the helper table. I also tried a simple Container with text fields and button, but it doesn’t show the text fields, only the button.

Why is this so hard 😊

---

<div class="post-metadata">

**Author:** ![nickw](https://avatars.discourse-cdn.com/v4/letter/n/8e7dd6/32.png) [@nickw](https://community.glideapps.com/u/nickw)\
**Post date:** [December 17, 2022, 8:29am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/16 "2022-12-17T08:29:49Z")

</div>

Finally got it to work. Trick was to have one blank row pre-set in the helper table.

~~Last tiny glitch: previously submitted form values are shown the next time on a ‘show new screen’ or ‘show details screen’ overlay. Any simple way to clear it?~~

Never mind, had to define a workflow to clear column values before showing new screen.

All good!

---

<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 17, 2022, 9:59am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/17 "2022-12-17T09:59:17Z")

</div>

> [@nickw](#):
>
> Why is this so hard 😊

because…

> [@nickw](#):
>
> first I added a Form Container

As soon as you did that, you were back to a native form, and you were always going to get rows being added.

Anyway, looks like you figured it out 🙂

> [@nickw](#):
>
> Finally got it to work. Trick was to have one blank row pre-set in the helper table.

Yes, you need at least one row. What I normally do is add a RowID column, and that gives you a single row.

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/system/32/53398_2.png) [@system](https://community.glideapps.com/u/system)\
**Post date:** [December 18, 2022, 9:59am UTC](https://community.glideapps.com/t/custom-form-without-source/55823/18 "2022-12-18T09:59:28Z")

</div>

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.
