Skip to content
adapters.io

Salesforce to BigQuery integration and connector tools compared, with the native transfer cost and the currency field it lands as FLOAT

Eleven ways to get Salesforce into BigQuery, starting with Google's own. Its Data Transfer Service connector is generally available, billed at $0.06 per slot-hour, and Google puts the upper bound at about $1.20 per hour of run time. It also maps Salesforce currency to FLOAT, never applies deletes on incremental runs, and its setup guide requires a connected app that Salesforce stopped letting customers create by default in Spring '26. All of it read from Google and Salesforce documentation on 21 September 2026.

The live demo needs no card, and Starter is $49 a month.

Field mapping auto-plugged · tap a port to rewire

5 sample records ready

Vendor documentation read 21 September 2026

Which Salesforce to BigQuery connector should you use?

Start with Google's own BigQuery Data Transfer Service connector if three things are true: your Salesforce use is Sales Cloud, hourly or 15 minute freshness is enough, and you can reuse or get approval for a Salesforce connected app. It runs inside the Google Cloud project you already pay for, at up to about $1.20 per hour of transfer run time. Pick something else if you need deletes applied, exact NUMERIC money columns without a staging view, objects outside Sales Cloud, or the freedom to add objects later without a new backfill. If you already license Salesforce Data Cloud, share it with BigQuery directly and skip the pipeline entirely.

For the vendor landscape on the Salesforce side, see Salesforce integration tools. For loading every other source into the same warehouse, see BigQuery ETL tools, and if your team is weighing Snowflake instead, the same route is compared on Salesforce to Snowflake integration tools.

What Google's Salesforce connector actually does, and what a buyer assumes it does

Google documents its connector honestly. The limits are all there, spread across a setup guide, an introduction page and a pricing page, and almost nobody reads the three together. We did, on 21 September 2026, and put each limit next to what it costs a revenue team. The last column is what we would ship.

What is at stake What Google's docs say Why it matters to a buyer What we would ship
Which Salesforce it reads The connector "only supports transfers from Salesforce Sales Cloud", through the Bulk API V1, and "only supports fields included in Salesforce Bulk API V1 version 64.0". Service Cloud cases, Marketing Cloud and industry clouds are out of scope for this connector. Google offers a separate Salesforce Marketing Cloud connector, but anything beyond Sales Cloud objects needs another route. Fields added in later API versions are not promised either. List every object you need before choosing
Objects it skips Objects with binary fields are not transferred: Attachment, ContentVersion, Document, StaticResource, Scontrol, EmailCapture and MailMergeTemplate. Contracts, signed quotes and files attached to opportunities never arrive. Usually fine for revenue reporting. A problem when the project was funded to answer a question about documents. Keep files in Salesforce, land only metadata
Deletes "Incremental transfers cannot sync delete operations in the source table." Deleted opportunities stay in BigQuery forever on an incremental transfer. Pipeline totals drift above what Salesforce reports while every run shows success. A full transfer removes them, at the price of reloading every row every time. Run a weekly full reload beside the incremental one
Money columns The documented type table maps Salesforce currency to FLOAT and percent to FLOAT. BigQuery has an exact NUMERIC type and the connector does not use it. Summing millions of FLOAT amounts produces totals that miss the ledger by fractions of a cent, which is enough to fail a reconciliation that finance runs to the penny. Cast to NUMERIC in one staging view
What detects a change Upsert mode needs a TIMESTAMP watermark column, and Google recommends SystemModstamp or LastModifiedDate. Anything that changes a value without moving that timestamp is invisible. Fivetran documents the classic case: formula field updates do not necessarily update SystemModstamp. Cross-object formulas and rollups go stale with no error. Recompute formulas in BigQuery from base fields
Changing your mind later After the first incremental run you "cannot update objects in the asset list", cannot change the write mode, and cannot change the watermark column or primary key. Adding one object in month three means a new transfer configuration and a fresh backfill. Scoping mistakes are expensive here in a way they are not with most pipeline tools. Group objects by how likely they are to change
Runs that overlap A configuration runs one transfer at a time. If the next run starts before the last finishes, "only the first data transfer completes" and the overlapping ones are skipped. A 15 minute schedule on a table whose backfill takes 40 minutes silently skips runs. Nothing fails, so no alert fires. Your freshness is worse than your schedule says. Size the interval to the slowest run, not the average
Renamed and dropped fields A renamed Salesforce field leaves the old column in place and adds a new one. A deleted field "remains in the destination BigQuery table" and fills with nulls. Type changes outside ALTER COLUMN rules make the transfer fail. Your table accumulates dead columns every time an admin tidies up Salesforce, and dashboards reading the old name keep working on data that stopped changing. The failure you do see is a type change, usually on a field someone converted from text to picklist. Alert on columns that go all-null
Authentication Google's setup guide says "You must create a Salesforce Connected App" with JWT-based access tokens enabled. Salesforce disabled connected app creation by default in Spring '26, in the UI and in the Metadata API, and says future releases will not let Support enable it either. New integrations are meant to be External Client Apps. Google's page, updated 18 September 2026, does not mention them. Check for a reusable connected app on day one

