ServicesAboutNotesContact Get in touch →
EN FR
Note

Fivetran dbt Packages Architecture

How Fivetran structures its 60+ dbt packages — the unified source-plus-transform model, cross-platform reporting bundles, and the installation pattern that avoids version conflicts.

Planted
dbtdata engineeringdata modeling

Fivetran is the largest non-dbt-Labs contributor to the dbt package ecosystem, maintaining over 100 packages with five full-time staff dedicated to the work. If you’re using Fivetran connectors, there’s almost certainly a package that transforms your raw data into usable models. Understanding how Fivetran structures its packages saves you from installation mistakes and helps you navigate the ecosystem correctly.

The Unified Package Model

Before 2024, Fivetran maintained separate packages for each connector: a _source package that handled base layer cleaning and a _transform package that built mart models on top. Installing Salesforce meant installing both dbt_salesforce_source and dbt_salesforce.

As of 2024-2025, Fivetran unified these into single packages per connector. fivetran/dbt_salesforce now handles both the base layer (what used to be _source) and the transformation layer (the marts). You install one package per connector instead of two.

If you’re on an older setup with separate _source and _transform packages, check whether a unified version exists. Migrating to the unified package is worthwhile — it reduces your packages.yml complexity and ensures the base and transform layers stay in sync.

The Data Flow Architecture

Fivetran packages follow a consistent architecture regardless of which connector you’re using:

Raw connector data (Fivetran-managed schema)
Unified dbt package (base + transform models)
Optional: Cross-platform bundle (combined schema across connectors)
Your custom dbt models (downstream)

Each unified package covers:

  • Base models — one model per source table, handling column renaming, type casting, _fivetran_deleted filtering, and null handling
  • Mart models — pre-joined, denormalized outputs designed for analytics use

Your custom models reference the package’s mart outputs using ref(). You don’t need to touch the base or intermediate layers unless you’re customizing behavior through var() overrides.

Cross-Platform Bundles

For ad platforms and social media, Fivetran publishes bundles that unify multiple connectors into a single normalized schema. The two main ones:

fivetran/ad_reporting — combines all 11 ad platforms (Facebook Ads, Google Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, Pinterest Ads, Snapchat Ads, Twitter Ads, Amazon Ads, Apple Search Ads, Reddit Ads) into a single unified schema. You get one ad_reporting__weekly_url_report model across all platforms instead of platform-specific mart models.

fivetran/social_media_reporting — combines Facebook Pages, Instagram Business, LinkedIn Pages, Twitter, and YouTube into unified social media models.

These bundles are the right choice when you need cross-platform reporting. They handle the normalization work that would otherwise fall on you: aligning metric names, handling null-filled columns from platforms that don’t support certain dimensions, and standardizing date granularity.

The Bundle Installation Rule

When using a bundle, do not also install the individual platform packages.

The bundle installs the individual packages as dependencies. If you explicitly declare them in your packages.yml, you’ll hit version conflicts:

# Wrong — causes version conflicts
packages:
- package: fivetran/ad_reporting
version: [">=2.0.0", "<3.0.0"]
- package: fivetran/google_ads # Don't do this
version: [">=0.10.0", "<1.0.0"]
- package: fivetran/facebook_ads # Don't do this either
version: [">=0.7.0", "<1.0.0"]
# Correct — let the bundle manage its dependencies
packages:
- package: fivetran/ad_reporting
version: [">=2.0.0", "<3.0.0"]

The bundle pins its dependencies to specific compatible versions. Adding them at the root level creates version constraint conflicts because your explicit version range may not overlap with what the bundle expects.

What’s Available by Category

Fivetran covers most major data sources you’re likely to encounter:

CategoryPackages
Ad platformsFacebook Ads, Google Ads, LinkedIn Ads, Microsoft Ads, TikTok Ads, Pinterest Ads, Snapchat Ads, Twitter Ads, Amazon Ads, Apple Search Ads, Reddit Ads
CRM & salesSalesforce, HubSpot, Dynamics 365
FinanceQuickBooks, NetSuite, Xero, Sage Intacct, Zuora, Stripe
Marketing automationMarketo, Klaviyo, Mailchimp, Pardot, Iterable
Product analyticsMixpanel, Amplitude, Segment
Dev toolsGitHub, Jira, Linear, PagerDuty, Zendesk
HRBambooHR, Greenhouse, Lever, Workday

All Fivetran packages are published under Apache 2.0 licenses and are Fusion-compatible (verified to work with dbt’s Rust-based engine). See the Hub for the full catalog under the fivetran/ namespace.

Connector-Specific Configuration

All Fivetran packages follow the same configuration pattern: var() for source schema/database overrides, and boolean vars for enabling/disabling model groups.

CRM packages have additional configuration worth knowing — see Fivetran dbt Packages for CRM for the Salesforce and HubSpot specifics, including pass-through columns for custom fields, multi-org support, and history mode integration.

For ad platform packages, see dbt Ad Reporting Patterns for working with the unified ad_reporting bundle output.

The dbt-Fivetran Merger Context

Fivetran’s five full-time package engineers are not a coincidence — the packages are a strategic differentiator. If you’re using Fivetran connectors, the packages are designed to make the raw connector output actually usable. They’re also what makes switching ingestion tools costly: migrating away from Fivetran means losing the package ecosystem, which represents a significant amount of transformation work already done.

The October 2025 merger between dbt Labs and Fivetran signals even tighter integration ahead. The packages are likely to become more deeply coupled with the connector platform over time.