Google Sheets
If your operational data lives in a spreadsheet, you don’t need to rebuild it somewhere else. The Google Sheets source syncs rows directly into a Scout table so your team can keep working in the tool they already use.
This is useful for CRM exports, content inventories, product catalogs, and any structured list a non-technical team maintains in a sheet.
Before You Start
- Create a Collection and destination table in Scout
- Make sure your sheet has a clear header row in row 1 — Scout uses those headers as field names
- Add table columns for the fields you want to keep searchable or filterable
Connect the Google Sheets Integration
- Open Integrations in Scout
- Connect Google Sheets
- Grant access to the Google account and spreadsheets you want to sync
Note: Availability can vary by workspace while this integration rolls out.
How Sync Works
When you run a sync, Scout reads the sheet top-to-bottom and treats each row as a document. Here’s what that means in practice:
- New rows in the sheet are added to the table as new documents
- Updated rows are matched by a stable identifier column and overwritten — without one, Scout creates duplicates
- Deleted rows are not automatically removed; re-run the source with a full-replacement strategy to clean those up
Pick one column as a stable identifier before you run the first sync. Something like ID, Slug or URL works well. This gives Scout a reliable way to match rows across syncs.
Create a Google Sheets Source
- Open your Collection table
- Click Sources -> Add Source
- Select Google Sheets
- Select the spreadsheet and worksheet/tab
- Map sheet columns to table columns
- Optionally set sync frequency
- Click Create
Field Mapping
Map sheet column headers to your table’s column names. Keeping those names consistent avoids remapping after schema changes.
A content inventory sheet might look like this:
| Sheet header | Table column | Notes |
|---|---|---|
Title | title | Used in search results |
Page URL | url | Links back to the source |
Summary | content | Main text for retrieval |
Last Updated | updated_at | Helps with freshness ranking |
Owner Team | team | Useful for filtering |
If your sheet has many columns, start with a small subset and expand after validating data quality. You can always edit the source config and re-run.
Run and Validate
After setup:
- Run the source manually once
- Verify rows were created in the table
- Spot-check values for type and formatting
- Run a query to confirm retrieval quality
Common Issues
Wrong or Missing Values
- Confirm the header row exists and names haven’t changed since you created the source
- Recheck column mapping in the source config
- Ensure target column types match the data shape (text vs. date vs. number)
Duplicate Documents
- Add a stable identifier column (like
idorslug) to the sheet before re-syncing - Without a stable identifier, each sync creates new documents instead of updating existing ones
Stale Data
- Review the sync strategy — full replacement removes old rows, incremental only adds or updates
- Re-run manually after major schema changes in the sheet
Permission Errors
- Reconnect the integration with the correct Google account
- Verify the connected account has at least view access to the spreadsheet
Best Practices
- Keep header names consistent — renaming a column breaks the mapping until you update the source config
- Use an explicit table schema instead of syncing every column indiscriminately
- Schedule syncs only for sheets that change frequently; run manually for one-time imports
- Add metadata columns like
team,statusorregionto make filtering useful downstream
Next Steps
- Sources: Compare all source types and sync options
- Querying Data: Search synced sheet data with semantic and hybrid search
- Creating Collections: Design schemas for reliable sheet ingestion
Built with ❤️ by Scout OS