The last row deserves a second look because it is the only one that can stop a project before the first byte moves. Google's guide was updated on 18 September 2026 and still tells you to create a connected app. Salesforce's Spring '26 release made connected app creation unavailable by default, in the setup screens and in the Metadata API, and Salesforce says that in future releases even Support will not be able to turn it back on. We are not going to guess whether the transfer accepts an External Client App, because neither vendor says so. Ask Google in writing. The same "read the vendor's own limits together" approach is applied to the other warehouse on Snowflake ETL tools.

Salesforce data types in BigQuery, and what each one costs you

Latency and price get compared on every vendor page. The schema that lands rarely does, and it decides how much modelling work follows. This is Google's documented mapping for its Salesforce connector, with the consequence for a US revenue or finance team in the right-hand column.

Salesforce type BigQuery type What it means for your reports
currency FLOAT Inexact cents. Totals miss the ledger by fractions of a cent.
percent FLOAT Same rounding issue on discount and probability math.
datetime TIMESTAMP Fine. Stored in UTC, so convert for US time zone reports.
date DATE Fine. Close dates survive as dates.
picklist STRING The API value lands, not the label your users see.
multipicklist STRING One semicolon-joined string. Split it before you can count it.
reference STRING A lookup is an ID only. Join it back yourself.
address STRING The compound field as one string, not street, city and state.
location STRING Compound geolocation as text. The lat and long parts land as FLOAT.
id STRING Keep it. It is your only safe join key back to Salesforce.

The first two rows are the ones to fix on day one. A FLOAT column is fine for a chart and wrong for a number that finance compares against the general ledger, where a bookings total that differs by three cents is treated as a broken pipeline. With Adapters you choose the target type when you map the field, so Opportunity.Amount can land as NUMERIC from the first run. The same question about exact money types comes up on every finance source, and we worked through it for the accounting side on QuickBooks integration tools.

The four routes from Salesforce to BigQuery

"Salesforce to BigQuery" is four different products with different owners and different bills. One of them requires a Salesforce Data Cloud license, which rules it in or out before any feature comparison.

Route Owner How it moves data Who it is for What to watch
BigQuery Data Transfer Service Google Scheduled Bulk API V1 extract of Sales Cloud objects, full or incremental, into BigQuery tables Teams on Google Cloud whose Salesforce use is Sales Cloud and whose reporting runs hourly or slower No deletes on incremental, currency lands as FLOAT, asset list frozen after the first incremental run.
Data Cloud sharing with BigQuery Salesforce and Google Data Cloud data is shared with BigQuery without a copy pipeline, in either direction Organizations that already license Salesforce Data Cloud The entry ticket is Data Cloud itself, a separately licensed Salesforce product.
Third-party ELT Fivetran, Airbyte, Stitch and others Extracts through the Salesforce APIs and loads BigQuery with the vendor's own schema handling Teams with several sources who want one pipeline vendor for all of them Each vendor treats deletes, formula fields and currency types differently. Ask all three.
Bulk API export plus bq load You Scheduled Bulk API query to CSV, staged in Cloud Storage, loaded with a batch load job A handful of objects on a daily cadence, or a one-time analysis Cheapest by far and you own the incremental logic, the retries and the schema.

Salesforce to BigQuery connectors and integration tools compared

Billing units rather than price tags, because most vendors here quote or meter and any figure we printed would be stale within a quarter. Google is the exception: its slot-hour rate is public, so it is on this page with the date we read it. Where a tool is the wrong fit, the last column says so.

