Skip to main content

Fivetran: Automated Data Movement & ELT Pipeline Guide

Fivetran is the leading fully managed ELT platform that moves data from 500+ sources into your data warehouse automatically — handling schema changes, API updates, and incremental sync with zero maintenance on your end.

✓ 500+ managed connectors ✓ Zero-maintenance schema sync ✓ CDC (log-based replication) ✓ Native dbt integration

What is Fivetran?

Fivetran is a fully managed ELT (Extract, Load, Transform) data movement platform. It provides pre-built, pre-maintained connectors for hundreds of data sources — SaaS applications (Salesforce, HubSpot, Stripe, Google Ads), databases (Postgres, MySQL, SQL Server, Oracle), cloud storage (S3, GCS), and event platforms (Kafka, Segment). Fivetran handles all the infrastructure and maintenance: API authentication, pagination, rate limiting, schema evolution, incremental sync logic, and error recovery.

The ELT model loads raw, normalized data into your data warehouse first — Snowflake, BigQuery, Redshift, Databricks, or others — and transformations are handled separately with dbt or SQL. This gives your team access to raw data immediately and keeps transformations auditable in version control. Fivetran adds metadata columns to every synced table: _fivetran_synced (last sync timestamp) and _fivetran_deleted (soft delete flag).

Connector Setup via API

# Fivetran Python SDK — manage connectors programmatically
# pip install fivetran-connector-sdk requests

import requests

FIVETRAN_API_KEY = "your_api_key"
FIVETRAN_API_SECRET = "your_api_secret"
BASE_URL = "https://api.fivetran.com/v1"

auth = (FIVETRAN_API_KEY, FIVETRAN_API_SECRET)

# Create a Postgres source connector
connector_payload = {
    "service": "postgres",
    "group_id": "your_destination_group_id",
    "config": {
        "host": "db.example.com",
        "port": 5432,
        "database": "production",
        "user": "fivetran_reader",
        "password": "secure_password",
        "schema": "public",
        "update_method": "WAL",            # logical replication (CDC)
        "publication_name": "fivetran_pub",
    },
}

resp = requests.post(
    f"{BASE_URL}/connectors",
    auth=auth,
    json=connector_payload,
)
connector_id = resp.json()["data"]["id"]
print(f"Connector created: {connector_id}")

# Trigger a manual sync
requests.post(f"{BASE_URL}/connectors/{connector_id}/force", auth=auth)

# Check sync status
status = requests.get(
    f"{BASE_URL}/connectors/{connector_id}",
    auth=auth
).json()["data"]["status"]
print(f"Sync status: {status['sync_state']}")

dbt Integration & Webhook Trigger

# Fivetran + dbt Cloud integration — trigger dbt after sync
# In Fivetran Dashboard: Transformations > dbt Cloud

# Or trigger via dbt Cloud API after Fivetran webhook
import requests

DBT_CLOUD_TOKEN = "your_dbt_cloud_token"
DBT_ACCOUNT_ID = "12345"
DBT_JOB_ID = "67890"

def trigger_dbt_job(event_data):
    """Called from a webhook receiver after Fivetran sync completes."""
    if event_data["event_type"] != "sync_end":
        return

    resp = requests.post(
        f"https://cloud.getdbt.com/api/v2/accounts/{DBT_ACCOUNT_ID}/jobs/{DBT_JOB_ID}/run/",
        headers={
            "Authorization": f"Token {DBT_CLOUD_TOKEN}",
            "Content-Type": "application/json",
        },
        json={"cause": f"Triggered by Fivetran sync {event_data['sync_id']}"},
    )
    run_id = resp.json()["data"]["id"]
    print(f"dbt job triggered, run_id={run_id}")

Built-in Transformations with dbt Core

# Fivetran Transformations — built-in dbt Core transformations
# Configure directly in Fivetran Dashboard > Transformations

# Fivetran runs dbt Core models after each sync.
# Example dbt model in Fivetran's transformation layer:

-- models/fivetran_staging/stg_stripe_charges.sql
WITH source AS (
    SELECT * FROM {{ source('stripe', 'charge') }}
),
cleaned AS (
    SELECT
        id                  AS charge_id,
        amount / 100.0      AS amount_usd,
        currency,
        status,
        created             AS charged_at,
        customer            AS customer_id,
        metadata:order_id   AS order_id     -- JSON field extraction
    FROM source
    WHERE _fivetran_deleted = FALSE          -- exclude soft-deleted rows
)
SELECT * FROM cleaned;

