How to Coda a form?

How to Coda a form?

Turn tables into (multiple) forms — use forms outside Coda

Christiaan Huizer
Nerd For Tech
Published in
7 min readJul 19, 2021

--

I enjoyed the early versions of Typeform.com and was greatly impressed by the ease of use, the flexibility, reporting tools and email follow-up. Many years later in 2020 I came across Paperform.co, an — in my eyes — even better way to collect and process data. My clients loved what they saw and took for granted that the data floated gently from a form into Coda tables.

As you understand when it comes to technology, you need to do something to make it work. In this context I used Zapier as a bridge between Paperform.co and Coda. Long story short, clients loved it, I liked it and was mainly happy with the result. I wrote a blogpost on how to keep data aligned using Paperform.co and Coda (and Zapier) and as you read I had to play a bit around to show the data correctly and to protect its integrity.

In December 2020 Coda launched another view of tables: Coda Forms and an early update on pre-filled forms arrived already in January 2021. I followed a bit of the (mainly enthusiastic) reactions in the community, but did not feel like I wanted to use these Coda forms for my clients. This changed late Spring 2021 when one of my clients explicitly asked for the integration of a Coda form. He knew Zapier and various form builders, but did not want the hassle that comes along with building and maintaining the bridge. I grumbled a little, but did as asked for and what follows are some learning I picked up while perfecting the set-up.

Spoiler: I like the Coda forms a lot!

5 main advantages

Paid form builders contain various tools not yet available in the Coda Forms. Think of an input based follow-up inside the form (branching), custom URLs, custom fonts and colors to improve the look & feel of the form and many, many more smaller and larger extras. Though these advantages are relevant in many cases, there is one advantage the form builders do not have yet ‘in house’. The integration with a table or a database to manipulate the data intelligently.

This advantage can not be underestimated as you will see later on.

01 — Selection of products

Some products could not (yet) be sold online and thus we could not show them in the form as an option (using a radio button). The solution was to filter out the items we got in via a LookUp.

We solved this in two steps. In table DB Products we added a column with two options: Online — Offline. In the table underlying the Form (which is like Cards and Graphs) a data view) we used the custom filter as you can see in the image.

02 — getting the date and time of a new order

Some people in the community asked for help to capture the date and time an entry in a form living outside Coda (thus embedded) is created. The functions Modified() and Now() are not working. Instead you need Created()

I agree that the documentation is not clear since Modified shows: ‘Get the modified date/time for a row or other object’.

03 — email after submission

When a form is filled out, a new row is generated in the underlying table. Via an automation we can trigger — based on new row — an action. Once the Gmail pack is integrated, you can send a Coda page that contains shared data such as the first name, the address etc. This set-up does not require any extra. I wrote about this this blog: How to Coda with Gmail

Alternatively you can use Zapier and for example a professional email platform like Mailjet and use ‘new row event’ as trigger in Zapier to fill out a nice template and send it in a professional way via the email of your choosing to enjoy afterwards benefits like reporting.

04 — Multiple languages on top of one table

Once your audience uses various languages you might want to ask them their details in their language. Coda provides an elegant solution by letting you name the Form view and generate view variations. Below how to access this genius gem.

As you see, you go to Form display, next you open Layout and you start entering a name. Note that once you create a name, you cannot edit it any more and while you do it, you do not see the names already used. This explains why the first in the list (is actually the last added version) is slightly different from the NL & ENG variations. It is a bit inconvenient, but not a deal breaker.

Once you give a new name to the version, you can start editing the lay-out. Not only can you change the appearance of the questions (order, position) and show or hide questions, you can also change the name of the question. The form you create under this name will contain the logic as you put in place.

Below the trick to make your forms multilingual.

The first element you see is the name of the column in the underlying table. The line below is ‘Add a question or prompt’ and below that ‘Add description’

Here you define your question and sometimes you add some extra info to help the user to understand your intention better. The result is in our case a series of forms that mainly differ in terms of language.

Changing the appearance of a question does not change for example the content of a drop down menu. To solve this matter I created drop down menus for each language and showed the right one, while hiding the others. In the underlying table I have column that bring the values of all these columns together via List() and this column is finally populated with only one item. Since you cannot make (yet) notes on column level, the name of your columns really matters to keep oversight.

These two methods help you serve your various client groups in their respective language without the need to create an additional table. Isn’t this wonderful?

05 — prepopulated forms

Prepopulated means that when you enter text into a form online, a text box, or field, that is “prepopulated” has its information entered by the system.

The system in our context is a Coda table. The information arrives via the URL. Below a table with a few fields (columns) to show the main principles.

You see Firstname, Lastname and Location as main columns and they are added to the Form URL that gets a “?” at the end. The next thing is a bit special, but it is the way it works. You type the name of the column and you add “=”. The result is something like “Firstname=” After this you add the name of the column and that for every column.

Columns are separated by the “&” symbol and to handle that efficiently I created a column with the easy to use name ‘AND’. It improves the readability of the complete function certainly when you have many columns to match. Each column gets the EncodeForUrl() function to deal with white spaces and special characters. The complete string is turned into an URL via Hyperlink() . This URL thus contains all the data someone left previously and when the user enters a later version of this data, a new row is created in Coda. Anyone who receives this URL can thus see the information shared.

I plan to write a specific blog on how to deal with data that gets updated after a form is again filled out by the same user. Since the data floats directly into our tables, it is all rather straightforward.

Some practical points. I mentioned the usage of the column ‘AND’ already, second the column names have no white spaces or special characters like é or ç to avoid difficulties, I use capitals to see different word parts like in FirstName. Users can add multiple images, but Coda cannot give back images and files. This is an omission I guess all form builders share for the moment.

Conclusion

Though the current Coda forms leave still room for improvement, certainly compared to products that focus uniquely on forms, the actual opportunities due to the direct integration with the Coda doc are enormous. You likely will be okay with the fact that essentials like branching are not (yet) possible.

I hope you enjoyed this article. If you have questions feel free to reach out. Though this article is for free, my work (including advice) won’t be, but there is always room for a chat to see what can be done. Besides you find my (for free) contributions to the Coda Community and on Twitter

My name is Christiaan Huizer and I am the owner of Huizer Automation. A company specialized in serving SME in harvesting data and keeping it aligned. I mainly rely on Coda, Mailjet, Zapier & Paperform to get the job done.

Huizer Automation — Coda Expert on how to Coda Forms

--

--

Christiaan Huizer
Nerd For Tech

I write about how to Coda . You find blogs for beginners and experienced makers. I publish about 1 / week. Welcome!