Tool Approach Best for Billing unit What to watch
BigQuery Data Transfer Service Google's first-party Salesforce connector, Bulk API V1 Sales Cloud reporting on a 15 minute or slower schedule Slot-hours of transfer compute No deletes on incremental, FLOAT currency, 10 assets per configuration.
Data Cloud sharing Shared access between Data Cloud and BigQuery Existing Data Cloud customers wanting fresh data both ways Salesforce Data Cloud licensing plus BigQuery compute Does not exist for you without a Data Cloud contract.
Fivetran Fully managed ELT with schema drift handling Zero pipeline maintenance across many sources Monthly active rows The initial history load is the biggest active-row month you will have.
Airbyte Open source connectors, self-hosted or Airbyte Cloud Engineering teams comfortable owning the pipeline Credits per million API rows, or capacity Full refresh syncs charge every row, every time.
Stitch Managed replication on the Singer specification Plain object replication on a predictable budget Rows loaded per month Less control over schema when Salesforce changes underneath you.
Hevo Data No-code managed pipelines Smaller teams wanting a managed pipeline Events loaded per month Event metering spikes during the initial load.
Estuary Flow Streaming pipelines with a change log Low latency across several sources Data volume and connectors Salesforce is still polled by API, so it sets your latency floor.
Windsor.ai Marketing-focused connectors into BigQuery Attribution work joining CRM to ad platforms Subscription tiers Built around marketing reporting rather than full CRM replication.
Coupler.io Scheduled imports into sheets and warehouses Light scheduled pulls of a few objects Subscription tiers A report-refresh tool more than a replication pipeline.
Bulk API plus bq load Scripted export, Cloud Storage, batch load job One-time analysis or a few objects daily Your engineering time plus storage You own incremental logic, deletes and retries.
Adapters Field mapping you set once, scheduled incremental sync Teams who want types and mapping explicit and a flat bill Flat tiers by synced records, from $49 a month, no overage fees Not a Salesforce archive, no sub-minute streaming, no in-warehouse modelling.

How these billing units compare on the same workload, including what Google's slot-hours come to for a 15 minute schedule, is worked through line by line in Salesforce to BigQuery connector pricing. For the counting rules behind every meter on this list, see data integration pricing.

Six facts worth knowing before you sign anything

$0.06

Per slot-hour for the Data Transfer Service in us-central1 on demand. One-year commitments bring it to $0.054 and three-year to $0.048.

BigQuery pricing, Data Transfer Service section, read 21 September 2026

Up to $1.20

Google's own planning upper bound per hour of transfer run time, from a guideline of up to 20 slot-hours per run hour. Actual use may differ.

BigQuery pricing, Data Transfer Service section, read 21 September 2026

15 minutes

The minimum interval between recurring Salesforce transfers. The default is 24 hours.

Load Salesforce data into BigQuery, read 21 September 2026

FLOAT

What Salesforce currency and percent fields become. BigQuery's exact NUMERIC type is not used by the connector.

Introduction to Salesforce data transfers, read 21 September 2026

10 assets

Google's recommended maximum per transfer configuration, with no more than 10 simultaneous runs across all configurations.

Load Salesforce data into BigQuery, read 21 September 2026

Spring '26

The Salesforce release that disabled connected app creation by default. Google's setup guide still requires one.

Salesforce Help and Google Cloud documentation, read 21 September 2026

Eight ways this pipeline goes wrong while every run shows success

None of these raise an error. The transfer succeeds, the table grows, and a number in a board deck is wrong. These are the checks we would run on any existing Salesforce to BigQuery pipeline before trusting it.

The failure What you see What is actually happening
A pipeline total that only grows Every run succeeds and BigQuery shows more open pipeline than Salesforce does. Incremental transfers never apply deletes. Every opportunity deleted since go-live is still in the table. The gap grows slowly enough to look like business growth.
Revenue off by fractions of a cent The quarterly bookings total differs from the finance system by a few cents. Currency lands as FLOAT. Summed over enough rows, binary floating point rounding shows up in the last digit, and finance stops trusting the warehouse number entirely.
Formula values frozen in time A formula column matches Salesforce at go-live, then slowly stops matching. The formula depends on another record. When that record changes, this record's SystemModstamp does not move, so the incremental watermark never selects it again.
Runs that quietly never happened The schedule says every 15 minutes. The data is an hour old. A run that starts while the previous one is still going is skipped, not queued. No failure is recorded, so freshness monitoring on run status sees nothing wrong.
Duplicate rows after a retry Counts jump after an outage and never come back down. Append write mode inserts without checking for existing records, and Google warns it "can potentially cause data duplication". Upsert needs a primary key you choose correctly the first time.
Dashboards reading a dead column A chart still renders, and its numbers stopped changing weeks ago. A Salesforce admin renamed a field. The old column stays in BigQuery and fills with nothing new, while the renamed field lands as a brand-new column nobody queries.
An object that was never in scope The contract question cannot be answered, though the sync is healthy. Objects with binary fields, including Attachment, ContentVersion and Document, are excluded from the connector outright. They were never going to arrive.
API allocation used up by the warehouse Another Salesforce integration starts failing on busy days. Bulk API calls draw on the same daily Salesforce API allocation as every other integration in the org. A tight schedule across 30 objects competes with your CPQ, marketing and support tools.