-- Fivetran adds _fivetran_synced and _fivetran_deleted columns
-- to every table automatically — always filter on _fivetran_deleted

Fivetran vs Stitch vs Airbyte vs Custom ETL

Feature Fivetran Stitch Airbyte Custom ETL
Hosting Fully managed SaaS Fully managed SaaS Open-source / cloud Self-built
Connectors 500+ (broadest) ~200 350+ (growing fast) Whatever you build
Pricing model MAR-based (expensive) Row-based (affordable) Free (self-hosted) Engineering time
CDC support Yes (WAL, binlog) Yes (limited) Yes (Debezium) DIY
Schema management Automatic Automatic Automatic Manual
Best for Enterprise, reliability Startups, budget Cost-sensitive teams Proprietary sources

Frequently Asked Questions

What is Fivetran and how does it differ from traditional ETL?▼

Fivetran is a fully managed ELT (Extract, Load, Transform) data movement service. Unlike traditional ETL tools where you build and maintain extraction code, Fivetran provides hundreds of pre-built, pre-maintained connectors for SaaS tools, databases, and cloud services. You configure a source and destination in minutes — no code required. Fivetran handles schema drift, API versioning, incremental sync, and error recovery automatically. The ELT approach loads raw data into the warehouse first, then transforms it with dbt or SQL — giving analysts access to raw data and making transformations auditable.

What is the difference between Normal, History Mode, and Fivetran-managed connectors?▼

Normal mode (Standard sync) replicates current data — each sync updates changed rows and inserts new ones. This is the default and most efficient mode. History Mode preserves every version of every row by adding a valid_from / valid_to timestamp pattern (SCD Type 2), enabling point-in-time analysis of how data changed over time. It uses more storage but supports time-travel queries. Fivetran also distinguishes between Fivetran-managed connectors (fully maintained by Fivetran with automatic updates) and custom connectors (built with the Connector SDK for proprietary or long-tail sources).

How does Fivetran handle schema changes in the source?▼

Fivetran detects schema changes in the source (new columns, renamed columns, deleted columns, type changes) during each sync and propagates them to the destination automatically. New columns are added to the destination table. Deleted columns are not dropped — they remain with NULL values going forward, preserving historical data. Type changes trigger a column rename and new column to avoid data corruption. Fivetran logs all schema changes in an audit table (_fivetran_log). You can configure alerts for schema changes and optionally block syncs pending manual review.

What is Fivetran's pricing model?▼

Fivetran pricing is primarily based on Monthly Active Rows (MAR) — the number of distinct rows synced or updated in a given month. Each connector tier (Free, Starter, Standard, Enterprise) has different MAR pricing. High-volume connectors like Salesforce or Google Ads can generate millions of MAR. Fivetran also offers a Free tier with limited connectors and MAR, and an Enterprise tier with volume discounts, private deployment, and advanced security features. Estimate costs carefully before going to production — CDC (log-based replication) typically has lower MAR than full table syncs because only changed rows are counted.

What is the difference between Fivetran, Stitch, and Airbyte?▼

Fivetran is the premium managed service — broadest connector catalog, most reliable, best enterprise support, highest price. It is the default choice for enterprises prioritizing reliability and coverage over cost. Stitch (by Talend) is a simpler, more affordable managed ELT service with fewer connectors but a lower price point, good for startups and smaller teams. Airbyte is open-source and free to self-host — maximum flexibility and a large growing connector catalog, but requires infrastructure to run. For teams with engineering capacity, Airbyte's open-source model offers significant cost savings at scale versus Fivetran.

How do I set up Fivetran for a Postgres source with CDC?▼

To use Fivetran with Postgres CDC (Change Data Capture via logical replication): set wal_level=logical in postgresql.conf, create a dedicated replication user with REPLICATION privilege, grant SELECT on all tables to be synced, create a replication publication (CREATE PUBLICATION fivetran_pub FOR ALL TABLES), and configure the connector with update_method=WAL and the publication name. CDC is the preferred update method for production Postgres sources — it captures every INSERT/UPDATE/DELETE in near-real-time with minimal load on the source database, unlike full-table polling.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →