Skip to content

Customer Data Model

🏗️ Primary Entities

Customers: Individual or business customers with personal info, addresses, and preferences

Contacts: Primary and secondary email and phone records

Consent: Subscription and communication consent statuses

🔗 Key Relationships

Many-to-One: Customer → Tenant (each customer belongs to one tenant)

Many-to-One: Customer → Shop (primary shop assignment)

Core identification fields linking customers to tenants and shops.

Field NameData TypeDescriptionRequired
STEER_TENANT_IDString (UUID)Unique tenant identifier (parent organization)Yes
STEER_SHOP_IDString (UUID)Primary shop location identifierYes
STEER_CUSTOMER_IDString (UUID)Unique customer identifierYes
EXTERNAL_CUSTOMER_IDStringCustomer identifier(s) in the external source system (shop management system). When a customer maps to multiple current external records, the identifiers are returned as a comma-separated list (delimiter is , — comma followed by a space), sorted ascendingNo

Customer name and classification details.

Field NameData TypeDescriptionRequired
CUSTOMER_FIRST_NAMEStringCustomer first nameNo
CUSTOMER_LAST_NAMEStringCustomer last nameNo
CUSTOMER_COMPANY_NAMEStringCompany name (for business customers)No
CUSTOMER_TYPEStringCustomer classification typeYes

Physical address with geolocation and validation status.

Field NameData TypeDescriptionRequired
CUSTOMER_ADDRESS_1StringPrimary street addressNo
CUSTOMER_ADDRESS_2StringSecondary address line (suite, unit, etc.)No
CUSTOMER_CITYStringCity nameNo
CUSTOMER_STATEStringState or province nameNo
CUSTOMER_ZIPCODEStringPostal/ZIP codeNo
CUSTOMER_ADDRESS_VALIDATION_STATUSStringAddress validation statusNo
CUSTOMER_LATITUDENumberAddress latitude coordinateNo
CUSTOMER_LONGITUDENumberAddress longitude coordinateNo

Primary email and phone contact details.

Field NameData TypeDescriptionRequired
CUSTOMER_PRIMARY_EMAILStringPrimary email addressNo
CUSTOMER_EMAIL_VALIDATION_STATUSStringPrimary email validation statusNo
CUSTOMER_PRIMARY_PHONEStringPrimary phone numberNo
CUSTOMER_PRIMARY_PHONE_TYPEStringPhone line typeNo
CUSTOMER_PRIMARY_PHONE_LABELStringFree-form phone label (e.g., “Home”, “Work”)No
CUSTOMER_PHONE_VALIDATION_STATUSStringPrimary phone validation statusNo

Additional email and phone records aggregated as comma-separated lists.

Field NameData TypeDescriptionRequired
CUSTOMER_OTHER_EMAILSStringComma-separated list of non-primary email addresses (delimiter is , — comma followed by a space, e.g., a@example.com, b@example.com). Secondary contacts do not have individual validation status fieldsNo
CUSTOMER_OTHER_PHONESStringComma-separated list of non-primary phone numbers (delimiter is , — comma followed by a space). Secondary contacts do not have individual validation status fieldsNo

Communication consent statuses for marketing compliance.

Field NameData TypeDescriptionRequired
CUSTOMER_EMAIL_SUBSCRIPTION_STATUSStringEmail marketing consent statusNo
CUSTOMER_TEXT_SUBSCRIPTION_STATUSStringSMS/text messaging consent statusNo
CUSTOMER_DIRECT_MAIL_SUBSCRIPTION_STATUSStringDirect mail consent statusNo
CUSTOMER_BLOCKED_INCOMING_STEERBooleanWhether the customer is blocked from incoming Steer communicationsNo
Field NameData TypeDescriptionRequired
CUSTOMER_BIRTHDAYStringCustomer date of birth in YYYY-MM-DD format (e.g., 1990-05-15)No
CUSTOMER_INSURANCEStringCustomer insurance provider name (free-text, e.g., State Farm, Geico)No
Field NameData TypeDescriptionRequired
STEER_CREATED_ATTimestampCustomer record creation timestamp in Steer (UTC)Yes
STEER_UPDATED_ATTimestampLast modification timestamp for this customer record (UTC)Yes
  • Person: Individual customer
  • Business: Business/company customer

Complete API response example with a customer record:

{
"data": [
[
"f2e3d4c5-b6a7-8901-2345-6789abcdef01",
"c3d4e5f6-a7b8-9012-3456-789abcdef012",
"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"1004578, 2231987",
"Sarah",
"Johnson",
null,
"Person",
"123 Main St",
"Apt 4B",
"New York",
"New York",
"10001",
"Valid",
"40.712776",
"-74.005974",
"sarah.johnson@example.com",
"Valid",
"+1-212-555-0123",
"Mobile",
"Personal",
"Valid",
null,
null,
"Eligible",
"Eligible",
"NotEligible",
false,
"1990-05-15",
null,
"2024-06-15T14:30:00.000Z",
"2025-03-10T05:00:01.701Z"
]
],
"metadata": {
"rowType": [
{"name": "STEER_TENANT_ID", "type": "text"},
{"name": "STEER_SHOP_ID", "type": "text"},
{"name": "STEER_CUSTOMER_ID", "type": "text"},
{"name": "EXTERNAL_CUSTOMER_ID", "type": "text"},
{"name": "CUSTOMER_FIRST_NAME", "type": "text"},
{"name": "CUSTOMER_LAST_NAME", "type": "text"},
{"name": "CUSTOMER_COMPANY_NAME", "type": "text"},
{"name": "CUSTOMER_TYPE", "type": "text"},
{"name": "CUSTOMER_ADDRESS_1", "type": "text"},
{"name": "CUSTOMER_ADDRESS_2", "type": "text"},
{"name": "CUSTOMER_CITY", "type": "text"},
{"name": "CUSTOMER_STATE", "type": "text"},
{"name": "CUSTOMER_ZIPCODE", "type": "text"},
{"name": "CUSTOMER_ADDRESS_VALIDATION_STATUS", "type": "text"},
{"name": "CUSTOMER_LATITUDE", "type": "real"},
{"name": "CUSTOMER_LONGITUDE", "type": "real"},
{"name": "CUSTOMER_PRIMARY_EMAIL", "type": "text"},
{"name": "CUSTOMER_EMAIL_VALIDATION_STATUS", "type": "text"},
{"name": "CUSTOMER_PRIMARY_PHONE", "type": "text"},
{"name": "CUSTOMER_PRIMARY_PHONE_TYPE", "type": "text"},
{"name": "CUSTOMER_PRIMARY_PHONE_LABEL", "type": "text"},
{"name": "CUSTOMER_PHONE_VALIDATION_STATUS", "type": "text"},
{"name": "CUSTOMER_OTHER_EMAILS", "type": "text"},
{"name": "CUSTOMER_OTHER_PHONES", "type": "text"},
{"name": "CUSTOMER_EMAIL_SUBSCRIPTION_STATUS", "type": "text"},
{"name": "CUSTOMER_TEXT_SUBSCRIPTION_STATUS", "type": "text"},
{"name": "CUSTOMER_DIRECT_MAIL_SUBSCRIPTION_STATUS", "type": "text"},
{"name": "CUSTOMER_BLOCKED_INCOMING_STEER", "type": "boolean"},
{"name": "CUSTOMER_BIRTHDAY", "type": "text"},
{"name": "CUSTOMER_INSURANCE", "type": "text"},
{"name": "STEER_CREATED_AT", "type": "timestamp_ntz"},
{"name": "STEER_UPDATED_AT", "type": "timestamp_ntz"}
]
}
}