Write the SQL once.
Keep your team’s tools in sync.

Join, filter and summarise your database or SaaS data with SQL. Query Streams runs the saved query on your schedule and syncs the results to Smartsheet, Airtable, Google Sheets, SeaTable, Baserow or Anvil. Your numbers stay current. Your team keeps working where it already does.

On every plan, including Free. All six destinations. As often as every 5 minutes.

The same sheet.
The next set of changes.

Scroll to follow one Full Sync run. The balance, rows and team notes make it clear what the sync changes and what it keeps.

Saved query: Open invoicesRead-only source query
Works withSQL Server
Every 5 minutesor your own schedule
Same result, one of six tools
See the saved SQL
SELECT i.invoice, c.name AS customer,
       i.amount, i.status
FROM ar.invoices i
JOIN ar.customers c
  ON c.id = i.customer_id
WHERE i.status <> 'Paid'
ORDER BY i.due
The Network Agent reads the source. Automation writes to the destination you authorised; it does not write changes back to your database.

Follow the changes at your own pace, or run the sample.

Smartsheet

Open invoices

Illustrative Full Sync
Illustrative Full Sync destination. Scroll through the explanations or run the example.
InvoiceKey · SYNCAmountSYNCStatusSYNCTeam notesPRESERVE
INV-204781,140.00OverdueAlex following up
INV-2047517,320.80OverdueCall on Friday
INV-2048112,480.00OpenWaiting for PO
Team-owned cells stay on retained rows.

Three invoices before the next run. Team notes are already in place.

Sample data. The shaded notes column belongs to your team. The rotating logos show supported source coverage.

Before the next run

Your team already has an open-invoice list. Balances and invoice status came from the query. Follow-up notes were entered by people.

The invoice key identifies each row. SYNC and PRESERVE decide which columns can change.

Smartsheet

Open invoices

Illustrative Full Sync
Before the next run. Sample data.
InvoiceKey · SYNCAmountSYNCStatusSYNCTeam notesPRESERVE
INV-204781,140.00OverdueAlex following up
INV-2047517,320.80OverdueCall on Friday
INV-2048112,480.00OpenWaiting for PO
Team-owned cells stay on retained rows.

Three invoices before the next run. Team notes are already in place.

Update the source-owned cells

A part payment reduces INV-20478 from 1,140.00 to 940.00. Full Sync updates its mapped amount without replacing Alex’s follow-up note.

Watch the amount cell. The note beside it stays in the same place.

Smartsheet

Open invoices

Illustrative Full Sync
Update the source-owned cells. Sample data.
InvoiceKey · SYNCAmountSYNCStatusSYNCTeam notesPRESERVE
INV-20478940.00OverdueAlex following up
INV-2047517,320.80OverdueCall on Friday
INV-2048112,480.00OpenWaiting for PO
Team-owned cells stay on retained rows.

INV-20478 updated to 940.00. “Alex following up” stays intact.

Remove rows outside the result

INV-20481 is now paid, so the saved query no longer returns it. Full Sync removes that destination row to keep this an open-invoice list.

Removing a row also removes its notes. PRESERVE protects values on retained rows; it does not keep deleted rows.

Smartsheet

Open invoices

Illustrative Full Sync
Remove rows outside the result. Sample data.
InvoiceKey · SYNCAmountSYNCStatusSYNCTeam notesPRESERVE
INV-20478940.00OverdueAlex following up
INV-2047517,320.80OverdueCall on Friday
INV-20481 removedIts note leaves with the row.
Team-owned cells stay on retained rows.

INV-20481 removed because it is paid. Its row and note leave together.

Add a newly matching row

INV-20472 now matches the query. It arrives with its amount and status, ready for someone to add a follow-up note. Existing notes remain on the retained invoices.

One added, one updated, one removed. The team keeps working in the same destination.

Smartsheet

Open invoices

Illustrative Full Sync
Add a newly matching row. Sample data.
InvoiceKey · SYNCAmountSYNCStatusSYNCTeam notesPRESERVE
INV-20478940.00OverdueAlex following up
INV-2047517,320.80OverdueCall on Friday
INV-204725,493.95OpenAdd a note
Team-owned cells stay on retained rows.

1 invoice added, 1 updated, 1 removed. Notes on retained rows stay intact.

Full Sync can remove whole rows. If a row leaves your query result, its manual notes leave too. Use Append when you need a growing history without changing existing rows.

Keep the numbers current.
Keep your team’s work.

Choose what happens to rows, then choose which columns the sync can change. The database can own the balance while your team owns the follow-up note.

Append: build a history

Add new rows at the bottom. Existing rows are left as they are, even if the source changes later.

For logs, transaction histories and records you want to retain.

Full Sync: keep a current view

Match records by a key. Add new rows, update changed values and remove rows no longer returned by the query.

For open invoices, stock levels and active project lists.

SYNC

Values the source owns

Keep mapped balances, quantities and dates aligned with your query results.

PRESERVE

Values your team owns

Keep manual notes, assigned owners and follow-up status when a row is updated. Full Sync can still remove the entire row if it leaves the result.

Send the answer your team needs.

A destination does not need a copy of every source table. Use SQL to turn the data into a useful working list or summary before the sync writes it.

  • Join related recordsPut the customer name beside the invoice, or the product beside its stock count.
  • Filter and calculateUse WHERE, GROUP BY, HAVING, SUM, COUNT and AVG to deliver the rows and totals that matter.
  • Use databases and SaaS sourcesQuery supported databases or service tables through the API Connector. Source settings determine whether a query reads a synced copy or refreshes supported API data before SQL runs.
Sheets move along a short conveyor into destination tools under a scheduling clock

Six places the results can land.

Connect your account, pick the sheet, base or table, and send your query results straight into it. Google Sheets uses Google sign-in; other destinations use their supported credentials, such as an API token.

SmartsheetSmartsheet

Project plans and task lists that stay in step with your database.

AirtableAirtable

A flexible base your team can sort, group and build views on.

Google SheetsGoogle Sheets

A shared sheet everyone can open, with current numbers in it.

SeaTableSeaTable

A base you can host yourself, kept current the same way.

BaserowBaserow

An open-source base, synced like the others.

AnvilAnvil

A data table behind a Python web app, fed on a schedule.

One setup. A schedule that keeps working.

1. Save the query

Build and test the result in the Query Builder. The Network Agent runs the source query inside your network.

Open the Query Builder guide

2. Choose where it lands

Connect a destination account and select the target sheet, base or table. Map your columns, choose Append or Full Sync, and mark the values to preserve.

3. Set the timetable

Choose a preset interval, as often as every 5 minutes, or a custom cron schedule. For example, 7 a.m. on weekdays:

0 7 * * 1-5
Your database stays behind your firewall.

The agent connects outbound, with no inbound port or VPN. Source queries are read-only; Automation writes the result into the destination you authorised.

Anywhere the team works in a sheet, but the truth lives in a database.

  • Project management. Milestones, tasks and who is assigned, into Smartsheet.
  • Sales reporting. Pipeline and revenue numbers into one sheet the sales team trusts.
  • Inventory tracking. Stock levels and warehouse counts on a tight interval.
  • Finance dashboards. Budget, expense and forecast figures into the sheets leadership reads.
  • HR operations. The employee directory mirrored into the team sheets people actually open.
  • Marketing analytics. Campaign metrics from your database or Google Analytics into Airtable.

On every plan, including Free.

Scheduled syncs are not a paid extra. Every plan can connect all six destinations; what changes between plans is how many rows one sync can carry. Free supports queries returning up to 125 rows, enough for a summary, a top list or a status board. A query over your plan’s row limit is blocked rather than silently cut short. Paid plans raise that limit.

Compare rows per sync on every plan

Free plan$0 a month
Scheduled syncsIncluded
DestinationsAll six
Rows per sync125
Append or full syncBoth

Need a message when something changes?

Automation keeps a destination table current. Reports send a scheduled update; Data Alerts tell you when a query result meets a condition.

Explore Reports and Data Alerts

Questions people ask.

How often can a sync run?

As often as every 5 minutes. Pick a preset interval, or write a cron expression for an exact timetable. Once set, it runs on its own.

What is the difference between Append and Full sync?

Append adds new rows and leaves existing rows untouched. Full Sync matches rows by a key: it adds new records, updates mapped SYNC values and removes rows no longer returned by the query. PRESERVE values on retained rows are not overwritten. Removing a row also removes any manual notes on that row.

What are SYNC and PRESERVE columns?

SYNC columns follow your query results, for example balances and stock counts. PRESERVE columns keep values your team enters in the destination, such as notes, owners and follow-up status, when existing rows are updated. This protects the values on retained rows; it does not stop Full Sync removing a row that no longer matches the query.

Can it sync data from an online service, not just a database?

Yes. Services like Stripe, HubSpot or Shopify come in through the API Connector, which turns their data into tables you query with SQL. A query on those tables syncs to any of the six destinations exactly like a database query.

Do I need to write code or set up a data pipeline?

Build and save a SQL query in the browser with the Query Builder, connect a destination, map your columns and set a schedule. Google Sheets uses Google sign-in; other destinations use their supported credentials, such as an API token. There is no separate sync script to maintain. For scheduled messages or threshold notifications, use Reports and Data Alerts.

Write the query once. Let the schedule do the rest.

Scheduled syncs are on every plan, including Free. See what each plan carries per sync.

Get the free plan