Skip to main content
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 in server/core/:

What You Must Write (The Cost of a New Connector)

No file inside 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

The module_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 directory server/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:
Create server/modules/mailgun/dbt/staging/schema.yml with mandatory grain_unique test:

Step 5 — Test Fixtures & 4-Layer Conformance Suite

Populate fixture files in server/modules/mailgun/tests/fixtures/:
  • golden_pull.json: Raw Mailgun API JSON payload.
  • expected_facts.json: Expected output of transform(golden_pull.json).
Execute the repository conformance suite:

Final Conformance Checklist

  • manifest.json schema version 1.2 valid (conformance_layer_1 pass).
  • connector.py implements pull() and manifest-driven transform() (no hardcoded field names).
  • QUALIFY supersede staging model created with mandatory stg_mailgun_daily_grain_unique test.
  • Fixture files golden_pull.json and expected_facts.json verified (conformance_layer_4 pass).
  • 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.