> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcollate.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Ingest Domain from dbt | Domain Assignment Guide

> Ingest dbt domain metadata to assign tables to organizational domains for better data governance and discoverability.

# Ingest Domain from dbt

Collate reads domain assignments from your dbt `manifest.json` file and applies them to the matching tables in Collate. Domains are bounded contexts aligned with a business unit or function — they help organize data assets and make them easier to find.

<Tip>
  **Tip**: The domain must already exist in Collate before ingestion runs. If Collate can't find the specified domain, it logs a warning and continues ingestion without assigning the domain.
</Tip>

## How to Assign a Domain from dbt

Follow these steps to assign domain labels from dbt to your tables in Collate.

### Step 1: Create or Select a Domain in Collate

Make sure the domain you want to assign already exists in Collate before running ingestion.

For details on creating domains, see [Domains in Collate](/ai-2-0/how-to-guides/data-marketplace/domains).

Collate supports three domain types:

* **Source-aligned**: Domains closer to online services and transactional databases.
* **Aggregate**: Domains that collect and curate data from multiple source-aligned domains.
* **Consumer-aligned**: User-facing domains designed for business users.

### Step 2: Add the Domain to Your dbt `schema.yml`

Tell dbt which domain applies to each model by adding it to your schema configuration.

Open your `schema.yml` file and add the domain name under `model → meta → openmetadata → domain`. For more details on the dbt `meta` field, see the [dbt meta configuration reference](https://docs.getdbt.com/reference/resource-configs/meta).

```yaml theme={null}
models:
  - name: customers
    meta:
      openmetadata:
        domain: "Sales"
    description: This table has basic information about a customer, as well as some derived facts based on a customer's orders
    columns:
      - name: customer_id
        description: This is a unique identifier for a customer
        tests:
          - unique
          - not_null
```

After you save and run your dbt workflow, the generated `manifest.json` will include the domain assignment under `node_name → config → meta → openmetadata → domain`:

```json theme={null}
"model.jaffle_shop.customers": {
  "raw_sql": "sample_raw_sql",
  "compiled": true,
  "resource_type": "model",
  "depends_on": {},
  "database": "dev",
  "schema": "dbt_jaffle",
  "config": {
    "enabled": true,
    "alias": null,
    "meta": {
      "openmetadata": {
        "domain": "Sales"
      }
    }
  }
}
```

### Step 3: Verify

Confirm the domain appears in the table header after ingestion completes.

After ingestion runs, open the table details page in Collate — the assigned domain appears in the table header section.

## Validation and Error Handling

What Collate does when domain assignment doesn't go as expected.

| Scenario                    | Behavior                                                     |
| --------------------------- | ------------------------------------------------------------ |
| Domain not found in Collate | Warning logged, ingestion continues without assigning domain |
| Empty domain value          | Domain assignment skipped                                    |
| Invalid domain name format  | Warning logged, domain assignment skipped                    |
