How do I create a custom form?

I’m just dropping this here so I have something to refer people to when they ask.

This is a simple concept app (copyable), that demonstrates the following techniques:

  • Building custom forms for adding and editing list items (as an alternative to the native forms provided by Glide)
  • Preventing duplicate new entries using User Specific Columns and Relations
  • Enforcing mandatory input items
  • The use of visibility conditions and user specific booleans to control user flow

There is nothing particularly advanced here, but it does demonstrate a few concepts that new users sometimes appear to struggle with.

Update 2021-11-16: If you’re wondering what a Custom Form actually is, or when you might want to use one, then please read this:

Update 2021-12-26: Concept app has been updated, to take advantage of some newer features and techniques. Changes include:

  • A working table has been added, and is used to prevent duplicates being created on edit (this makes use of the Remove Element from Array plugin)
  • Names are trimmed to remove extra white space
  • Actions have been “modernised” to keep Save buttons disabled while all required criteria are not met.

Update 2024-12-16: Created a new Concept App, which is available as a template.

37 Likes
Send Form Button
Prevent duplicate form submission
Form Submit Button Customization
Calculated fields in forms
Segmented choice - tap on and off
Form submission button
Relations in a form
Upload image action I would like to prevent using existing library photos
Does Glide honor the Data Validations I've configured in Google Sheets?
Enforce column value is unique (distinct)
Edit unique value in custom form
Is there a way to do a check before submitting a form?
Anyway to make sure a relation field does not scan itself?
How to prevent form submissions creating new contacts
Wrong "set column values" action assignment in row fields
How to get information from Page Source to Form Container
Check if current specific row entries match before adding new ones
Interval training assistant app - with great help from community posts!
Validate file upload to create custom action
How to Prevent Inventory Stock from Going Negative
Filtering problem
Creating a list or relations inside a form
I'm adding new rows to my table but changing other rows involuntarily
Form Elements Obligatory
Formula in a form?
About Math Column
Not run Submit button
Calendar component and not allowing entries before a submitted date
Avoid Duplicate while form Submission
Validation on Duplicate Entry
Prevent Duplicate SKU's or Order Numbers
Unique row for signup form everytime for every user
Onboarding, save data
Confirmation popup on form submission
Not urgent - avoid input duplicated code (text)
How to set columns without using the "Send" buttom on top
Form confirmation screen
Survey with sections saving to one row
Any tutorial/resource showing a full project build using Glide pages
Problem in creating a detail record from master record
Computed Columns are not updated for Show Form and Edit Form screens
Reservaton Type
TAB that is Form that Adds New Rows for Each User Submission (and tags to be made by them)
How to Update a Row via Form Submission
Location Coordinates
Validate Unique Username entered by user
Problem with clipping data row in sheet. Duplicating data
Make Switch/Checkbox component "required" possible?
Values not populating into DB based on Choice components dependent fields
Number input that accepts 0 left
How to keep form values
Edit speech-to-text before saving
"Required" option
Not able to check if a number is included in a joined list
Tagging a sales lead with the sales rep. ID
Form Screen: rename the send button
How do you allow users to save information on a form and then come back to it to add more before submitting?
Form screen: check fields
Newbie Q: Computed column not seen on my screen. Suggstions? (w/Vid link)
How to remember an open transaction?
How to retreive data from other table?
Action after submitting a form
How to ask for custom text in an Action
Glide Usability Issues
I want a duplicate check, for example, this name already exists.
Stopwatch Issue
I want a duplicate check, for example, this name already exists.
Column not syncing to Google Sheet
Selective edit of a form submission?
Customizing Form Containers (Glide APPS)
Required fields when hidden
Avoid Duplicates on form submit
Change the "Submit" button
Required field marker (outside of form) for number entry
I need to calculate the total amount before submitting the data
Once again: Set Column Values with ITE/Lookup/Math values during On Submit Action
Time Base Exam/Quiz
Add a validation on user input for phone number
How can I add a numbers input field with a different data destination than the screen's table?
Avoiding Duplicate Entries
Adding a new row for Detail Screen
Solution to Prevent Duplicate Entry
Data Validation
Radar Integration Stopped working properly
Delay on button to solve refresh data delay
Notification (email) when forms submitted
Long Form guidelines
Update a table on a weekly basis using information from another table
Help in form submission adding row with condition
How to retrieve a field of another sheet
Regex Data Validation Needed
Glideapp
Add a New Edit Screen
Confirmation Screen Set-up
File Picker (Video Uploading)
Boton para finalizar formulario
ROW = This Item
Form Respons
Setting a default value to an entry component
In-App Sort and Filter missing from inline_List component
Callenge: limits for price entry based on average item price
Filtering Workaround Requests
Delay function - Alternative
Form screen
RegEx challenge (or just seems that way)
📣 Testers needed: Send Email action
Create a Form that looks like an existing data entry
Calculation within a form
Add Row tab
Custom form - Validate input to include only Hebrew and a handful of special characters
Radar Address Complete in Form
Automatic Number Calculation
Automatic Number Calculation
Autosaved Form
Webhooks+Gmail
Glide Page Add New Row with New Data
Button component within form is not visible with increment number action
Multi-step form
Action trigger, validation and logic - why are logic elements seem to be at the wrong position (data)?
Add new screen already populated?
In-app Change Log / History
Help the Dummy - Personal Training App for Archery
Radar Address Complete in Form
I would like to know how to control the information that is added to a list, not to be duplicated
Is it possible to submit a form and take the user to another form page from a button on the 1st form?
How to prompt user before exiting a form?
Display choice component even when there are no dropdown items
Predetermined mask for fields?
Check for existing value
Find Duplicate Entry
Solution to Prevent Duplicate Entry
About drop down list based on data validation in sheets
Custom action when edit screen (form) is cancelled (ON CANCEL)
Calculations while adding new record
How to use the barcode scanner?
How do i know when a new users signup
Composite Key - How come Glide is missing this
Form container stretches across entire screen (unlike classic container)
Preventing Duplicate Record Submission
Determine if row exists in a table
Stop form making new rows
Filling form better UI
🆕 Date ranges for date picker & date time picker
Custom form screen question
Información repetida
Form Conditional Logic
Glide Pages forms - one to many relations
Timing Out Loses Data
Displaying Calculating value
I want to make the location button on required
Custom Form issues
Limit multiple selection option
Photo Uploader (Multiple Inputs to One Column Creating New Rows)
If the category exists it is not added
Price Calculation based on selected data
Help with a Calendar App
Default value in forms
How to avoid to add a row after submitting a form
Solution to Prevent Duplicate Entry
Form submission criteria
Insert table in a form with dynamic choice component columns?
How to Filter Data Based on User Given Input?
Avoid duplicate usernames
Create n row?
Feature or Bug: Field value pre-set
Delete the data from a table of a dating application
How can I display info from a lookup/relation in a form?
Counter selected / deselected elements in Choice component
Single item edit screens
Form fields : How to auto populate different fields
Change / Translate Submit button in form container (pages)
Confused by screens and forms
After clicking send in Form
Plusieurs utilisateurs sur le même formulaire Glide
Reset File Picker and Text Entry inputs after clicking a button
Submit action?
Automatic Calculation
Need Help: Calendar That Identifies Weekends in Glide
Edit forms in Pages
How to convert decimal to duration?
Targeted row deletion via button action
Add conditions issue, datetime
How to make user specific app for multi-user
Fill form with AI from uploaded PDF
Date conflict using Event Picker
Calendar prevent two entries at the same day
Offline rows/forms
🚀 How to Create a Multi-Step Form in Glide? (Product → Size → Color)
On Change
How to set an end date input picker to start date by default
Public form submission
How do I create a form that will fill in rows on the glide tables
Custom Action on Add
Expert Help :: Refine App
Cancel Default Form Submission
Resume incomplete form
View the result of an operation before sending the data to the table
Automating Category Selection in Task Management App
System flow
How to handle removing Form Container entries when a user presses cancel?
Prevent duplicates from text entry
How to add rules/conditions to adding table?
Forms — view all and/or connect the same ones?
Solution to Prevent Duplicate Entry
Book a soccer pitch⚽📅
Extra Row is Creating Instead of Updating the Intended Row
Auto-Fill Feature
Help with stopwatch timer in glide pages
Reconfirm before clicking submit button
Action issue
Custom form is always using MY details and not the user I'm testing with
Data validation best practices
How can I add a menu item that is tied to a form action?
Required fields checkbox and location/signature acting strange
Why my text entry already contains a value?
Duplicate rows
Text match plugin
Show Form Screen
Preview Screen Before Submitting
Removing or prevent duplications of entries
Auto-appear text based on text input
Duplicity of properties CRM
Checking that email is unique
Sign up and onboarding
Custom form / Computed columns
Parent and Child Table Relationship
Mathematical formulas in collections
Quoting a price inside a form
Automatic form filling if the user selects the first component
Choice selection disappears from UI but remains in the table (Worked fine before)
Data validation to avoid collision
Delay in generation of image URL in glide table
How can I make a calculated field on a form, which depends on the value of another field on the same form?
Multi-step forms with multiple submissions per user
Link expired. Can you re-share the link
Need help in creating multiple Entries with same Name on having multiple selection from choice component
App with lots of user entered data
User Entered Percentages
Intermediary Form Table
Prevent Duplicate Username
How to avoid duplicated record creation
Data valuation before form submit (sum of 2 columns)
Image displaying when no image has been uploaded
Creating an action to reflect checkboxes actual state
Creating navigation steps in a mobile app
Validate a field based on other fields
Linking staging tables and custom actions
Edit Screen is not enforcing the Required Field
Query rows via API
How to change the text of the form button?
How can I not allow "Blank Space" to be used to fill up a required field
Search Action
Custom form without source
Imagen de referencia en un formulario
How to prevent submission finish time is before start time
Format submitt button forms container
Fixed value in calculated cell at Submit
Add user input to existing row?
Update current row but without using edit screen
How to use my form in a repetitive way?
Custom Action for a Form Return to Screen
Append a value to a column
Creating and editing only new row in dataset
No Duplicar Registros
Checking for duplicates of an entity AFTER adding said entity
In Pages, the Location component doesn't have "Reqjuired" option
Form Submission Conditions
When does Glide do math column recalc?
How to force a number field to have set amount of digits
Adding custom "Add" form
Insert Data to Google Sheet
Computed Columns are not updated for Show Form and Edit Form screens
Required choice component behaviour when hidden
Form submit
Newbie - Data & Data Sync

Thanks for making this!

2 Likes

@Darren_Murphy thank you so much for this. I’m totally inspired by your ideas and I’m trying to implement them on my app. I am bumping into one big problem…the “edit” button I added, won’t click! I duplicated everything you did on your app, so not sure what the problem is.


1 Like

The presence of that blue outline around your button suggests “select” mode. It’s not something as simple as being in the wrong mode, is it?

2 Likes

DUH :rofl:

2 Likes

Thank you @Darren_Murphy.
Is there a real risk of duplication when we create Custom Form, cf. the use of User Specific in addition to the target column?

I have a Custom Form with 50 questions (in addition to relations etc), so I am a bit relunctant to double these columns…

Thanks in advance.

1 Like

Being able to avoid duplicate entries (before they are created) is a nice side effect of using custom forms.
If you’re using the standard Open Form method, then I’m not aware of any way you can stop duplicates from being created. So I guess it depends on whether or not that is important for your use case.

2 Likes

I haven’t tried but if you prefer the modal form @ThinhDinh suggests you could conditionally hide the submit button using CSS.

I’m actually in the process of redoing one of my larger forms in a details view. Copy paste all!! Thanks @Darren_Murphy for the custom forms write up. I like your use of the ITE column to decide if we could save or not.

2 Likes

Thank you @Darren_Alderman.

