Keep Smartsheet in step with your SQLite file, on a schedule
Write the SQL once. Query Streams runs it on your schedule, anything from every five minutes to weekly, and writes the rows into your Smartsheet sheet. Match rows by a key so edits land in place and rows that left the query are removed, or simply append. No Zapier, no scripts, no exports. About fifteen minutes the first time, and the Free plan covers it.
What you’ll end up with
A Smartsheet sheet that holds the rows your SQLite query returns and is brought up to date on a schedule, every five minutes to weekly, with a receipt of what changed on every run. Like this:
SQLite holds your data in a file. Your team works in Smartsheet. The usual bridge is a Zapier or Make scenario, or a CSV someone uploads that breaks quietly and copies one row at a time. Query Streams Automation does it differently: the Agent that already reads your SQLite file runs your saved SQL on a schedule and writes the whole result into Smartsheet in one pass, matching rows by a key so the sheet stays correct rather than growing.
What you’ll need
SQLite connected through the Agent
The Agent installed on the computer that holds your SQLite file, or on one that reads it from a network share, with the connection added in Data Agents. Not done yet? Connect SQLite first; it takes about ten minutes.
A saved query
The SELECT you want to keep in sync, saved in Query Builder. Step 1 below shows one. If you want changed rows updated in place, include a column that is unique per row, like an ID.
Your Smartsheet login
Smartsheet asks you to let Query Streams read and write sheets. An API access token works too.
Where does the work happen? On the computer that runs the Agent. It runs the query on the schedule and writes the rows to Smartsheet, so that computer needs to stay on. Your browser can be closed. Query Streams itself never stores the rows.
File on another computer? The Agent does not have to run on the computer that holds your SQLite file: it can read the file from a network share. Reaching a file on a network share, below, shows what that takes.
Set it up in six steps
-
Save the query you want to keep in sync
Open Query Builder, pick your SQLite connection (not connected yet? start here), and write the SELECT that returns exactly the rows and columns you want in Smartsheet. This one pulls a few columns from a customers table:
Example · SQLSELECT customer_id, name, city FROM customers ORDER BY name LIMIT 100;
Run it, then Save it with a name you will recognise, like “Orders for Smartsheet”. Keep a column that is unique per row in the SELECT, here customer_id. That is the key Full Sync uses to update rows in place. Edit and re-save the query later and the automation picks up the change on its next run.
-
Open Automation and choose Smartsheet
In the portal, open Automation (top menu Streams → Scheduled → Automation) and click New automation. The wizard has five short steps. On Step 1 click the Smartsheet card.
Seeing “Before You Begin” instead? The wizard only opens once an Agent is online with a connection and at least one saved query exists. The page lists which of the three is missing and links to it.
-
Connect Smartsheet
On Step 2 click Connect with Smartsheet, sign in and allow it. Smartsheet asks you to let Query Streams read and write sheets. An API access token works too. Already connected once? The page offers Use This Connection instead.
-
Choose where the rows land
On Step 3 pick the Sheet the rows should land in. Create the sheet in Smartsheet first if you want an empty one; the wizard lists existing sheets only. One automation per sheet.
-
Pick the query and decide how rows land
On Step 4 open the Saved Query list and choose the query from step 1. Query Streams runs it once to read the columns, tells you how many rows it returns, and shows two choices:
Append · fastAppend
Every run adds the query’s rows to the bottom of the sheet. Nothing is updated and nothing is deleted, so it is the quick choice for logs, events and history you want to accumulate. No key column needed. A row that comes back unchanged is not added again; a row whose values changed is added below as a new line and the old one stays.
Full Sync · mirrorsFull Sync
Rows are matched by a key column such as an order ID. New rows are added, changed rows are updated in place, and rows that no longer come back from the query are removed, including rows someone typed into the sheet by hand, so keep hand-made rows on another sheet. This is the choice for inventory, pipelines, master data and dashboards.
Smartsheet specifics. The sheet’s primary column is renamed to your key column, and a mapped column of type Date, Checkbox, Dropdown or Contact is changed to Text/Number so the values from your query fit. Columns your query does not know about are left as they are.
Full Sync is set per column, which is what makes it useful in a shared sheet:
- Key
- The column that identifies a row, for example order_id. It has to be unique in the query result; Query Streams checks that for you and refuses duplicates.
- Sync
- Overwritten from SQLite on every run. If someone edits a Sync column in Smartsheet, the next run puts the source value back.
- Preserve
- Written when the row first arrives and never compared again, so a change to it in SQLite does not trigger an update. For notes, owners and follow-up dates your team types by hand, use a column that is not in the query at all: columns that exist only in Smartsheet are never touched by a sync.
Which is faster? Append writes without reading the sheet first. Full Sync reads it, compares every row, and writes only the differences, so it takes longer but the sheet always matches the query. You can switch later from the automation’s Edit panel.
For a sheet you want to trust, click Create all columns as Sync, then click the key icon on customer_id to make it the Key. Query Streams scans the whole result to confirm the key is unique and warns you if it is not. Keep your team’s own notes in columns that are not part of the query; those are never touched. For a log that should only ever grow, click Create all columns as Preserve instead and skip the key. Click Continue.
-
Set the schedule, name it, create it
On Step 5 choose Run on a schedule and pick a Frequency:
Frequency Runs Every 5 Minutes every 5 minutes, the fastest allowed Every 15 Minutes every 15 minutes Every 30 Minutes every 30 minutes Every Hour at the top of every hour Daily at 9 AM every day at 9:00, the default Daily at 6 AM every day at 6:00 Weekdays at 9 AM Monday to Friday at 9:00 Weekly (Monday 9 AM) every Monday at 9:00 Custom Schedule your own minutes, hours, days of the week or day of the month Times follow the Timezone you pick, which starts as your browser’s. You can also choose Manual only and press Run whenever you like; a schedule can be added later from the automation’s Edit panel. Scheduled runs happen on the Agent, so they keep going while your browser is closed. If the computer running the Agent is off when a run is due, the missed run happens once, shortly after the Agent starts again.
Give it an Integration Name, such as “Orders to Smartsheet, daily”, check the Ready to Create summary and click Create Automation. Back on the Automation page, press Run once to do the first sync now rather than waiting for the schedule. Open Smartsheet: the rows are there, under your column headers.
That’s it. From now on the sheet keeps itself current. Nothing left your network except the rows the query returned, and nobody has to remember to run anything.
What you see afterwards
The Automation page lists every automation with its status, source, target, key, schedule, last sync and row count. Open one for the Executions tab: every run with its trigger (manual or scheduled), duration, and rows created, updated, deleted and unchanged. A Performance tab shows data processed and success rate over 7 to 90 days.
You are told when it stops
Every organisation has a Sync Issues alert rule from day one: an in-app notice and an email when a sync fails, and one more when it recovers. One message per incident, never one per retry. Turn it off or change the channels under Streams → Alerts & Reports.
It pauses itself when it should
If Smartsheet stops accepting the connection, or the data connector is deleted, the automation pauses and says why. Reconnect or pick a new source and press Resume. Other errors keep the schedule going and show on the row.
Key column missing
If someone renames or deletes the key column in Smartsheet, Full Sync stops before writing anything and shows Fix options: put the column back with its exact name and run again. Your other columns are never deleted by a sync.
What the plans allow
Automation is on every plan, including Free, with no limit on how many automations you create. What each plan limits is how many rows one query may return per run:
| Plan | Rows per run |
|---|---|
| Free | 125 |
| Personal Core | 500 |
| Personal Plus | 1,000 |
| Business Core | 2,500 |
| Business Plus | 5,000 |
| Business Max | 10,000 |
| Enterprise Core | 25,000 |
| Enterprise Plus | 100,000 |
| Enterprise Max | 250,000 |
If a query returns more, the run is held rather than cut short, and the automation tells you which plan fits or suggests adding a filter such as a date range. Each successful run also counts against your Data Realm allowance, the same pool your Excel and Sheets queries use. See the pricing page for the allowances.
Good next moves
- Add a filter to the query, such as the last 90 days, so the sheet stays small and fast and fits your plan’s row limit.
- Keep hand-typed notes in their own columns, outside the query, so they survive every sync.
- Group your automations from the Edit panel once you have a few; the Automation page filters by group.
Reaching a file on a network share
The Agent opens files as a background service, not as you, so a file on another computer needs one extra step. Which step depends on the computer the Agent runs on.
If the test cannot get to the share, look for these words in its result: unreachable means the Agent’s computer got no answer from the server. On Linux or a Mac, not mounted means the share still has to be mounted, and that message includes the exact mount command for your server.
SQLite file on a share? Leave Read-Only (Immutable) ticked, as it is by default; reads then take a point-in-time view of the file without locks. SQLite cannot use its WAL mode over a network, so with that box unticked a WAL-mode database on a \\server\share path is refused, and the test says it is a WAL-mode SQLite database.
Test failed on a share?
Every run reaches the file the same way the connection test does. If runs start failing after something changed on the file server, a new password for example, open the connector in Data Agents and click Test connection. The test result, and the line under the file path, name the problem:
| Message | Cause | Fix |
|---|---|---|
| SQLite database file not found: followed by a \\server\share path you know is right | No login is stored, so the Agent tried the share as its own account and could not see the file: the share turned that account away, or the server did not answer. In the first case the line under the path says Access denied for the agent’s service account. | Click Service identity under the path and store a login that can read the share. If the line under the path does not say access denied, check that the Agent’s computer can open the share at all. |
| Share \\server: access denied — add credentials for this server | A login is stored, but that account has no permission on the share, or another sign-in to the same server is in the way; the message before this line says which. | Ask whoever runs the server to give that account read access, or store an account that has it. For a sign-in in the way, see the two rows on one login per server below. |
| Share \\server: the credentials were refused — check the username and password | The server turned the stored login down: a typo, the wrong domain, or a password changed since it was saved, which also stops runs that used to work. | Click the chip under the path and type the password again; for an account made on the server itself, leave Domain blank. After a refused login the Agent waits a minute before it tries that same one again, so the account is not locked out; saving a corrected password tries straight away. |
| Share \\server: server unreachable from the agent machine | The Agent’s computer got no answer from the server: a wrong server name, the server is off, or a firewall blocks file sharing. | On the Agent’s computer, open the same \\server\share path in File Explorer. If that fails too, it is a network problem for whoever runs the network. |
| Another connector on this agent already signs in to \\server as … | Windows lets one computer sign in to a server as one account at a time, and another connector on this Agent uses a different login for that server. | Store the same login the other connector uses, or change it on every connector that reads that server. |
| Windows already holds a sign-in to \\server for … | Something on the Agent’s computer other than the Agent is already signed in to that server as a different account, and the Agent never closes a sign-in it did not make. | Do what the rest of the message says: use that same account on this connector, or close the other sign-in on the Agent’s computer. If it says the share is already readable through that sign-in, choose Use service identity in the login box instead. |
| This agent build cannot sign in to \\server with stored credentials. | The Agent is an older version that cannot use stored logins. | Update the Agent, then test again. |
| \\server\share is not mounted on this Linux agent (or macOS agent) | The Agent runs on Linux or a Mac and the share has not been mounted on its computer yet; logins stored in the Portal are not used there. | Mount it with the command the message gives you, then test again. Step by step: on Linux · on a Mac. |
| … is a WAL-mode SQLite database | The database uses SQLite’s WAL mode, which cannot work over a network share, and Read-Only (Immutable) is unticked on the connector. | Tick Read-Only (Immutable) on the connector and test again. |
Questions people ask
Will the sync overwrite notes my team adds in Smartsheet?
Not if the notes live in their own column. Columns that exist only in Smartsheet and not in your query are never touched, so add a Notes or Owner column beside the synced ones and type there. Columns marked Sync are put back to the SQLite value on every run; Preserve columns are filled when a row first arrives and are not compared afterwards.
Does my SQLite data get stored by Query Streams?
No. The Agent runs the query on your side and sends the rows straight on to Smartsheet over an encrypted link. Query Streams keeps the configuration, the schedule and a count of rows per run, not the rows themselves.
Does my computer need to stay on?
The one running the Agent does, because the Agent is what runs the query and writes to Smartsheet. Your own laptop and browser can be closed. If that computer is off when a run is due, the missed run happens once, shortly after the Agent starts again.
Can I change the query later?
Yes. Edit and save it in Query Builder and the next run uses the new version automatically. If you add or remove columns, open the automation’s Edit panel to map them.
Can two automations write to the same sheet?
No, one automation per sheet. Point a second automation at a different sheet, or widen the query behind the first one.
Does the Free plan really cover this?
Yes. Free is a plan you keep, not a trial that expires. Automation is included on every plan; what changes by plan is how many rows one query may return per run. See exactly what Free includes on the pricing page.
Related guides
Every guide for SQLite
Not quite your setup?
- Got a folder of SQLite files instead of one? SQLite Folder merges tables that share a name into one table and tags every row with the file it came from → SQLite Folder
Setup trouble?
- Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