The last row is Salesforce's, not Google's. Every Bulk API call counts against the org's daily API allocation, shared with every other connected tool. The allocation math, and why a separate integration user matters, is on the Salesforce integration user license.

Six steps that decide whether this project works

Step 1

Check the connected app before anything else

Google's connector needs a Salesforce connected app with JWT-based access tokens. Since Spring '26 Salesforce blocks creating new ones by default. Ask your Salesforce admin whether an existing connected app can be reused, or open a case with Salesforce Support to enable creation. This takes a week in some orgs, so start it the day the project is approved.

Step 2

Inventory objects, then group them into configurations

Google recommends no more than 10 assets per configuration, and the asset list is frozen after the first incremental run. So group objects by stability: core objects that will never leave the model in one configuration, experimental or custom objects in another. That way adding something later means one small new backfill rather than rebuilding everything.

Step 3

Pick write modes deliberately

Use upsert with the Id field as primary key and SystemModstamp as the watermark for objects that change. Use append with CreatedDate only for true event-style objects that never change after insert. Append on a mutable object duplicates rows on every edit, and Google says so in its own documentation.

Step 4

Fix money types in one staging view

Create a view per object that casts every currency and percent column from FLOAT to NUMERIC and rounds to two decimals, then point every dashboard at the views rather than the raw tables. It takes an hour on day one and saves a reconciliation argument with finance in month two.

Step 5

Schedule a full reload for deletes

Because incremental runs never apply deletes, run a separate full transfer of the key objects on a slower schedule, weekly for most teams, and rebuild the reporting tables from it. Or filter IsDeleted in every model and accept that hard-deleted records vanish from Salesforce but not from BigQuery.

Step 6

Reconcile on values, not row counts

Per object, compare record counts with deleted records excluded, the sum of every currency field, and a count grouped by stage. Then check every formula column against Salesforce for a sample of recently changed parent records. Row counts reconcile perfectly on a table full of stale formulas.

Why US teams move Salesforce into BigQuery

Revenue reporting beyond Salesforce reports

Multi-year pipeline trends, cohort analysis and win-rate by segment need SQL against the full history, not another dashboard component with a row limit.

Joining CRM to Google Ads and GA4

The Google Ads and GA4 transfers into BigQuery carry no Data Transfer Service charge. Salesforce is usually the last piece needed for closed-loop attribution from click to closed-won.

Board and investor metrics

ARR, net retention and bookings built from Salesforce and billing data in one warehouse, where finance can audit the logic instead of trusting an exported spreadsheet.

Forecasting and lead scoring models

Vertex AI and BigQuery ML work where the data lives. The opportunity history has to be there first, with deletes and stale formulas handled.

Consolidating several Salesforce orgs

After an acquisition, BigQuery is often the only place two orgs can be compared. Salesforce record IDs are unique only within an org, so tag every row with its source org.

Keeping history Salesforce does not

Field history tracking is limited per object. A daily snapshot table in BigQuery keeps every stage an opportunity passed through, cheaply.

Five jobs where you should not pick us

A comparison that never says the competition wins is an advert. These are the cases where something else on this page is the right answer.

  • A one-time extract of a few objects for a single analysis. Export with the Bulk API and load the file. It costs less than any subscription, ours included.
  • You already license Salesforce Data Cloud. Sharing Data Cloud data with BigQuery directly is the route both vendors built for you, and no third party improves on it.
  • Sales Cloud objects only, hourly or slower, and you are happy to cast currency and schedule a weekly full reload. Google's own connector does that job inside your existing bill.
  • Very high volumes with engineers who want to own the pipeline. Self-hosted Airbyte moves the cost from a license to your servers and on-call time, and at scale that can be the cheaper trade.
  • Full Salesforce archival with every version of every record kept for compliance. That is a specialist product category and we are not in it.

Four questions to ask any vendor on this list

Question 01

What type does a Salesforce currency field become?

The fastest test of whether a vendor has run this route. Google's connector lands it as FLOAT. Ask for NUMERIC, or for the ability to choose, and ask to see a sample table. A vendor who has to check has not had a finance team complain yet.

Question 02

What happens to a record I delete in Salesforce?

