Syncing Tally Form Responses with Glide Without Glide Premium

Dear Glide Community,

I hope you’re doing well.

I’m currently building an educational app using Glide that recommends books based on the user’s English level. Since Glide doesn’t support native quiz logic easily, I created the test using Tally (30 questions, 3 levels). My goal is to sync user responses from the Tally form (stored in Google Sheets) into Glide, so I can use their score to recommend a suitable book.

The issue I’m facing is that Glide doesn’t automatically sync the new Tally response data into the app unless I have a Premium subscription. Is there any way to make this sync happen without upgrading to Glide Premium?

I’ve already tried manual refresh and some automation tools, but I want to know if there’s a workaround or method that allows new form responses to appear in my Glide Data without paying for Premium.

Any guidance or suggestions would be highly appreciated!

Best regards,
Mariam

Yes, you can fetch data from a Google Sheet almost instantly using a JavaScript column, or you can recreate the logic from the Google Sheet and apply it directly in the Glide table.

can JAVAscript Get the score from Tally into Glide ? because the test is taken inside Tally , once the test is done , the user goes back to glide , i want the perfect book recommendation to show in that screen based on the user score .
i would be so grateful if you could explain to me how i could make this idea work

Can you explain what you mean by “the test is taken inside Tally”? And how are you retrieving that score?

Hi @Mariam_Benaim :slight_smile:

If you are on a Free plan, your best option might be to create the quiz in Glide :sweat_smile:
You won’t have any sync. issue then.

What kind of questions are you using in your Tally form (short answer, long answer, checkboxes…)? How do you define the score (it is something like +1 for a good answer for instance)?

1 Like

Thank you so much for your reply.
Yes, I’m currently using the free plan. In Tally, my quiz has 30 multiple choice questions—each question has 4 options, and only one is correct. The score is calculated by giving +1 for each correct answer, so the total score is out of 30.
My challenge is: I want to calculate the score based on the user’s answers and sync that score to my Glide table so I can suggest a book based on their level.

Do you think I could achieve this using JavaScript or any workaround, even on the free plan?

Thanks again for your time and help!

By “the test is taken inside Tally,” I mean that I built a quiz using Tally Forms. Users open the Tally form from my Glide app, answer the questions there (multiple choice), and submit their answers.

Tally then saves the responses to a connected Google Sheet. I calculate the score in that sheet based on correct answers (+1 for each). What I’m struggling with is how to make that score appear in Glide, so I can show users their result and recommend a book based on it.

I’m currently using the free plan on Glide, so I can’t use the API or premium integrations.
Any advice on how I can sync the score from the Google Sheet into Glide in real time?
Thanks again!

You can create your own API connection using a JavaScript column on any plan, including the free plan. However, as both Marim and I mentioned, you can also replicate that quiz directly inside Glide and have a full control of the whole process.
Is there any specific reason you need to use Tally Forms?

To help you understand how to build this kind of quiz in Glide, here’s a quick tutorial. :backhand_index_pointing_down:


In Data:

  1. Create a Questions table:

    • Row ID (Row ID), not mandatory, but it doesn’t cost much.
    • Question number (Number). To keep it simple, I simply write 1 in the first row, 2 in the second one etc. You’ll have 30 rows in your case (one for each question).
    • Question (Text or Rich Text if you want to add some style, like bold or italic using Markdown). Well, to store the… questions :smiley:
    • Answers (Text). It’s a comma-separated list of the available answers. Again, to simplify, you must write answers in the order you want them to be displayed in the layout. There are options to make it randomly, I’m just showcasing a quick approach.
    • Answers (array) (Split Text), with Answers as Text and Split by ‘,’. We do that to make sure the pivot step you’ll do later is easy.
    • Correct answer (Text), this is where you’ll store the… correct answer.

  1. Add some columns in the Users table:

    • Question index (Number). It will help us knowing the actual question number. It will be incremented each time the user will validate his/her answer.
    • Related question (Relation). With the configuration Relation to items…Question index and Matches the values in:Questions > Question number.
    • Question (Lookup). Based on Related Question > Question to bring back the question n°1 or 2 or 3… depending on the actual question number.
    • Answer (Lookup). Idem for Related Question > Answer (array)
    • Correct answer (Lookup). Idem for Related Question > Correct answer
    • User answer (Text). To store the User answer and compare it the the correct answer, in order to calculate…:
    • Score (Number). This is where you’ll aggregate the score through the quiz.

  1. Lastly (for Data part), create a Helper for answers table:

    • Active user (Query). To make sure the quiz is related to the log-in user, we create a query we’ll use to reach values from the User profile row.

    • Answers (Lookup). Same as previously, we’ll select the relation column to be Active user > Answers

    • Slice Start (Number) and…

    • Slice End (Number). These two columns are just helpers, and I’ve written manualy 0, 1, 2… in Start and 1, 2, 3 in End. Be careful to start at 0 for Start and 1 for End. It’s just to make things simpler with the next column, which is:

    • Answer (Slice Array). To get the 1st, 2nd, 3rd value and so on, based on the artifical row index we just created.

    • Answer (text) (Single Value). A helpful way to convert the previous column in text (it’s technicaly an array of one value in Anwser, and it’s not possible to use an array in a form)