My question was not accurate, sorry: my issue is that I need to create a Custom Form (cannot use the standard Open Form component), but I was wondering if I could do it without using the User Specific columns in addition to the ones which records the values?
(the reason being that I have 50 questions, so using User Specific would mean x2 in terms of columns).

Incidentally, I have another issue: when I create my custom form with a “link to screen” button, I always have the value of the current row (which is not the case in your application).
Do you have any clue on this?

Many thanks in advance for your help

1 Like

I’ve never done that, so I’m not really sure. You might have to try it and see. I guess my concern is there might be a danger of over writing existing values.

Link to Screen → This Item should always keep you on the current row. Are you saying that doesn’t happen in my sample app? I’d be skeptical of that.

1 Like

Hi, it works very well in your app; I tried to replicate it without User Specific but I don’t see how it’s possible.

  • Test a: Button “Link to screen / this item”: opens screen with row 1 entries populated

  • Test b: Button “Action > Add row > Link to screen”: it does create an empty row, but still opens a screen with row 1 entries populated; here I thought that it would have opened the newly created row…

image

1 Like

If I understand it correctly…or at least how I do it…is that I have a custom action that clears the USC columns prior to the Link To Screen action, and/or I clear the USC columns in a custom action after first Adding the Row. You shouldn’t be adding a row prior to the Link to Screen action. Really, in most cases, you will be editing the same (most likely the first) row every time you use and submit the form.

