# Connections

> How data gets into sanda. Connect a system, load a CSV or let an assistant add rows, and see where each one lands in your warehouse.

Everything in sanda starts as rows in your warehouse. There are three ways to put them there.

| Way in | Use it for | How it stays fresh | Lands as |
|---|---|---|---|
| [**Connection**](https://docs.sanda-os.com.au/connections/add-a-connection) | A system that keeps producing rows: an accounting package, a shop, a database | On a schedule you set, or when you press **Sync now** | `raw.<connection>__<stream>` |
| [**CSV upload**](https://docs.sanda-os.com.au/connections/upload-a-csv) | A file you already have | It does not. You load it again when it changes | `raw.csv__<table>` |
| **Rows an assistant adds** | A running log you keep by talking to an assistant | Each time the assistant adds a row | New rows in a CSV table you opened for intake |

Connections are the main way in, and most of this section is about them.

## What a connection is

A connection is a saved link between one source and your warehouse. It records four things:

- **The source**, and the details sanda needs to sign in to it.
- **What to sync**: which tables the source offers, called streams, and how each one is read (its [sync mode](https://docs.sanda-os.com.au/connections/sync-modes)).
- **When to sync**: a [schedule](https://docs.sanda-os.com.au/connections/schedules), or manual.
- **Where it lands**: which warehouse the rows go to.

sanda's managed sync does the reading. The details you enter go straight to it over TLS, and sanda's own database never stores them. You never paste a warehouse connection string: sanda wires the destination itself.

## Where rows land

Your warehouse is a standard PostgreSQL database. Rows from a connection land in its `raw` schema, one table per stream, named `raw.<connection>__<stream>`. `<connection>` is the connection's name in lowercase, with each run of other characters turned into one underscore and the result cut at 40 characters. A connection named `Acme · Xero (AU)` lands its invoices in `raw.acme_xero_au__invoices`.

Two connections whose names reduce to the same prefix write to the same tables, so keep names distinct once the punctuation is gone.

Landing does not put anything on your semantic map. Once rows have landed, ask cherry to learn from your data, or add the tables yourself. See [Learn from your data](https://docs.sanda-os.com.au/semantic-fluid/learn) and [Explorer](https://docs.sanda-os.com.au/warehouse/explorer).

## The connections list

Open **Data · Connections** to see every connection.

![The connections list with two connections: one syncing, one healthy.](https://docs.sanda-os.com.au/media/connections-list.png "One row per connection: source, destination, frequency, last sync, rows and status.")

Each row shows the connection's name and source, where it lands, its frequency, when it last synced, the rows it has synced in total and its status. A row that is syncing shows the run's progress in place of the total. The search box filters by name or source.

Three buttons sit above the list:

- **New connection** starts the [add a connection](https://docs.sanda-os.com.au/connections/add-a-connection) flow.
- **Load a CSV** opens the [CSV upload](https://docs.sanda-os.com.au/connections/upload-a-csv).
- **Sync times** opens the account schedule, which draws every scheduled sync, task and delivery on one clock. See [Sync schedules](https://docs.sanda-os.com.au/connections/schedules#see-everything-on-one-clock).

Under the list, sanda reminds you of the fixed address it syncs from. See [Allowlist sanda's address](https://docs.sanda-os.com.au/connections/allowlist).

:::note
Owners and admins add, change, run and delete connections. Members can open a connection and see its history, and can load CSVs. Read-only people can look but not change anything.
:::

## Connection statuses

Every connection shows one status, on the list and at the top of its own page.

| Status | What it means | What to do |
|---|---|---|
| **Setup incomplete** | The connection is saved but sanda has no sign-in details for the source. You skipped them, or the connector is set up by hand | Open the connection and press **Enter connection details**. For a **Concierge** connector, wait for sanda to get in touch |
| **Needs streams** | sanda connected and read the source's schema, and you have not chosen what to sync yet | Open the connection, choose tables under **Streams**, and save |
| **Pending** | Ready to run, and no run has finished yet | Press **Sync now**, or wait for the schedule |
| **Syncing** | A run is in progress | Watch it on the connection's **Status** tab |
| **Healthy** | The last run finished and its rows have landed | Nothing |
| **Error** | Connecting failed, a run failed, or rows landed but could not be made readable. The reason is on the connection's **Status** tab | See [Troubleshoot connections](https://docs.sanda-os.com.au/connections/troubleshooting) |
| **Paused** | The connection is not running on its schedule | Contact sanda support if you did not expect this. To stop scheduled runs yourself, set the frequency to **Manual** |

## Connectors offered by arrangement

The catalogue lists the systems sanda can connect to. Most have a setup form you fill in yourself. A few are set up with you instead: they carry a **Concierge** badge, and there is nothing to fill in beyond a name and a frequency. A sanda engineer wires the source and confirms the first load with you.


- [MYOB](https://docs.sanda-os.com.au/connectors/myob)
- [Something else](https://docs.sanda-os.com.au/connectors/other)


**Something else** is for a system that is not in the catalogue. Create the connection, describe what you need, and sanda takes it from there. See the full [connector catalogue](https://docs.sanda-os.com.au/connectors) for every source sanda offers.

## Rows an assistant adds

An owner or admin can open a CSV table for intake. A connected assistant holding the intake permission can then add rows to that table, matching its columns, and can do nothing else to it. It is meant for a log someone keeps by talking: a daily log, a form, a running list. You open a table for intake when you [load the CSV](https://docs.sanda-os.com.au/connections/upload-a-csv#let-an-assistant-add-rows), and close it in the **Intake tables** panel on the **Settings** page. See [Agent tokens](https://docs.sanda-os.com.au/mcp/agent-tokens) and [MCP tools](https://docs.sanda-os.com.au/mcp/tools) for the assistant's side.

## Keep reading

:::links
- [Add a connection](https://docs.sanda-os.com.au/connections/add-a-connection): Choose a source, sign in, name it and choose what to sync.
- [Allowlist sanda's address](https://docs.sanda-os.com.au/connections/allowlist): Let sanda through the firewall of a database you host.
- [Load a CSV](https://docs.sanda-os.com.au/connections/upload-a-csv): Put a file straight into your warehouse.
- [Choose what to sync](https://docs.sanda-os.com.au/connections/choose-streams): Streams, cursors and primary keys.
- [Sync schedules](https://docs.sanda-os.com.au/connections/schedules): How often a connection runs, and how time zones are handled.
- [Monitor syncs](https://docs.sanda-os.com.au/connections/monitor-syncs): Follow a run and read the history.
- [Troubleshoot connections](https://docs.sanda-os.com.au/connections/troubleshooting): What each error means and how to fix it.
:::
