---
title: Salesforce
description: Connect Salesforce, understand its sync behavior, and query every table and column it writes.
species: reference
---
# Salesforce

Connect Salesforce with Salesforce OAuth. The source writes every queryable object discovered from your organization under `titan.salesforce`.
## Connect Salesforce

1. Open **Apps**, choose **Connect app**, and select **Salesforce**.
2. Enter Salesforce OAuth.
3. Review the tables, then save the source.
4. Watch **Sync history** until the first run completes.

Credentials are stored as secrets. They never become lake columns or appear in query results.

## Sync behavior

Every run is a complete read until the lake reconciliation gate is armed because Salesforce only exposes reliable deletes through a full comparison. Later runs use SystemModstamp, then LastModifiedDate, then CreatedDate when available.

A new source syncs when you connect it and then follows its schedule. The default recurring interval is 4 hours. An interrupted run keeps its completed progress and retries safely.

Every lake table also has the [system columns](/v2/docs/concepts/your-lake#the-system-columns) `_synced_at` and `_deleted`; the column reference below lists source columns only.

## Table reference

Supernova discovers this reference from the connected account. The Salesforce describe APIs supply objects and fields. Deprecated, hidden, and non-queryable objects are omitted.

Open **Apps → Salesforce → Tables** after the first discovery run to see every exact table name, column name, type, and sync selection. Dynamic fields cannot be listed truthfully before an account is connected.

## Deletes and history

Rows are merged by their source key. When the source can prove that a row was deleted, Supernova keeps the row and sets `_deleted` so queries can choose whether to include history. Filter current-state queries with `where not _deleted`.
