Critical Issues with Google Sheets Integration – Form Submission Fails Silently or Produces Inconsistent Errors

Hello Retool Support,

We’re encountering persistent problems while integrating a Retool form with Google Sheets using the official connector. Over the course of two full days of work, we’ve run into a set of issues that make the integration effectively unusable in a production-grade environment.

1. What we tried to do

We created a simple form (formularz_dodaj_pojazd) to submit vehicle data into a Google Sheet with 6 columns:

  • Vehicle Name

  • Registration Number

  • Type

  • Status

  • Ownership

  • User

We followed the documented steps: authenticated via OAuth 2.0, created a query with "Append data to sheet" action, selected the correct spreadsheet and sheet name, and bound the form inputs via {{ formularz_dodaj_pojazd.data.* }}.

2. Symptoms and observed issues

Despite following best practices, we observed erratic behavior including:

  • Query appears to run successfully (200 OK) but the sheet remains unchanged.

  • "Unable to parse range" errors when the sheet name is correct and the range (e.g., Sheet1!A:F) exists.

  • Silent failure when form is submitted: fields are reset, no error is shown, but no data is written.

  • Google Sheet columns are present and correctly named, yet Retool reports errors like:

column "0" not found. Expected column name to be one of: "Vehicle Name", "Registration Number", ...

  • Even after recreating the sheet from scratch, with headers typed manually and format cleared, the issue persisted.

We tried multiple permutations: renaming sheets, clearing formatting, removing hidden characters, reauthenticating via OAuth, switching accounts, changing ranges — none helped.

3. What we confirmed

We are confident that the source of the problem is not user error, because:

  • The same payload works via the Google Sheets API using Postman (after overcoming OAuth and spreadsheet access hurdles).

  • The spreadsheet ID and sheet name used in the query are correct, and the sheet is manually verified to contain valid column headers.

  • When trying the same logic with Retool Database (internal PostgreSQL), the form works instantly — data is inserted correctly using the same input binding structure.

These points lead us to believe the issue lies in one (or more) of the following:

  • How Retool internally parses sheet structure via the connector.

  • How it interprets column headers when appending data.

  • Caching or stale references to old sheet schemas even after changes or full reauthentication.

4. What we need from you

We are requesting your support team to help us identify the root cause or confirm whether this behavior is a known limitation of the Google Sheets connector.

Specifically, we would like you to:

  • Verify if the “column '0' not found” error is caused by internal caching or formatting that escapes detection in the UI.

  • Clarify how exactly Retool determines and validates column headers in Google Sheets.

  • Confirm if manual formatting (e.g., bold headers, merged cells, hidden rows) affects the connector’s ability to parse headers.

  • Let us know whether the connector supports data submission to freshly created sheets or only sheets that existed at the time of resource authorization.

If needed, we can provide a video, reproducible example app, or access to a sample sheet showing the error.

5. Why this matters

This integration is a critical component of a humanitarian operations system deployed in low-connectivity field environments. We cannot rely on unstable behavior, silent failures, or hidden assumptions about data sources. While we have temporarily migrated to Retool Database as a fallback, we would prefer to maintain Google Sheets compatibility due to ecosystem alignment.

We appreciate your time and support. Please let us know how best to proceed.

Best regards,

Hubert

Contact Retool support

Hi @Hubert_Cebelinski

Thanks for reaching out! I'm glad to hear you have a temporary workaround in place. Happy to look into this with you.

Was the Google Sheets integration working for this sheet previously?

Since you mentioned this is critical, another workaround is to connect to the sheets api via the generic Rest Api connector instead of the sheets integration while we look into this.

The Google Sheets integration should be relatively dynamic. You may need to refresh the page, but it should work with newly created sheets (rather than only sheets that existed at the time of resource authorization). I have not been able to reproduce any issues with hidden columns, bold headers, or merged cells.

The append action is working for me so far in my testing :thinking::

Can you share or Dm me a copy of the spreadsheet and a screenshot of the query? Please note, typically you wouldn't need an asterisk here: {{ formularz_dodaj_pojazd.data.* }}. It should just be {{formName.data}}, as long as your form data keys exactly match the column names in the spreadsheet.