One suggestion I have is to create your 50 USC columns, but in a separate table with only one row. It will just be a work table to temporarily hold data while filling out the form. That way you can keep it separate from your form response table. Display your tab or screen using that new work table, fill out the form, and have it submit to you existing form response table.

2 Likes

Thank you @Jeff_Hager, I will follow your suggestions.

(truth is that I have much more than 50 columns, because at least 15 of them require multiselect… cf. your post on this topic, and the app that you built, that I am “dissecting”)

2 Likes

Yep, this is what I usually do. Although sometimes I’ll leave the user specific columns intact, and use them to build a CSS table to present the row that’s just been created, and give the user an opportunity to review and/or edit it. So I’ll show the user the table, plus a button bar with “Edit” and “Go Back” options. If they choose Edit, then they get an edit form pre-populated with the User Specific values, and if they choose “Go Back”, only then I’ll clear the User Specific columns.

Yes, I do this a lot. :+1:

5 Likes

Using this method, if I am pointing to a Glide Table that is new, I do not have access to the global User data…How to make it accessible? For example, I want to do column for Name, Photo and so on…

Thanks

1 Like

Are you wanting to:

  • Add a new row to your User Profiles table,
  • Update an existing row in your User Profiles table, or
  • Reference columns in your User Profiles table?
1 Like

You can see here the differences. I setup two buttons pointing to the same Glide Table,

  1. one to show form when clicked
  2. one to show new screen when clicked

you can see that 1. will allow me access to User’s Information and 2. does not. What I want is ability to access User’s Information in 2.


“Button Show Form”


“Show Form can access User’s Data”


“Button Show New Screen”


Cannot find User’s data

1 Like

You didn’t answer my question :slight_smile:

1 Like

Oh yes. Reference columns in User Profiles table

1 Like

Okay. So it depends on whether or not you’re using row owners. If you are, just add a component and you’ll find that you can use columns from your User Profiles as the source. Row owners will ensure that you’re selecting from the row that belongs to the currently signed in user.

If you’re not using row owners, then it’s a little trickier. Essentially you’d need to create a single relation between the current table and your User Profiles table (using a template containing the current users ID or email address), and then import whatever columns you need using lookups via that relation.

This might be a case where a custom form isn’t a good choice - I can’t say for sure.

2 Likes