In Layout:

  1. Create a new screen using Users as Source
  2. Add the following components:
    • Button. We’ll use it to Lauch the quiz.
    • Choice. To provide a selector to users
    • Button. To Validate the answer
    • Text. Useful to display the score at the end
    • Button. In order to trigger what will happen at the end (show the recomended book for instance)

And here are the configurations of these components:

  1. The first Button action is Set column values configured like this:

    Also add a Visibility condition, available in Options to display the button only at the beginning of the quiz:

  2. The Choice component visibility is the following (note that you’ll have to choose 31 if you have 30 questions instead of 3… I only have 2 questions here):

    And it’s configuration:

  3. The second Button has the same visilibty conditions as the Choice component (they are also displayer together, you might want to use a Container to apply visilibty once…).
    And the related action is a Workflow:


    The first branch will be followed if the user’s answer matches the expected answer and add 1 to Score. In both cases, we also increment the Question index by 1.

  4. Text component will only be visible when Question index is over the number of questions (3 in my case, 31 in yours):


    For the configuration, it’s getting the Score value to create a friendly message to display, something like:

  5. Last Button has the same visibility parameters as the Text component. Here I’ve choosen to reset the quiz by using an action to Set column values back to their initial state, but it’s now the time for you to define the next steps (is it possible to take the quiz again? It is available after some time? something else?). For the purpose of this tutorial, here is my configuration:


If we have both done our jobs correctly (you by following the steps and me for not having forgotten anything :stuck_out_tongue: ), you can now play with an amazing form, all build in Glide, with a Score and User data available for you to provide the best book recommandation :wink:


Result
Quiz in Glide


Hopefully, it’ll be useful! :slight_smile:

5 Likes

May I know what program you used for the screen recording? Great tutorial.

hi again , I wanted to thank you so much for your help — I followed your advice, and I was finally able to build the test directly inside Glide. Everything is working great now!

I’m currently working on the final step: showing book recommendations after the test.
The idea is that after the user finishes the quiz, they click a “See Recommendation” button, and based on their score or level, the app shows a book cover and title that match.
I’m just unsure how to:

  • Automatically assign a level based on the user’s score
  • Display the recommended book with its image

Do you have any suggestions for how I could do that inside Glide?
Thanks again for everything — your help has made a huge difference

Sure @Eric_Penn: it’s ShareX, a free and open source screen capture tool.
Available for Windows at https://getsharex.com/

And I just add I do not have any commercial interest in it :smiley:

1 Like

Well done @Mariam_Benaim :partying_face:

Two differents topics, so we’ll start with the most obvious one to me.

:one: Displaying the recommended book
At the end of the quiz, the User profile row will contain a value in Score column which we’ll use to determine the most suitable book. While you could use a Relation column to associate each specific score with a book it’ s more common to recommended a book based on a score range, such as:

  • 0 to 5 → book A
  • 6 to 10 → book B
  • 11 and above → book C

Let’s start by adding a new Books table to store data about… books.
Add some columns:

  • Row ID (Row ID), often a good practice to use unique identifiers
  • Book title (Text)
  • Book author (Text)
  • Book cover (Image). It will let you upload them from your computer or an URL (I used Wikipedia here)
  • Min score (Number). This will be the minimum Score value to obtain to have this book listed. It will works in combination with:
  • Max score (Number). To define the upper band of our range

