# Brink mapping for `curated.loyalty_customers`

## Main staging sources

- `staging.brink_sales2_orders`

## Mapping groups

- Business property mappings describe how Brink customer loyalty content is mapped or could be mapped into curated business fields.
- Technical and ETL property mappings describe lineage, source reconciliation, tenant scoping, and ingestion metadata.

## Business property mappings

| Curated Column | Brink Staging Table | Brink Property Path | Current mapping | Status | Notes |
|---|---|---|---|---|---|
| `customer_number` | `staging.brink_sales2_orders` | `customer_id` | `NULL` | `Not mapped` | Brink exposes a customer GUID on orders, not a dedicated loyalty customer number. |
| `id` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty-customer integer ID is documented in Brink staging. |
| `first_name` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty first name is documented. |
| `last_name` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty last name is documented. |
| `company` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty company field is documented. |
| `points_balance` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty points balance is documented in Brink staging. |
| `program_name` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty program metadata is documented. |
| `member_status` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty membership status is documented. |
| `tier_name` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty tier data is documented. |
| `enrolled_at_utc` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty enrollment timestamp is documented. |
| `last_activity_at_utc` | `N/A` | `N/A` | `NULL` | `Not mapped` | No loyalty activity timestamp is documented. |

## Technical and ETL property mappings

| Curated Column | Brink Staging Table | Brink Property Path | Current mapping | Status | Notes |
|---|---|---|---|---|---|
| `loyalty_customer_key` | `N/A` | `N/A` | `NULL` | `Not mapped` | Warehouse-generated key. |
| `source_system` | `N/A` | `N/A` | `constant 'brink_pos'` | `Derived constant` | Warehouse constant, not a Brink API field. |
| `source_loyalty_customer_id` | `staging.brink_sales2_orders` | `customer_id` | `NULL` | `Not mapped` | Best available customer identifier from Brink staging. |
| `tenant_key` | `N/A` | `N/A` | `NULL` | `Not mapped` | Warehouse-generated tenant key. |
| `tenant_name` | `N/A` | `N/A` | `parameter @tenant_id` | `ETL context` | Tenant metadata is outside the documented Brink staging payloads. |
| `is_current` | `N/A` | `N/A` | `NULL` | `Not mapped` | Warehouse SCD field. |
| `effective_from_utc` | `N/A` | `N/A` | `NULL` | `Not mapped` | Warehouse SCD field. |
| `effective_to_utc` | `N/A` | `N/A` | `NULL` | `Not mapped` | Warehouse SCD field. |
| `_etl_batch_id` | staging.brink_sales2_orders | _etl_batch_id | `_etl_batch_id` | `Mapped` | ETL metadata propagated from staging. |
| `_etl_source_type` | staging.brink_sales2_orders | _etl_source_type | `_etl_source_type` | `Mapped` | ETL metadata propagated from staging. |
| `_etl_ingested_at` | staging.brink_sales2_orders | _etl_ingested_at_utc | `_etl_ingested_at_utc AS _etl_ingested_at` | `Mapped` | ETL metadata propagated from staging. |

## Portal and sample validation

No additional loyalty-customer source was confirmed in the Brink portal WSDLs or in the available `temp` responses.
