Salesforce to BigQuery

Sync Salesforce opportunities, accounts, contacts, leads and the rest of your org's objects into BigQuery, and keep them current with incremental syncs. Weld authorises with OAuth, lands each object as its own table, and slows down before your org's API limit is reached.

4.8 on G2
SalesforceSource
WeldWeld
Google BigQueryWarehouse

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
Google BigQueryDestinationGoogle BigQueryReady
salesforce dataset
  • 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 BigQuery

Google has a generally available Salesforce connector in BigQuery Data Transfer Service, billed on the compute it uses. It fits teams that live in Google Cloud and only need Sales Cloud objects. The differences show up in setup, deleted records and how the transfer handles schema changes.

B

BigQuery Data Transfer Service

Best for
Google Cloud teams that want a Google managed transfer
Effort
Medium: create a Salesforce Connected App, then a transfer per set of objects
Freshness
Scheduled, at least 15 minutes apart; default every 24 hours
Good to know
Sales Cloud only, through Bulk API V1. Google recommends at most 10 objects per transfer configuration, and incremental transfers cannot sync deletes. Charged in slot-hours.
C

Custom script on the Salesforce APIs

Best for
Teams with engineers to own a pipeline
Effort
High: OAuth, pagination, API limits, schema changes
Freshness
Whatever you schedule
Good to know
Every request counts against the same org wide API limits your other Salesforce integrations use, so the script has to throttle itself.

Weld

Best for
Reporting and agents on Salesforce data next to your other sources
Effort
Low: authorise, pick objects, choose a schedule
Freshness
Incremental syncs on your schedule
Good to know
OAuth setup with no Connected App to create, deleted records kept and flagged, and syncs that slow down at 80% of your API limit.
How it works

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

Weld · Data warehouse
Google BigQueryData warehouseGoogle BigQueryConnected
Data locationChosen when you connect
CredentialsService account or key, stored encrypted
Schema

What lands in Google BigQuery
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 one 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. The base for lead volume and conversion.

  • 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

Quarterly win rate and won amount.
In Google BigQuery SQL.

Runs in BigQuery against the opportunity table Weld lands, here in a dataset named salesforce. Deleted opportunities stay in the table with is_deleted set, so they are filtered out.

Google BigQuery · query
1select2  date_trunc(close_date, quarter) as quarter,3  count(*) as closed_opportunities,4  countif(is_won) as won,5  round(safe_divide(countif(is_won), count(*)), 3) as win_rate,6  sum(if(is_won, amount, 0)) as won_amount7from salesforce.opportunity8where is_closed9  and not is_deleted10group by quarter11order by quarter desc
Weld MCP server

Ask your agent.
It queries Google BigQuery 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 Google BigQuery.

Claude CodeOpus 5
>

How many account rows do we have in Google BigQuery?

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 Google BigQuery
>Ask about your Salesforce data
Under the hood

Things to know.
Before you sync Salesforce.

Reverse ETL

ELT vs. reverse ETL: Salesforce and Google BigQuery

ELT (Extract, Load, Transform) moves data from Salesforce into Google BigQuery 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 Google BigQuery 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 Google BigQuery.

Google BigQuery to Salesforce
API limits are shared across your org
Salesforce applies its rate limits to the whole account, so Weld competes with every other integration that calls the API. When usage reaches 80% of the limit, Weld slows its Salesforce syncs down so the others 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 reports. Google's transfer, by contrast, cannot sync deletes in incremental mode.
Not every object is incremental
Objects with a last modified or created date sync incrementally on those timestamps. Objects without one are reloaded in full each run, which matters for very large reference objects.
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, such as billing_city.
No history tables
Weld keeps the current version of each Salesforce record, not snapshots. If you need to report what a pipeline looked like on a past date, snapshot the tables you need in BigQuery on a schedule.
FAQ

Common questions.
About Salesforce to Google BigQuery.

Start syncing Salesforce to Google BigQuery.

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

SalesforceSource
WeldWeld
Google BigQueryWarehouse