Removed, flagged with IsDeleted, or left alone. Google's incremental mode leaves it alone. Ask which, and ask which column carries the flag, before you build a single pipeline report on top.

Question 03

How do you keep formula fields current?

Formula changes that depend on another record do not move SystemModstamp. A vendor can re-read formulas on a schedule, recompute them in the warehouse, or ignore the problem. Only the first two are answers.

Question 04

Which Salesforce authentication do you use today?

After Spring '26, new connected apps are off by default and External Client Apps are the path forward. Ask whether the vendor supports External Client Apps now, and what happens to your pipeline if Salesforce retires connected apps entirely.

Questions buyers ask about Salesforce to BigQuery integration

How do I connect Salesforce to BigQuery?
Something has to sit in between, because BigQuery cannot query Salesforce directly. The options are Google's own BigQuery Data Transfer Service connector for Salesforce, a managed pipeline such as Fivetran or Airbyte, Salesforce Data Cloud sharing with BigQuery if you already license Data Cloud, or a scheduled Bulk API export loaded with bq load.
Does BigQuery have a native Salesforce connector?
Yes. The BigQuery Data Transfer Service has a Salesforce connector that Google lists as generally available and paid. It reads Sales Cloud through the Salesforce Bulk API V1 on a schedule, with a 15 minute minimum interval and a 24 hour default. It covers Sales Cloud only and skips objects with binary fields such as Attachment and ContentVersion.
How much does the BigQuery Salesforce connector cost?
Google bills it in slot-hours, at $0.06 per slot-hour on demand in us-central1, and offers a planning guideline of up to 20 slot-hours for each hour a transfer runs. That puts the upper bound near $1.20 per hour of transfer run time. You also pay BigQuery storage and the queries you run afterwards, which are billed separately.
What is the best Salesforce to BigQuery connector?
For Sales Cloud objects on a schedule of 15 minutes or slower, Google's own connector is the sensible starting point because it lives inside the project you already pay for. It stops being the answer when you need hard deletes, exact currency columns, several Salesforce clouds, or a new Salesforce integration app, which is where Fivetran, Airbyte or an explicit mapping tool earn their fee.
Does the Salesforce to BigQuery transfer sync deletes?
Not in incremental mode. Google states plainly that "incremental transfers cannot sync delete operations in the source table". A record deleted in Salesforce stays in your BigQuery table. The only built-in way to drop it is a full transfer, which reloads everything on every run and costs run time accordingly.
How do I send Salesforce data to BigQuery in real time?
You cannot with the native connector: its minimum interval is 15 minutes. Near real-time needs either Salesforce Data Cloud sharing with BigQuery, which requires a Data Cloud license, or a streaming pipeline built on Salesforce Change Data Capture events. For most revenue reporting, an hourly or 15 minute schedule is plenty and far cheaper.
Why are Salesforce currency fields FLOAT in BigQuery?
Because that is how Google's connector maps them. Its documented type table sends Salesforce currency and percent fields to FLOAT, not NUMERIC. Floating point cannot hold most cents exactly, so large sums drift by fractions of a cent. Cast to NUMERIC in a staging view, or use a tool that lets you choose the target type.
Can I load Salesforce formula fields into BigQuery?
You can extract the values, but keeping them current is the problem. Fivetran's documentation notes that updates to formula fields do not necessarily move a record's SystemModstamp, and SystemModstamp is exactly what an incremental transfer watches. So a formula that depends on another record can change in Salesforce and never be picked up by an incremental sync.
Do I need a Salesforce connected app for the BigQuery transfer?
Google's setup guide says you must create one. Salesforce, meanwhile, disabled connected app creation by default in Spring '26 and now points new integrations at External Client Apps. If your org has no existing connected app you can reuse, ask Salesforce Support to enable creation, and get confirmation from Google before you plan around an External Client App.
How many Salesforce objects can one BigQuery transfer include?
Google recommends no more than 10 assets per transfer configuration and no more than 10 simultaneous transfer runs across all configurations, because of Salesforce processing limits. A typical CRM model with 30 objects therefore means at least three transfer configurations, each with its own schedule to stagger.

For moving warehouse results back into Salesforce, see reverse ETL tools, and for the whole market in one place, the best data integration tools.

Land Salesforce in BigQuery with money columns that add up

Map each field once, choose NUMERIC for amounts, run the backfill, then sync incrementally with retries, alerts and per-record logs. Flat plans from $49 a month, no overage fees.

The live demo needs no card, and Starter is $49 a month.

Get started