Smartsheet
Sync data to Smartsheet sheets. Use Zeotap to push model results, audience lists, or enriched customer data into Smartsheet for project management, collaboration, and operational workflows.
Prerequisites
- A Smartsheet account (Free, Pro, Business, or Enterprise plan)
- A Smartsheet API access token
- A sheet to write data to with columns pre-configured
Permissions
Your API access token inherits the permissions of the user who generated it. The token must have at least Editor access to the target sheet. For schema introspection and row creation/updates, no additional scopes are required — Smartsheet tokens provide full API access for the generating user.
Authentication
Smartsheet uses an API Access Token for authentication.
- Log in to your Smartsheet account
- Click your Account icon (bottom-left) and select Personal Settings
- Select API Access
- Click Generate new access token
- Give the token a descriptive name (e.g., “Zeotap Sync”)
- Copy the generated token immediately — it will not be shown again
- In Zeotap, paste the token into the Access Token field
Configuration
Smartsheet does not require additional configuration fields beyond authentication.
Target Settings
| Field | Type | Required | Description |
|---|---|---|---|
| Sheet ID | Text | Yes | The numeric Smartsheet sheet ID. Found in Sheet > Properties or in the sheet URL. Example: 4583173393803140. |
Supported Operations
Sync Modes
| Mode | Supported | Description |
|---|---|---|
| Insert | Yes | Creates new rows at the bottom of the sheet |
| Update | Yes | Updates existing rows matched by primary key column |
| Upsert | Yes | Creates new rows or updates existing ones matched by primary key column |
| Mirror | No | Not supported — Smartsheet row deletion API is not batch-friendly for full-table replacement |
Audience Sync Modes
Smartsheet does not have a native list or audience membership concept, so audience sync modes are not supported.
Features
- Field Mapping: Yes — map source columns to Smartsheet column names
- Schema Introspection: Yes — Zeotap reads the sheet’s column definitions via the Smartsheet columns API
Required Mapping Fields
Smartsheet does not require specific mapping fields. However, for upsert and update sync modes, you must configure a primary key field that matches a column in your Smartsheet sheet containing unique values.
Default Destination Fields
| Field | Type | Description |
|---|---|---|
| Name | string | Record name |
| string | Email address | |
| Status | string | Status value |
| Notes | string | Free-text notes |
These are suggested defaults. Your actual Smartsheet columns may differ — Zeotap discovers them automatically via schema introspection.
How It Works
Zeotap writes data to the specified Smartsheet sheet via the Smartsheet REST API v2.0:
- Insert mode: Rows are created using
POST /sheets/{sheetId}/rowswith up to 500 rows per request. New rows are appended to the bottom of the sheet. - Upsert mode: Zeotap first fetches existing rows to match on the primary key column. Matched rows are updated via
PUT /sheets/{sheetId}/rows, and unmatched rows are inserted via POST. - Update mode: Same as upsert, but unmatched rows are skipped rather than inserted.
Column Mapping
During writer initialization, Zeotap fetches the sheet’s column definitions from the Smartsheet API. Source field names are matched to sheet column titles. Cells are sent with the column’s numeric ID, ensuring correct placement even if columns are reordered.
Batching
Smartsheet limits API requests to 500 rows per request for add and update operations. Zeotap automatically chunks larger batches into groups of 500 and sends them sequentially.
Error Handling
- Each chunk of up to 500 rows is sent as a single request. If the request fails, the entire chunk is marked as failed.
- The writer retries on transient errors (HTTP 429 rate limits and 5xx server errors) with exponential backoff.
- Detailed error information including Smartsheet error codes and reference IDs is captured per chunk and reported in the sync run results.
Rate Limits
Smartsheet enforces a rate limit of 300 requests per minute per API token. This means:
- Maximum throughput: ~2,500 rows/second when batching at 500 rows per request
- If the rate limit is exceeded, Smartsheet returns HTTP 429 with an error message. Zeotap automatically retries with backoff.
- For very large datasets, ensure you are not running multiple syncs with the same API token simultaneously.
Best Practices
- Pre-create columns: Smartsheet requires columns to exist before rows can be added. Create all target columns in your sheet before configuring the sync.
- Use unique columns for upsert: When using upsert mode, ensure the primary key column contains unique values. Smartsheet does not enforce uniqueness natively, so duplicate values may cause unexpected matches.
- Mind the cell limit: A Smartsheet sheet cannot exceed 500,000 total cells. For a sheet with 25 columns, this means a maximum of 20,000 rows. Plan your data volume accordingly.
- Use Sheet IDs for stability: Sheet names can change, but IDs are permanent. Always use the numeric sheet ID in your target settings.
- Monitor token usage: If you have multiple integrations using the same API token, coordinate to avoid hitting the 300 requests/minute rate limit.
Troubleshooting
Authentication failed: invalid access token
Verify that your API access token is correct and has not been revoked. Generate a new token from Account > Personal Settings > API Access in Smartsheet.
Sheet not found (HTTP 404)
Double-check the Sheet ID in your target settings. The Sheet ID is a long numeric value (e.g., 4583173393803140). You can find it in the sheet’s Properties dialog or in the URL when viewing the sheet.
Access denied (HTTP 403)
Your API token inherits your user permissions. Ensure you have at least Editor access to the target sheet. If the sheet is in another workspace, ask the owner to share it with your account.
Rate limited (HTTP 429)
Smartsheet enforces 300 requests per minute per token. Zeotap retries automatically with backoff. Avoid running multiple syncs or integrations with the same token simultaneously.
Column not found / Unknown column skipped
If you see warnings about unknown columns, verify that the column names in your field mapping exactly match the column titles in Smartsheet. Column matching is case-sensitive.
Cell limit exceeded
Smartsheet sheets have a maximum of 500,000 cells. If your sync would exceed this limit, rows may fail to create. Reduce the number of columns mapped or split data across multiple sheets.
Upsert not matching existing rows
Ensure the primary key field name in your sync configuration exactly matches a column title in the Smartsheet sheet (case-sensitive). The column must contain unique values for matching to work correctly. Smartsheet does not enforce uniqueness, so verify your data has no duplicates in the key column.