SALESFORCE → SNOWFLAKE
Sync Salesforce standard and custom objects to Snowflake with incremental updates, delete capture, and clear handling for objects the API cannot query.
Most teams run Salesforce reporting through dashboards built for sellers, not analysts. Supaflow lands standard and custom objects in Snowflake so analytics, finance, and ops can join CRM data with everything else. Objects Salesforce APIs cannot query, such as Big Objects, external objects, history tables, deprecated objects, or objects without a usable incremental timestamp, are skipped with a clear reason instead of failing silently. The connector handles Salesforce’s real-world quirks: concurrent OAuth session limits, compound fields like Address and Location, picklist label-vs-code ambiguity, and per-object incremental timestamp selection. Every connector is included on every Supaflow plan — you pay only for the compute your pipelines consume.
Used by RevOps teams reconciling forecast rollups against pipeline snapshots, finance teams modelling quote-to-cash through Opportunity + OpportunityLineItem + Quote joins, and analytics teams rebuilding territory hierarchies in Snowflake — with no per-row fees.
Every row below is an actual capability in the Salesforce connector, not a forward-looking promise.
| Feature | How it works | Limit / caveat |
|---|---|---|
| Object coverage | Standard objects such as Account, Contact, Opportunity, Case, and Lead, plus custom objects created in your Salesforce org. Supaflow discovers eligible objects and field metadata during sync planning. | Unsupported or unsafe-to-query objects are skipped with a clear reason: deprecated objects, non-queryable objects, Big Objects, external objects, history objects, Salesforce views that cannot be queried safely, and objects without a usable incremental timestamp. Compound fields such as Address and Location are handled through their individual component fields. |
| Authentication | Two auth modes: OAuth 2.0 Web Server flow against a Salesforce Connected App (recommended) or basic auth with username, password, and security token for legacy pipelines or orgs where a Connected App is not yet available. | Salesforce limits concurrent OAuth sessions per user per Connected App. Supaflow avoids token refresh during an active sync so parallel pipelines do not invalidate each other’s sessions. Basic auth is supported, but OAuth is the recommended path for new setups. |
| Incremental sync | Supaflow chooses the best available Salesforce timestamp field for each object and syncs only rows changed since the last run. | Objects without a usable timestamp field are skipped with a clear reason. Salesforce custom objects with disabled audit fields can fall into this bucket. |
| Delete capture | The connector reads active, archived, and recycle-bin records when Salesforce exposes them, so deleted rows can propagate to Snowflake on the next sync. | Records purged from the recycle bin (15-day retention by default) are no longer visible to Salesforce APIs. Set up periodic cleanup downstream if you need to mirror permanent deletes. |
| Field type handling | Formula fields, picklists, and lookup/master-detail relationships are mapped with Salesforce-specific handling. When Salesforce exposes both human labels and stable API values for related picklist fields, Supaflow keeps joins stable while preserving available labels. | — |
| Pagination | Large objects are read in Salesforce API pages rather than row-by-row. Default read pages are 2,000 records, and jobs can stop cleanly between pages. | — |
| Rate limiting & retry | Retries transient throttling, session, and server errors with exponential backoff. Daily API-limit exhaustion is surfaced as a clear sync error rather than retried indefinitely. | — |
| Schema discovery | Supaflow discovers org objects and field metadata before building the sync plan. Standard and custom objects are identified from Salesforce metadata, and read-only objects are modeled appropriately. | — |
| Destination | Lands directly in Snowflake with one table per synced object, Snowflake-friendly type mapping, and incremental merges keyed on the Salesforce Id. Custom object names are preserved. | — |
Every Supaflow connector is included on every plan at no extra cost. You pay only for compute consumed, measured in Supaflow Credits (1 credit = 1 compute-hour on a Small node). No per-row fees.
Salesforce limits concurrent OAuth sessions, exposes Address and Location as compound fields that need special handling, and uses different timestamp fields across objects. Every one of those edge cases is handled in the connector — not left as user homework.
A single hard-coded timestamp field does not work across every Salesforce object. Supaflow chooses a usable timestamp per object, verifies Salesforce can filter on it, and skips objects that cannot support safe incremental sync with a clear reason.
Every one of these is something our connector handles specifically. A generic pipeline built in Airflow or a basic ELT tool will hit at least three of them in production.
Failure mode: Salesforce limits concurrent OAuth sessions per user and Connected App. Pipelines that refresh tokens during a sync can invalidate each other when several jobs run in parallel.
Evidence: Documented Salesforce platform limit; reproduced when running multiple parallel jobs with token-refresh strategies.
Fix: Supaflow avoids token refresh during the active sync. Parallel jobs against the same Connected App stay within the Salesforce session limit.
Failure mode: Salesforce exposes Address and Location as compound fields in metadata, but they cannot be queried like ordinary fields. A naive "select all fields" pipeline fails immediately on common objects such as Account.
Evidence: Standard Salesforce query behavior; reproducible against any object using compound fields.
Fix: Compound parent fields are left out of the query, and the individual fields Salesforce exposes separately sync instead. The schema stays complete enough for analytics, and queries do not fail.
Failure mode: Some Salesforce picklists expose both the human label and the machine code as separate fields with related-but-confusing names. Pipelines that pick the label lose the API-stable identifier; pipelines that pick the code lose human readability and may not match what the UI shows.
Evidence: Common across managed packages and custom-built pipelines that use picklist values as join keys downstream.
Fix: When both forms are available, Supaflow prefers the stable API value for joins while preserving the related human-readable label when Salesforce exposes it.
Failure mode: Salesforce does not expose the same usable timestamp field on every object. Some custom objects do not have audit fields enabled. Pipelines that hard-code one timestamp field fail on the objects that lack it.
Evidence: Verified against orgs with packaged custom objects where audit fields were disabled.
Fix: The connector chooses a usable incremental timestamp per object and verifies Salesforce can filter on it. Objects without a safe timestamp are skipped with a clear reason instead of failing silently.
Failure mode: Salesforce orgs accumulate deprecated and hidden objects from removed managed packages and old features. Including them in sync wastes API quota and pollutes the destination schema with dead tables.
Evidence: Standard Salesforce metadata behavior; common in long-lived orgs.
Fix: Deprecated and hidden objects are skipped during discovery. The destination only gets tables that Salesforce still considers live and queryable.
Pick an auth mode: OAuth 2.0 Web Server flow (recommended — create a Connected App in Salesforce or use one Supaflow provisions), or basic auth with username, password, and security token (supported for legacy pipelines). Choose production or sandbox.
Salesforce source docs→Supaflow discovers the queryable standard and custom objects in your org. Big Objects, external objects, history objects, deprecated objects, and objects without a usable incremental timestamp are skipped with a clear reason. Pick a subset or sync everything eligible.
Connect your Snowflake warehouse. Each Salesforce object becomes a Snowflake table with canonical type mapping; the Salesforce Id flows through as the primary key.
Snowflake destination docs→Cron or interval. Incremental syncs pull only rows changed since the last successful run. Recycle-bin deletes propagate; daily API limit is monitored and surfaced clearly if you hit it.
Schedules docs→The connector authenticates via OAuth 2.0 Web Server against a Salesforce Connected App (recommended) or basic auth with username, password, and security token. It discovers eligible standard and custom objects, reads them with paginated Salesforce API calls, and uses a per-object timestamp field for incremental sync. Each synced object becomes a Snowflake table.
Yes. When Salesforce exposes recycle-bin and archived records through its APIs, they land in Snowflake on the next sync. Records purged from the recycle bin are no longer visible to any Salesforce API, so set up periodic cleanup downstream if you need to mirror permanent deletes exactly.
Yes. Custom objects are first-class: discovered alongside standard objects and treated the same way. Custom fields sync with type mapping aware of Salesforce-specific types like currency, percent, picklist, multipicklist, and lookup relationships.
Salesforce API reads run in 2,000-record pages instead of per-row calls, so large objects do not burn quota on tiny requests. Daily API-limit exhaustion is detected and surfaced clearly rather than retried indefinitely. Object discovery is batched to keep schema-discovery overhead low.
Fivetran and Hevo often price by rows or changed-record volume, so a Salesforce sync's cost can scale with the number of records that change each month. A high count of changed records makes the bill harder to predict. Every Supaflow connector is included on every plan at no extra cost. You pay only for compute consumed, measured in Supaflow Credits (1 credit = 1 compute-hour on a Small node). No per-row fees. See the pricing page for the credit packages and free tier.
Compound fields such as Address, Location, and Name are exposed in Salesforce metadata but cannot be queried directly in the same way as ordinary fields. Supaflow leaves the compound parent fields out of the query and syncs the individual fields Salesforce exposes separately, so the destination remains useful and queries do not fail.
Yes. The sync agent runs in your own VPC if you want Salesforce credentials and CRM data to stay in your network. The control plane is managed; the data plane can be managed or self-hosted.
The Salesforce source and Snowflake destination, plus other Supaflow connectors you can pair into a Snowflake pipeline.
Source connector overview and capabilities.
Destination connector overview and capabilities.
Other CRM-to-Snowflake source for orgs running both.
Marketing Cloud data extensions, sends, and subscribers into Snowflake.
Pair with Salesforce when CRM and transactional data join in Snowflake.
Browse the full catalog of sources and destinations.
Connected App setup, OAuth and basic auth configuration, object selection, incremental sync configuration, and troubleshooting.
Connect your Snowflake warehouse, role requirements, type mapping, and sync semantics.
Every connector is included on every plan. Pay only for compute consumed (Supaflow Credits).
How Supaflow compares to Fivetran and Snowflake Openflow for Salesforce to Snowflake — processing location, billing model, and sync method.
Salesforce, Salesforce Marketing Cloud, and pairings for cross-system reporting in Snowflake.
Every connector is included on every Supaflow plan — you pay only for the compute your pipelines consume. Standard and custom objects, incremental sync, recycle-bin delete capture.