Setup
- Go to Integrations in your osforms dashboard
- Click Connect next to Google Sheets
- Click Sign in with Google and authorize access
- Paste your Google Sheet URL or Sheet ID
- Optionally enter a sheet tab name (defaults to the first tab)
- Click Save
How columns work
osforms reads the header row of your sheet and maps submission fields to matching columns. If a field key doesn’t match an existing column, it’s automatically appended to the header row on the next submission.
Two system columns are always appended if not already present:
| Column | Value |
|---|
Submission ID | MongoDB ObjectId of the submission |
Submitted At | ISO 8601 timestamp |
Field key mapping
Column headers match the field ID from your form schema (e.g. full_name, email, message). Set field IDs intentionally in the form builder — they become the column names in your sheet.
Example: A field with id: "company_name" maps to a column titled company_name.
Setting up the sheet
You don’t need to pre-create columns. Submit once and osforms will create all the columns for you. After the first submission your sheet will look like:
| name | email | message | Submission ID | Submitted At |
|---|
| Jane Smith | jane@example.com | Hello! | 64f1a… | 2026-03-27T12:00:00.000Z |
You can then rename columns — as long as the header text still matches the field ID, mapping continues to work.
Permissions
The Google account you connect must have Editor access to the spreadsheet. Service accounts are not supported — connect a personal or workspace Google account.
Failure handling
If the Sheets API call fails (e.g. revoked OAuth token, sheet deleted), the integration is marked as failed and you’ll receive an in-app notification and email alert.
To reconnect, go to Integrations and click Reconnect Google Account.
Google Sheets API calls count against your Google account’s free quota (500
requests/100 seconds). This is rarely a concern for standard form volumes.