Salesforce to Snowflake

Sync Salesforce opportunities, accounts, contacts, leads and custom objects into Snowflake, and keep them current with incremental syncs. Weld authorises with OAuth, lands each object as its own table, and writes to Snowflake through a dedicated user and role you control.

4.8 on G2
SalesforceSource
WeldWeld
SnowflakeWarehouse

Checked against Weld and vendor docs on

Weld · New sync
SalesforceSourceSalesforceConnected
Tables to sync
  • opportunity7 cols
  • account7 cols
  • lead7 cols
  • contact7 cols
  • opportunity_line_item7 cols
  • opportunity_contact_role7 cols
  • Extract
  • Load
  • Keep in sync
SnowflakeDestinationSnowflakeReady
salesforce schema
  • salesforce.opportunitySynced
  • salesforce.accountSyncing
  • salesforce.leadSynced
  • salesforce.contactSynced
  • salesforce.opportunity_line_itemSynced
  • salesforce.opportunity_contact_roleSynced
Salesforce tables
16
fields, typed
112
agent context included
MCP

Trusted by data and AI teams

  • Flatpay
  • Holafly
  • eComplete
  • Dishoom
  • Danish Endurance
  • Female Invest
  • Son of a Tailor
  • Onomondo
  • Medik8
  • Pas Normal Studios
Options

Three ways to get Salesforce data into Snowflake

Snowflake now has its own generally available Salesforce connector in Openflow, and Salesforce offers zero copy sharing from Data Cloud. Which one fits depends on whether you already run Openflow or pay for Data Cloud.

S

Snowflake Openflow Connector for Salesforce Bulk API

Best for
Teams already running Openflow who want a Snowflake managed connector
Effort
Medium: an Openflow runtime, a Salesforce external client app, network rules
Freshness
Scheduled, from every minute to every 24 hours
Good to know
Generally available. Replicates standard and custom objects with change detection on timestamp fields. Deletes are soft, and formula fields come through as views rather than data.
S

Salesforce Data Cloud zero copy

Best for
Companies that already pay for Salesforce Data Cloud
Effort
Medium: a Zerocopy Connector in Snowflake, a data share target and data shares in Salesforce
Freshness
Queried in place, no copy
Good to know
Data Cloud, now called Data 360, is a separate Salesforce product with its own consumption pricing. The share exposes Data Cloud data products to Snowflake, and the data stays in Salesforce.

Weld

Best for
Salesforce in Snowflake next to your other sources, without Openflow or Data Cloud
Effort
Low: authorise, pick objects, choose a schedule
Freshness
Incremental syncs on your schedule
Good to know
OAuth setup, deleted records kept and flagged, syncs that slow down at 80% of your API limit, and atomic full loads into Snowflake.
How it works

How to sync Salesforce to Snowflake with Weld.
In the app, with the API or an agent.

Weld · Data warehouse
SnowflakeData warehouseSnowflakeConnected
Data locationChosen when you connect
CredentialsService account or key, stored encrypted
Schema

What lands in Snowflake
Every Salesforce table, keys intact.

Salesforce has no fixed table list: Weld offers the objects your Salesforce user can query, standard and custom, and lands each as a table named after the object in snake_case, with fields in snake_case too. Most sales reporting starts from these.

Open the schema explorer
  • opportunity7 columns
    • idPKstring
    • created_datedate
    • created_by_idstring
    • last_modified_datedate
    • last_modified_by_idstring

    One row per deal with stage_name, amount, close_date, is_won and is_closed. The base for pipeline, win rate and bookings.

  • account7 columns
    • idPKstring
    • created_datedate
    • created_by_idstring
    • last_modified_datedate
    • last_modified_by_idstring

    The companies you sell to. Opportunities and contacts link to it through account_id.

  • lead7 columns
    • idPKstring
    • created_datedate
    • created_by_idstring
    • last_modified_datedate
    • last_modified_by_idstring

    Prospects with their status and created_date, and an is_converted flag once they become contacts and opportunities.

  • task and event

    Calls, emails and meetings logged against records, with activity_date. Useful for activity reporting per rep.

All 16 tables
  • account
  • contact
  • lead
  • opportunity
  • opportunity_line_item
  • opportunity_contact_role
  • case
  • campaign
  • campaign_member
  • task
  • event
  • user
  • product_2
  • pricebook_2
  • pricebook_entry
  • contract
Example query

Open pipeline by stage.
In Snowflake SQL.

Runs in Snowflake against the opportunity table Weld lands, here in a schema named salesforce. Weld creates lower case names by default, so every identifier is quoted.

Snowflake · query
1select2  "stage_name",3  count(*) as open_opportunities,4  round(sum("amount"), 2) as pipeline_amount5from "salesforce"."opportunity"6where not "is_closed"7  and not "is_deleted"8group by "stage_name"9order by pipeline_amount desc
Weld MCP server

Ask your agent.
It queries Snowflake for you.

Connect Claude, Cursor, ChatGPT or your own agent to Weld over MCP. It reads the Salesforce context, finds the tables it needs and runs the query in Snowflake.

Claude CodeOpus 5
>

How many account rows do we have in Snowflake?

Reading the Salesforce context first, so the query uses the right tables and keys.

●weld·search_available_references
⎿raw.salesforce.account
+ 15 more Salesforce tables
●weld·get_reference_schema
⎿account · 7 columns
columns and types
●weld·run_query
⎿select count(*) from {{raw.salesforce.account}}
submitted
●weld·get_query_status
⎿DONE
●weld·get_query_result
⎿rows returned
✓Answered from Salesforce data in Snowflake
>Ask about your Salesforce data
Under the hood

Things to know.
Before you sync Salesforce.

Reverse ETL

ELT vs. reverse ETL: Salesforce and Snowflake

ELT (Extract, Load, Transform) moves data from Salesforce into Snowflake for analysis. This is the approach shown on this page, and the one to use for dashboards, reports, and data models.

Reverse ETL works the other direction: it pushes enriched data from Snowflake back into Salesforce. For example, you could sync computed lead scores or customer segments from your warehouse into Salesforce to personalize outreach.

Weld supports both directions, so you can build a complete data loop between Salesforce and Snowflake.

Snowflake to Salesforce
Quote names, or turn on upper case
Weld quotes every name it writes, so lower case tables must be queried with quotes. Turn on Create tables and columns in upper case when you create the sync to query without quotes; the casing cannot be changed afterwards.
API limits are shared across your org
Salesforce applies its rate limits to the whole account. When usage reaches 80% of the limit, Weld slows its Salesforce syncs down so your other integrations keep working.
Deleted records stay, flagged
Weld reads deleted and archived records as well, so a record removed in Salesforce keeps its row with is_deleted set to true. Filter on it in your models.
Not every object is incremental
Objects with a last modified or created date sync incrementally on those timestamps; the rest are reloaded in full. Full loads into Snowflake are staged first and applied with one COPY INTO, so a failed run leaves the table as it was.
Field names change shape
Salesforce API names become snake_case columns, so StageName lands as stage_name. Compound address and geolocation fields are skipped; use their component fields.
FAQ

Common questions.
About Salesforce to Snowflake.

Start syncing Salesforce to Snowflake.

Set up your Salesforce data pipeline in minutes. No credit card required. Free for 14 days.

SalesforceSource
WeldWeld
SnowflakeWarehouse