In my scenario, I’ve added 3 books, and some ranges are overlaping each others: if your score is 1, books available will be Harry Potter and The Lord of the Rings.
That’s just for demonstration purpose, to showcase you the possibility to make multiple recommandations if you prefer.


Now you just need to create a link between the score from Users table and this list of books. In the Users table, let’s add:

  • Book recommandations (Query). The Source will be Books and you want to apply conditions based on the Score so we add Filter by → Min score is less or equal to User profile > Score And Max score is greater or equal to User profile > Score.


Now, in the Layout, we’ll add a new Collection component.
I’ve choosen Card because I think it’s relevant in this use case. Feel free to try other styles (List or Table probably) or other ways to customize your collection. Mine looks like this:

Note the Source is User profile > Book recommandations. If you have only 1 book (because the range Min → Max contains only 1 book), it works. With more than 1, it’s fine too and it’s not more complicated if you want to explore this path :wink:

To finish the job, I remove the Search bar and disabled Actions. However, it’s up to you to define what will happen if the User click on the book. You could imagine so many things here (a new screen with more information about the book such as a summary, the count of pages; a link to buy the book on your favorite platform; a link to download the book from Wikibooks or somewhere else…).


You have one final step: changing the behaviour of the Show me the recommended book Button.. For now, it’s launching the quiz again and reseting values of the User profile.
One easy option is to change the Set column values action to Increment number of the Question index column.

Of course, we need to add a Visibility condition to our Collection, in order to display it when the Question index is 4 (or… 32 for you). The user will go through:

  • each questions from 1 to 30
  • when Question index will be incremented to 31, it will display the “result screen” (with the text and the Show me… button)
  • and lastly, the recommended book(s) will be shown at index 32 :slight_smile:

At this point, the quiz is over and the User has no way to pass it again. But you now know how to add a button to reset the quiz, so I let you find out what the behaviour you want to implement (quiz is over forever or a button to reset it… or something else).

Result
Quiz


:two: Assigning a level
This one is a bit more complex, as I’m not sure how you define a “level” or what th goal is behind having this information. That said, here are a few insights:

  • you can use If → Then → Else column to assign a value (Beginner, Intermediate, Advanced…) based on a value such as Score. However, since the value updated each time the Score changes, it might not be ideal if the user can retake the quiz.
  • you can use a Set column values (as we’ve done several times now) to “copy” the final quiz score into another column. This way, the value becomes independant of the Score column and remains static.
  • as we saw in the Book recommandation section, you can also use a Relation or a Query to define levels based on conditions, instead of relying on an If → Then → Else column.

Ultimately, the technical approach depends on the logic you want to implement.
Some advanced users have been built full gamification systems with ranking and complex logic. Here’s an example from Robert Petitto, if you’re interested: https://www.youtube.com/watch?v=GqfOJdS52a0&list=PLiXRc87c6KKXcnnsS3ZKmyLyqiSFjuuNv


I hope it will be helpful :slight_smile:

2 Likes

I just wanted to thank you again for all the help you’ve provided with my app. it is a very important class project and I’ve been struggling with it for weeks, and honestly, I couldn’t have made it this far without your support. It’s really made a difference, and I truly appreciate it :heart:

The quiz with the score and recommendations is working perfectly now, thanks to you!

If you have a moment, I’d really appreciate some quick guidance on the last button in the recommendations page. I want it to navigate users back to where we have the first button (the one with the start the quiz). Any tips would be much appreciated!

Thanks again for your time and help :blush:

With this setup, the first button is only affected by visibility conditions, so no other page is opened when the quiz starts :thinking:

Generally speaking, here are some of the possible options.

It really depends on what happened before. For instance, if you chose to create a Custom screen with an Overlay target for the quiz, a button with the action Close overlay at the end makes sense.

Hey again! :frowning:
Thank you so much for your patience with me — I really appreciate it! I hope this will be the last issue I need to share with you. The good news is that the app is working perfectly fine with my Gmail. The issue is that when other Gmail accounts try to sign in, the app only shows two screens (Home and Genre), and the Test screen doesn’t show up.

Do you have any ideas on what might be causing this? Thanks again for your help!

What visibility conditions are you applying on those tabs?

i dont have any visibility condition in the tabs , i have it on the components but not in the tabs

Can you share screenshots of what you see compared to what others see?