The general ELT tool decision framework applies to Salesforce, but Salesforce adds connector-specific considerations. Salesforce’s API landscape, pricing disputes, and extraction mechanics affect data freshness, completeness, and cost.
The Salesforce Connector Landscape
| Tool | Typical Cost | Best For |
|---|---|---|
| Fivetran | $300-800/mo (small), $2K-8K/mo (mid), $20K+/mo (enterprise) | Teams prioritizing reliability with budget for it |
| Airbyte | Cloud: ~$15/M rows. Self-hosted: free + $500-3K/mo infra | Cost-sensitive teams with DevOps capability |
| dlt | Free (Apache 2.0) | Python-savvy teams wanting full control |
| Hevo | Free: 1M events/mo. Starter: $239/mo for 5M events | Small teams wanting no-code setup |
| Custom Python | Free (simple-salesforce library) | Teams with very specific extraction requirements |
Each tool interacts with Salesforce’s API differently, and those differences affect data freshness, completeness, and cost.
How Fivetran Handles Salesforce
Fivetran’s Salesforce connector polls using the SystemModStamp field for incremental syncs. Every Salesforce record has this field, and it updates whenever the record is modified through the UI, API, or automation. The connector queries for records where SystemModStamp > last_sync_time to find what changed.
This is reliable for direct field changes but has a blind spot: formula fields don’t update SystemModStamp. If a formula field recalculates, the sync misses it. Fivetran offers the dbt_salesforce_formula_utils package as a workaround, and the better long-term approach is recalculating critical formulas directly in dbt.
Fivetran also handles schema drift automatically — when your Salesforce admin adds a custom field, it appears in the next sync without configuration. For teams that don’t want to think about extraction, this is genuinely valuable.
The tradeoff is cost. The 2025 pricing changes raised costs 40-70% for many customers. MAR-based billing means property history tables (which generate high row volumes) can push you into expensive tiers fast. Salesforce’s field history tracking objects — OpportunityFieldHistory, AccountHistory, ContactHistory — are particularly expensive because every field change produces a new row.
Airbyte’s Salesforce Connector
Airbyte is the strongest alternative to Fivetran for Salesforce. Its connector supports CDC through the Streaming Events API on Enterprise-tier Salesforce orgs. This gives you near-real-time change data without polling, which is both more efficient and more timely than Fivetran’s SystemModStamp approach.
The catch: the Streaming Events API requires Enterprise edition Salesforce. If your org is on Professional or Essentials, you’re back to REST API polling, which Airbyte also supports but with less impressive latency.
Self-hosting Airbyte means Kubernetes management and infrastructure costs. But the 50-70% cost savings over Fivetran can justify the engineering investment, especially for larger Salesforce orgs where Fivetran’s MAR costs scale aggressively.
dlt for Salesforce
dlt is worth considering if your team is comfortable with Python. A companion dlt-dbt-salesforce package auto-generates base and mart models from the extracted data. This is a significant accelerator — you get both extraction and transformation scaffolding from a single tool chain.
The learning curve is steeper than Fivetran or Airbyte. You’re writing Python, managing deployment, and handling API pagination yourself (though dlt abstracts much of this). The payoff is complete control over extraction logic and zero licensing costs. For teams already using dlt for other sources, adding Salesforce is incremental work rather than a new tool to adopt.
Where dlt shines for Salesforce specifically: custom objects. Every Salesforce org has custom objects (Territory__c, Subscription__c, etc.) that managed connectors may or may not support well. With dlt, you write the extraction for exactly the objects you need, with exactly the fields you need, and nothing more.
The AppExchange Dispute
One thing to watch: Salesforce has told Fivetran it must route connections through AppExchange. Fivetran’s CEO declined, calling it a “commercial decision.” This dispute could affect future pricing and access for Fivetran’s Salesforce connector.
The practical implication for teams evaluating tools today: if you’re signing a multi-year Fivetran contract primarily for Salesforce extraction, factor in the risk that the connector’s terms could change. This isn’t a reason to avoid Fivetran, but it is a reason to have a contingency plan — and to keep your dbt models structured so that swapping the extraction tool only requires changing the source layer.
How to Decide
Start with the general decision framework, then apply Salesforce-specific filters:
-
What Salesforce edition do you have? Enterprise or higher unlocks Airbyte’s CDC connector. Professional limits you to REST API polling, where Fivetran’s polish matters more.
-
How many custom objects do you need? If your org is heavily customized, dlt’s flexibility for custom object extraction may outweigh managed tools’ convenience for standard objects.
-
How much field history do you track? Heavy use of field history tracking objects inflates MAR counts significantly under Fivetran’s pricing. If you’re tracking 10+ fields on Opportunity and Account, run the MAR math carefully.
-
Do you already have a dbt package investment? If you’re using Fivetran’s dbt_salesforce package, switching extraction tools means rebuilding your source layer. The package handles base models, pass-through columns, and history mode — replacing that is real work.
-
What’s your team’s Python proficiency? dlt requires it. Fivetran doesn’t. This isn’t a minor consideration — it determines whether your data engineers or your analytics engineers can maintain the pipeline.
Default choices by profile: Fivetran for teams prioritizing operational simplicity and able to absorb the cost; Airbyte for Enterprise Salesforce orgs with DevOps capacity; dlt for Python-comfortable teams that are cost-sensitive. Hevo suits very small teams wanting a low-cost managed option; custom Python suits teams with extraction requirements that no connector handles correctly.