Choose SPSync when a flow is keeping a whole SQL table in step with a whole list; choose Power Automate for approvals, notifications and other work triggered by a single item.
Documentation reviewed
Where Power Automate fits
- Quick to start from a template
- no infrastructure to stand up
- familiar to SharePoint site owners already using Power Platform
- good for reacting to individual item events
Where it breaks
- Per-item actions and API-call limits throttle flows at scale
- no native delta/replication pattern; creates, updates and deletes each need separate flow logic
- schema drift in the list can break flow actions silently
- failures can go unnoticed without dedicated monitoring set up separately
- licensing and consumption cost climbs with the number of runs
- the result lives inside Power Automate or the target app, not a queryable relational database
Feature by feature
| Feature | SPSync | Power Automate and Logic Apps |
|---|---|---|
| SharePoint Online support | Core product | Yes, via the SharePoint connector |
| On-prem SharePoint support | On the roadmap | Limited, via the on-premises data gateway |
| Destinations | Relational, warehouse, lake and search/vector destinations: 20 destination engines (30+ named targets such as Azure SQL, MariaDB and Supabase), including SQL Server, Postgres, BigQuery, Databricks, ClickHouse, Parquet, Iceberg, pgvector and Azure AI Search; see /destinations/ | Whatever connector you wire the flow to, one item at a time |
| Lookup normalisation | Lookups become joinable key columns automatically | You map fields manually inside the flow |
| Multi-value columns | Child tables | You handle multi-value fields manually inside the flow |
| Deletes | Soft delete by default, hard delete with the command-line tool | Needs a separate flow triggered on item deletion |
| Delta sync | Every few minutes by default, plus a reconcile, weekly by default | Event-triggered per item, or a scheduled flow you build |
| Schema evolution | New columns appear automatically; on SQL Server, PostgreSQL, MySQL, ClickHouse, Oracle, SQLite and DuckDB retyped columns get a _v2 column | Flow actions typically need updating for new columns |
| Hosted option | SPSync in your Azure | Power Automate is always cloud-hosted |
| Desktop app | macOS and Windows | None; authoring is in the browser or Power Automate Desktop for RPA flows |
| CLI / CI | Built-in CLI | Power Platform CLI for solution deployment, not for data movement |
| Per-site least-privilege permissions | Delegated sign-in or app-only with Sites.Selected, bring-your-own-app | Connector-level SharePoint authentication, typically delegated |
| Pricing model | Licensed per installation and per target family, on annual terms, with Standard Support included; no public price list, quoted after a call | Per-user or per-flow licensing, plus consumption for premium connectors |
Most flows that copy SharePoint into a database started as something smaller. A flow posted a Teams message when an item changed; then it also wrote the item to a SQL table; then a report started reading that table. At some point the flow became the only thing keeping the reporting data current, a job it was never designed for.
Keep the flows that react to events
Power Automate is good at what it was built for. Sending a notification, routing an approval, updating another system when one item changes: that is light, event-driven automation, it needs no infrastructure, a site owner can build it from a template in minutes, and it should stay where it is. Nothing on this page argues for moving those.
When a flow is doing a sync job
Keeping a whole table in step with a whole list is a different problem. Each item is its own action against API-call limits, so the flow throttles as the list grows. Power Automate has no built-in notion of replicating a list, which leaves creates, updates and deletes each needing their own flow logic. A column change in SharePoint can break an action without a visible error, and a failed run can go unnoticed unless you build monitoring for it. The data also stays inside Power Automate’s execution model until the flow writes it somewhere, one item at a time.
SPSync does the sync job as a single process. It copies the whole list into a normalised schema and keeps it current on a schedule, every five minutes by default. Lookups become key columns you can join on, multi-value columns become child tables, deletes are tracked, and new SharePoint columns appear in the table by themselves. There is no per-item action to design and no second flow for deletes.
The usual signal to move is a flow that throttles at the list’s current size; failure rates and the consumption bill are covered in the table.
Deletes and the premium connector in a list-to-SQL flow
A flow that copies a SharePoint list to SQL Server reads the items that exist, so an item deleted in SharePoint keeps its row in the table unless something else removes it. The SharePoint connector’s When an item is deleted trigger is the usual answer, and it only works for site collection admins of the site that holds the list. The other answer is a scheduled flow that compares every ID in the list with every ID in the table, which reads the whole list again on each run.
Writing to SQL Server also changes the licence. The SQL Server connector is Premium in Power Automate, so the flow’s owner needs a premium plan. Get items itself stops at 5,000 items on the Low performance profile, which covers Microsoft 365 plans, and at 100,000 items on the others, per the Power Automate limits page. Our post on the Power Automate Get items limit works through each cap and the delete problem in detail.
Switching over
- Sort your flows into two piles: the ones replicating data, and the ones reacting to a single event. Only the first pile moves.
- Connect SPSync to SharePoint and pick the lists the replicating flows read.
- Choose the destination database, run the initial full load, then set the delta sync schedule.
- Repoint whatever read the flow’s output, a report or another system, at the new SQL tables.
- Turn off the replicating flows. The event-driven ones keep running as before.
SPSync runs as a desktop app on macOS and Windows, syncing on schedule while it is open, or as a command-line tool for CI or a server. SPSync in your Azure, a managed application for your own subscription, is deployed with you on a call while the Marketplace listing is prepared. Once deployed it is always on.
SPSync as a Power Automate alternative for SharePoint lists
SPSync replaces the flows that copy data and leaves the flows that react to events. One process reads the list's changes by delta query, writes creates, updates and deletes to the database, and adds new columns as they appear, so the per-item actions and the second flow for deletes can be switched off.
Other alternatives
- Azure Data Factory: scheduled Copy activities over the SharePoint Online List connector, sturdier than flows for bulk copies.
- Skyvia: a hosted sync with no flows to design, with plan limits set by monthly record volume.
- Coupler.io: scheduled Microsoft Lists refreshes into spreadsheets, BI tools and a few warehouses, set up without flow logic.
- Layer2 Cloud Connector: two-way sync for teams whose flows also push database changes back into lists.
Frequently asked questions
Is the SQL Server connector in Power Automate a premium connector?
Yes. Microsoft's connector reference lists SQL Server as a Premium connector in Power Automate and Power Apps, so flows that write list items to SQL need a plan that includes premium connectors (checked 2026-10-22). SPSync's licence covers the copy with no per-flow or per-run charge.
Which flows should stay in Power Automate?
Keep any flow that acts because one item changed: an approval, a Teams message, an update in another system. Move the flows whose only job is to keep a table matching a list.
What does SPSync do when someone adds a column to the list?
The column appears in the destination table on the next delta run, without anyone editing a mapping. A flow with fixed actions keeps writing the old set of columns until someone opens it and adds the new one.
Desktop, Azure or command line
All three editions run the same engine, write the same tables and use the same licence key, so the choice comes down to who looks after the sync.
Desktop app
For macOS and Windows. Sign in with Microsoft, tick the lists, choose a database and sync from your own machine on the schedule you set. Delegated sign-in needs no admin unless your tenant requires admin consent for apps.
In your Azure
SPSync in your Azure, a managed application for your own subscription, is deployed with you on a call while the Marketplace listing is prepared. Once deployed it is always on, so the sync keeps running with every laptop closed.
Command line
Every replication is a YAML file you can review and commit. Run it from a server, a container or a CI pipeline, and re-run it safely any time.