- Docs
- Integrations
- Google Sheets Integration
Google Sheets is the most popular destination for form data. BttrForm's native integration sends every submission to a Google Sheet in real time, mapping form fields to spreadsheet columns automatically. No manual exports, no scheduled syncs, no copy-pasting. Your data arrives the moment it is submitted, ready for analysis, sharing, and reporting.
Connecting Google Sheets
Step 1: Open the Integrations Tab
In the BttrForm dashboard, open the form you want to connect. Navigate to the "Integrations" tab and click "Google Sheets" from the list of available integrations.
Step 2: Authorize Google
Click "Connect Google Account". A Google authorization window opens, requesting permission to create and edit spreadsheets on your behalf. Select your Google account and click "Allow".
Scoped Permissions
BttrForm only requests access to spreadsheets it creates or that you explicitly select. It cannot read your other Google Sheets, Drive files, or any other Google data. You can revoke access at any time from your Google account's security settings.
Step 3: Choose a Spreadsheet
You have two options:
- Create new spreadsheet β BttrForm creates a fresh Google Sheet in your Drive, named after your form. Columns are automatically set up based on your form fields.
- Use existing spreadsheet β Select a spreadsheet from your Drive. BttrForm will display the available worksheets for you to choose from.
Step 4: Map Columns
If you selected an existing spreadsheet, you need to map your form fields to the spreadsheet columns. BttrForm shows a mapping interface with:
- Left column β your form field names
- Right column β dropdown of spreadsheet column headers
For new spreadsheets, columns are automatically created and mapped. The first row becomes the header row, and subsequent submissions fill in rows below.
Pro Tip
Add a "Timestamp" and "Submission ID" column to your spreadsheet. BttrForm includes these as mappable fields, and they are invaluable for sorting submissions chronologically and cross-referencing with the BttrForm dashboard.
Step 5: Test and Activate
Click "Send Test Row" to push a sample submission into the spreadsheet. Open the sheet and verify the data appears in the correct columns. Once confirmed, click "Save & Activate" to start the real-time sync.
Auto-Sync Behavior
Once activated, the integration operates as follows:
- New submissions β each submission creates a new row in the spreadsheet, appended at the bottom
- Order β rows are added in the order submissions are received
- Near real-time β submissions typically appear in the sheet within 2 to 5 seconds
- Retries β if Google's API is temporarily unavailable, BttrForm retries delivery up to 5 times with exponential backoff
What Gets Synced
| Data | Included | Notes |
|---|---|---|
| All mapped fields | Yes | Text, numbers, dates, selections |
| File uploads | URL only | A link to the uploaded file, not the file itself |
| Submission ID | Optional | Enable in column mapping |
| Timestamp | Optional | ISO 8601 format by default |
| Hidden/conditional fields | Configurable | Toggle in integration settings |
| Partial submissions | No | Only completed submissions are synced |
Spreadsheet Row Limits
Google Sheets supports a maximum of 10 million cells per spreadsheet. For a typical form with 15 columns, this allows roughly 666,000 rows. If you expect very high volume, consider archiving older data periodically or using the Webhooks integration for a more scalable solution.
Column Mapping in Detail
Automatic Mapping
When BttrForm creates a new spreadsheet, it maps fields using these column headers:
- Short text / Email / URL β the field label becomes the column header
- Multiple choice / Dropdown β the selected option's label is written as text
- Checkboxes β selected options are joined with commas (e.g., "Red, Blue, Green")
- Ratings / Numbers β numeric value
- Date / Time β formatted as ISO 8601 string, parseable by Google Sheets date functions
- File uploads β URL to the hosted file
Updating Mappings
If you add new fields to your form after setting up the integration, they are not automatically added to the spreadsheet. To include them:
- Open the form's Integrations tab
- Click "Edit" on the Google Sheets integration
- The new fields appear as unmapped entries
- Map them to new or existing columns
- Click "Save"
New columns will only be populated for submissions received after the mapping update. Older rows will have empty cells for the new columns.
Working with Form Data in Sheets
Once your data is flowing into Google Sheets, you can leverage the full power of spreadsheet functions for analysis.
Useful Formulas
// Count total submissions
=COUNTA(A2:A)
// Average rating
=AVERAGE(E2:E)
// Count submissions from a specific country
=COUNTIF(D2:D, "United States")
// Most recent submission timestamp
=MAX(B2:B)
// Percentage of respondents who selected "Yes"
=COUNTIF(F2:F, "Yes") / COUNTA(F2:F) * 100
Creating Charts and Dashboards
Select your data range and insert a chart directly in Google Sheets. Common visualizations for form data include:
- Pie chart β distribution of multiple-choice answers
- Bar chart β comparison of ratings or categorical responses
- Line chart β submission volume over time (requires a date column)
- Pivot table β cross-tabulate two fields (e.g., satisfaction rating by department)
Pro Tip
Create a separate "Dashboard" worksheet in the same spreadsheet that pulls data from the raw response sheet using formulas. This keeps your raw data clean while giving you a polished reporting view that updates automatically.
Sharing and Collaboration
Google Sheets makes it easy to share form data with your team:
- Share the sheet β grant view or edit access to specific people or your entire organization
- Publish to web β create a read-only published version for stakeholders
- Set up email alerts β use Google Sheets' built-in notification rules to email collaborators when new rows are added
Handling Multiple Forms
Each form has its own Google Sheets integration configured independently. You can:
- Separate spreadsheets β one spreadsheet per form for clean separation
- Shared spreadsheet, separate worksheets β send multiple forms to the same spreadsheet but different tabs. Select the target worksheet during column mapping.
- Shared spreadsheet, shared worksheet β if forms have identical fields, you can point them to the same sheet and worksheet. Add a "Form Name" column (auto-populated by BttrForm) to distinguish the source.
Disconnecting and Reconnecting
Pausing the Sync
To temporarily stop sending data to Google Sheets without removing the configuration, toggle the integration to "Paused" in the Integrations tab. Submissions received while paused are not queued β they are simply not sent to the sheet.
Disconnecting Entirely
Click "Disconnect" to remove the Google Sheets integration. This does not delete any data already in the spreadsheet. You can reconnect at any time and point to the same or a different spreadsheet.
Reconnecting After Token Expiry
Google OAuth tokens can expire if you change your Google password, revoke access, or after extended periods of inactivity. If the token expires, BttrForm shows a warning on the Integrations tab. Click "Reconnect" to re-authorize without losing your column mapping configuration.
Data Already in BttrForm
Google Sheets is a secondary destination. All submissions are always stored in BttrForm regardless of whether the Sheets integration is active. If you disconnect or lose sync, you can always export historical data from BttrForm as CSV and import it into a spreadsheet manually.
Troubleshooting
Rows not appearing: Check the integration status in the Integrations tab. A red indicator means the Google auth token has expired β click "Reconnect." Also verify you are looking at the correct worksheet tab.
Data in wrong columns: Open the column mapping and verify each form field is mapped to the intended column. If columns were reordered in Google Sheets, the mapping still uses column headers, not positions β ensure headers were not renamed.
Duplicate rows: This can occur if a retry was triggered during a transient Google API error. BttrForm includes the submission ID in each row β use Google Sheets' "Remove Duplicates" feature (Data > Data cleanup > Remove duplicates) filtering on the submission ID column.
Formulas breaking: If your formulas reference a fixed range (e.g., A2:A100), they will stop working once you exceed row 100. Use open-ended ranges (e.g., A2:A) to automatically include new rows.
Was this helpful?