Connecting data
Connections
Add a source, name it, choose which tables to sync, and understand how its tables are named in SQL.
Supported sources
| Source | How it connects | Guide |
|---|---|---|
| Salesforce | Username and security token, a connected app, or a refresh token | Salesforce |
| Marketo | REST API client ID and secret | Marketo |
| Google Analytics 4 | The property's BigQuery export, read with a service account | Google Analytics 4 |
| PostgreSQL | Host, database, user and password | PostgreSQL and MySQL |
| MySQL | Host, database, user and password | PostgreSQL and MySQL |
| Sample data | One click, no credentials | Quickstart |
HubSpot and NetSuite are listed as Coming soon in the app. If you need a source that isn't listed, tell us.
Adding a connection
- Open Connections and choose a source.
- Give the connection a name (see below) and fill in the credentials.
- Save. Datachef tests the connection and lists the tables the source offers.
- Turn on the tables you want and choose how each one syncs. See sync settings.
Adding and changing connections needs the Editor role in the workspace. Deleting one needs Admin.
Connection names and labels
Every connection has two names:
| What it is | Example | Can change? | |
|---|---|---|---|
| Name | The SQL schema its tables are queried through | salesforce_sandbox_1 | No, it's fixed when the connection is created |
| Label | What people see in the app | Salesforce (EU sandbox) | Yes |
The name is fixed because every query, model and tab that reads those tables refers to it. A name is lower snake case, starts with a letter, is at most 63 characters, and is unique in the workspace. The form suggests a free one: salesforce, then salesforce_2, and so on.
How tables are named
Tables are queried as <connection name>.<table>:
SELECT stagename, sum(amount)
FROM salesforce.opportunity
GROUP BY 1
So a second Salesforce connection named salesforce_sandbox_1 lands its tables as salesforce_sandbox_1.opportunity, beside the first connection's salesforce.opportunity.
Database tables outside the default schema keep their schema as a prefix: a Postgres table sales.orders in a connection named warehouse becomes warehouse.sales_orders.
Connections created before connection names existed keep their original flat table names, such as salesforce_opportunity.
Credentials
Connection credentials are encrypted when they're stored. They're never sent back to your browser, to an AI agent connected through the Claude connector, or to Datachef support staff. See security.
Deleting a connection
Deleting a connection stops its syncs. The tables it already synced are kept.
Something missing or wrong on this page? Tell us