Canonical reference: This guide describes the extensibility contract as it is actually implemented in the repository. Read it in full before creating a single file.
Overview
What You Get for Free (The Shared Base)
Any module that respects the contract inherits the following mechanisms without writing a single line inserver/core/:
What You Must Write (The Cost of a New Connector)
server/core/ may be modified (AD-2). Add the module’s staging path to dbt/dbt_project.yml under model-paths.
Choosing the Landing Kind
Themodule_kind field in manifest.json declares the structure of rows produced by the module:
Step-by-Step Walkthrough: Building a Mailgun Connector
This section demonstrates initializing and implementing a new connector module step-by-step using Mailgun (server/modules/mailgun/) as a concrete example.
Step 1 — Scaffolding the Directory Structure
Create the target directoryserver/modules/mailgun/:
Step 2 — Manifest Declaration (server/modules/mailgun/manifest.json)
Declare schema version "1.2", metadata, metric mappings, and source_capabilities:
Step 3 — Implementation (server/modules/mailgun/connector.py)
Implement pull() to fetch Mailgun Total Stats API (/v3/{domain}/stats/total) and manifest-driven transform():
Step 4 — Staging dbt Layer (stg_mailgun_daily.sql & schema.yml)
Create server/modules/mailgun/dbt/staging/stg_mailgun_daily.sql:
server/modules/mailgun/dbt/staging/schema.yml with mandatory grain_unique test:
Step 5 — Test Fixtures & 4-Layer Conformance Suite
Populate fixture files inserver/modules/mailgun/tests/fixtures/:
golden_pull.json: Raw Mailgun API JSON payload.expected_facts.json: Expected output oftransform(golden_pull.json).
Final Conformance Checklist
-
manifest.jsonschema version1.2valid (conformance_layer_1pass). -
connector.pyimplementspull()and manifest-driventransform()(no hardcoded field names). -
QUALIFYsupersede staging model created with mandatorystg_mailgun_daily_grain_uniquetest. - Fixture files
golden_pull.jsonandexpected_facts.jsonverified (conformance_layer_4pass). - All 4 conformance layers pass cleanly before merging.
Next Steps & Cross-References
Universal Datastreams
Learn how datastreams manage ingestion, mappings, and versioning.
Semantic Layer
Understand canonical fact surfaces and dbt semantic ratio views.
Platform Constraints
Review multi-tenant isolation rules and security invariants.
Quickstart Guide
Test your new connector in the local developer sandbox.

