# Data Flows Overview

- URL: https://betteranalyst.com/docs/data-flows/overview
- Updated: 2026-11-01
- Author: Better Analyst

Learn how Data Flows pull fresh source data, replay a saved transform, and deliver the result to Google Sheets or a database.

A data flow saves a source, a repeatable transform, a destination, and an optional schedule. Each run pulls fresh data, replays the same transform, and writes the result to the destination you chose.

Use Data Flows when you need the same prepared dataset refreshed repeatedly. Depending on your plan, you can run a saved flow on demand, add an hourly, daily, weekly, or monthly schedule, and review every delivery from the flow page.

![Data Flows list showing each flow's source, destination, write mode, latest run, and schedule](https://betteranalyst.com/docs/data-flows/overview/flows-overview-light.png)

Review schedules, recent results, and flow health from the Data Flows list.

## When to Use a Data Flow

Data Flows work well for repeatable delivery such as:

- Refreshing a marketing performance table every morning
- Keeping a weekly Search Console export current
- Copying a database or Airtable table into a Google Sheet your team already uses
- Combining several supported sources into one prepared dataset
- Loading the same transformed result into a Sheet or database table

For one-time analysis, keep working in chat. If you want to schedule an AI agent to perform a task rather than replay a fixed transform, use [Scheduled Tasks](https://betteranalyst.com/docs/tasks/overview).

## Sources

A flow can start from:

- A database or warehouse query — Snowflake, BigQuery, PostgreSQL, Supabase, MySQL, or SQL Server — completed in **Data flow** chat mode
- An Airtable or Tableau table pulled in **Data flow** chat mode
- Google Analytics 4 (GA4), Google Search Console, or Google Ads work completed in **Data flow** chat mode (Meta Ads coming soon)
- An existing Google Sheet tab selected through the dedicated Google Drive picker
- Several supported sources combined into one result

Every run reads at most 100,000 rows from a source. Attaching a Google Sheet to a chat does not make it a flow source; start from **Already have a Google Sheet?** and use the picker instead.

See [Sources](https://betteranalyst.com/docs/data-flows/sources) for what each source type can deliver and the limits that apply to each run.

## Destinations

Every flow writes to one destination:

- **Google Sheets:** Write to an existing tab, create a tab, or create a spreadsheet. Choose **Update or add rows**, **Replace with latest data**, or **Append every run**.
- **Database table:** On Pro, Team, and Enterprise, write to Snowflake, BigQuery, Databricks, PostgreSQL, Supabase, MySQL, SQL Server, or Amazon Redshift. The same three write modes are available. See [Database destinations](https://betteranalyst.com/docs/data-flows/database-destinations) for network access, permissions, and column types.

See [Destinations](https://betteranalyst.com/docs/data-flows/destinations) for target and write-mode details.

## Plan Availability

| Plan | Active saved flows | Destinations | Fastest schedule |
| - | - | - | - |
| Free | 0 | Google Sheets one-off tests | Manual only |
| Pro | Unlimited | All standard destinations | Daily |
| Team | Unlimited | All standard destinations | Hourly |
| Enterprise | Unlimited | All standard destinations | Hourly |

Free includes 10 successful one-off test deliveries per rolling 30 days. Paid plans have no separate monthly execution quota; a safety limit of 20 admitted manual starts per rolling hour applies to each saved flow. [Fair usage](https://betteranalyst.com/fair-use-policy) applies to processed rows.

If you subscribed to Starter, Max or Business before November 2026, you keep at least the Data Flows you had. Starter includes 1 weekly Google Sheets flow. Max includes everything in Pro: unlimited daily flows to all standard destinations. Business includes everything in Team: unlimited hourly flows to all standard destinations.

Row limits per run are technical rather than plan-based: every run reads up to 100,000 rows from each source (50,000 per Meta Ads report once that connector is available), on every plan, and upgrading does not raise that. Database destinations accept up to 500,000 rows a run. What a plan changes is how many flows you can save, which destinations you can write to, how often they run, and your rolling fair-use allowance. See [Sources](https://betteranalyst.com/docs/data-flows/sources).

## Data Flows vs. Scheduled Tasks

| Data Flows | Scheduled Tasks |
| - | - |
| Pull fresh data from a saved source | Schedule an AI agent's work |
| Replay the same saved transform | Let the agent perform the saved workflow |
| Write the resulting table to a fixed destination | Produce the task's configured result |

Use a data flow when the transformation and delivery should repeat consistently. Use [Scheduled Tasks](https://betteranalyst.com/docs/tasks/overview) when each run should ask an AI agent to do the work.

To get an email or Slack message when a number in a flow's output crosses a threshold or changes sharply, open the flow and select **Add alert**. See [Alerts](https://betteranalyst.com/docs/alerts/overview).

## In a Team

The list follows the project you pick in the project switcher. See [Projects](https://betteranalyst.com/docs/get-started/projects). Only the person who created a Data Flow, or an owner or admin, can change, publish, or delete it. See [Roles & Permissions](https://betteranalyst.com/docs/teams/roles-permissions).

## Next Steps

- [Create a flow](https://betteranalyst.com/docs/data-flows/create-a-flow)
- [Source types and limits](https://betteranalyst.com/docs/data-flows/sources)
- [Configure schedules and review runs](https://betteranalyst.com/docs/data-flows/schedules-and-runs)
- [Choose a destination and write mode](https://betteranalyst.com/docs/data-flows/destinations)
- [Write to a database table](https://betteranalyst.com/docs/data-flows/database-destinations)
