Customer
A person or organization that purchases goods or services from a business. Supports both B2C (individual consumers) and B2B (business customers) with financial tracking, loyalty programs, and segmentation capabilities.
Properties
| Property | Type | Mode | Description | Required |
|---|---|---|---|---|
| customerNumber | string | stored | Unique customer identifier or account number assigned by the business Example: | Required |
| customerType | string | enum | Type of customer - 'individual' for B2C (person), 'business' for B2B (organization) Values: Example: | Required |
| person | Person | stored | Reference to Person entity for B2C customers (when customerType is 'individual') | Optional |
| organization | Organization | stored | Reference to Organization entity for B2B customers (when customerType is 'business') | Optional |
| status | string | enum | Current customer account status (active, inactive, suspended, pending, blacklisted) Values: Example: | Required |
| registrationDate | Date | stored | Date when the customer account was created Example: | Required |
| lastModifiedDate | DateTime | stored | Date and time when the customer record was last modified Example: | Optional |
| isGuest | boolean | stored | Whether this is a guest checkout customer (no account registration required for purchase). Found in 30-60% of e-commerce transactions | Optional |
| guestConvertedAt | DateTime | stored | Date and time when a guest customer was converted to a registered customer account | Optional |
| firstPurchaseDate | Date | computed | Date of the customer's first purchase Example: | Optional |
| lastPurchaseDate | Date | computed | Date of the customer's most recent purchase Example: | Optional |
| totalOrders | number | computed | Total number of orders placed by the customer Example: | Optional |
| totalRevenue | MonetaryAmount | computed | Total lifetime revenue from this customer | Optional |
| averageOrderValue | MonetaryAmount | computed | Average value per order | Optional |
| preferredCurrency | Currency | stored | Customer's preferred currency for pricing and invoices | Optional |
| timezone | string | stored | Customer's timezone in IANA format (e.g., 'America/New_York', 'Europe/Paris') for scheduling and time-sensitive communications Example: | Optional |
| creditLimit | MonetaryAmount | stored | Maximum credit allowed for B2B customers (null for B2C or unlimited credit) | Optional |
| currentBalance | MonetaryAmount | computed | Current outstanding balance owed by the customer | Optional |
| paymentTerms | PaymentTerm | stored | Default payment terms for B2B customers (Net 30, Net 60, COD, etc.) | Optional |
| taxExempt | boolean | stored | Whether the customer is exempt from sales tax | Optional |
| taxExemptionCertificate | string | stored | Tax exemption certificate number if applicable Example: | Optional |
| loyaltyTier | string | enum | Customer loyalty program tier (Bronze, Silver, Gold, Platinum, VIP) Values: Example: | Optional |
| loyaltyPoints | number | computed | Current loyalty points balance Example: | Optional |
| loyaltyMemberSince | Date | stored | Date when customer joined the loyalty program Example: | Optional |
| customerSegment | string | enum | Marketing or business segment classification (VIP, Regular, New, Dormant, At-Risk, High-Value, etc.) Values: Example: | Optional |
| referralCode | string | stored | Unique referral code for this customer to share with others Example: | Optional |
| referredBy | Customer | stored | Reference to the customer who referred this customer | Optional |
| marketingConsents | CustomerMarketingConsent[] | stored | Marketing communication consent tracking per channel (email, sms, phone, mail, push) with timestamps and IP addresses for GDPR compliance | Optional |
| newsletter | object | stored | Newsletter subscription tracking (separate from general marketing consent) Example: | Optional |
| gdprConsents | CustomerGdprConsent[] | stored | GDPR data processing consent and rights tracking with version history for privacy policy, terms of service, and data processing agreements | Optional |
| communicationPreferences | object | stored | Preferred communication channels and frequency Example: | Optional |
| salesRepresentative | Employee | stored | Assigned sales representative for B2B customers | Optional |
| accountManager | Employee | stored | Assigned account manager for B2B customers | Optional |
| pricingTier | string | enum | Pricing tier for special customer pricing (Standard, Volume, Wholesale, Partner) Values: Example: | Optional |
| discountPercentage | number | stored | Default discount percentage applied to orders (0-100) Example: | Optional |
| annualRevenueTier | string | enum | Annual revenue tier for B2B segmentation (0-1M, 1M-10M, 10M-100M, 100M+) Values: Example: | Optional |
| notes | string | stored | Internal notes about the customer, preferences, or special requirements Example: | Optional |
| tags | CustomerTag[] | stored | Freeform tags for customer categorization and filtering Example: | Optional |
| parentCustomer | Customer | stored | Reference to parent customer in corporate hierarchy for B2B subsidiary relationships | Optional |
| hierarchyLevel | number | computed | Depth level in customer hierarchy (0 = root/top-level customer, 1 = direct subsidiary, 2+ = nested subsidiaries) Example: | Optional |
| changeHistory | ChangeHistory[] | stored | Comprehensive change log tracking all field-level modifications with before/after values for audit trail and regulatory compliance | Optional |
| externalReferences | ExternalReference[] | stored | References to customer records in external systems (Salesforce, SAP, etc.) for integration purposes Example: | Optional |
| dataQuality | object | stored | Data quality metrics and duplicate management Example: | Optional |
| metadata | object | stored | Additional metadata for extensibility and custom fields | Optional |
Examples
Example 1
{
"@type": "Customer",
"customerNumber": "CUST-2024-00123",
"customerType": "individual",
"person": {
"@type": "Person",
"givenName": "Emily",
"middleName": "Rose",
"familyName": "Thompson",
"gender": {
"@type": "Gender",
"code": "F",
"label": "Female"
},
"birthDate": "1988-06-15",
"telecoms": [
{
"@type": "ContactPoint",
"system": "email",
"value": "emily.thompson@email.com",
"use": "home",
"rank": 1
},
{
"@type": "ContactPoint",
"system": "phone",
"value": "+1-555-0167",
"use": "mobile"
}
]
},
"status": "active",
"registrationDate": "2024-01-15",
"lastModifiedDate": "2024-11-10T14:30:00Z",
"isGuest": false,
"firstPurchaseDate": "2024-01-20",
"lastPurchaseDate": "2024-10-15",
"totalOrders": 47,
"totalRevenue": {
"@type": "MonetaryAmount",
"value": 12450.5,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"averageOrderValue": {
"@type": "MonetaryAmount",
"value": 264.9,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"preferredCurrency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
},
"timezone": "America/Los_Angeles",
"taxExempt": false,
"loyaltyTier": "Gold",
"loyaltyPoints": 2450,
"loyaltyMemberSince": "2024-01-15",
"customerSegment": "High-Value",
"referralCode": "REF-EMILY-2024",
"pricingTier": "Standard",
"discountPercentage": 0,
"notes": "Loyal customer. Prefers eco-friendly packaging.",
"tags": [
"loyal",
"eco-conscious",
"frequent-buyer"
],
"dataQuality": {
"qualityScore": 95,
"lastVerifiedAt": "2024-11-01T00:00:00Z",
"isDuplicate": false
}
}Example 2
{
"@type": "Customer",
"customerNumber": "CUST-2024-00789",
"customerType": "business",
"organization": {
"@type": "Organization",
"name": "Northwest Tech Solutions",
"legalName": "Northwest Tech Solutions Inc.",
"status": "active",
"identifier": [
{
"@type": "Identifier",
"system": "EIN",
"value": "98-7654321",
"type": "tax",
"country": "US",
"label": "US Employer Identification Number"
},
{
"@type": "Identifier",
"system": "DUNS",
"value": "987654321",
"type": "financial",
"label": "D-U-N-S Number"
}
],
"address": [
{
"@type": "PostalAddress",
"use": "headquarters",
"label": "Head Office",
"streetAddress": "2500 Technology Boulevard",
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US"
}
],
"numberOfEmployees": 450,
"organizationType": "Corporation"
},
"status": "active",
"registrationDate": "2023-06-10",
"lastModifiedDate": "2024-10-20T16:45:00Z",
"isGuest": false,
"firstPurchaseDate": "2023-06-15",
"lastPurchaseDate": "2024-10-20",
"totalOrders": 124,
"totalRevenue": {
"@type": "MonetaryAmount",
"value": 487650,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"averageOrderValue": {
"@type": "MonetaryAmount",
"value": 3932.66,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"preferredCurrency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
},
"timezone": "America/Los_Angeles",
"creditLimit": {
"@type": "MonetaryAmount",
"value": 100000,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"currentBalance": {
"@type": "MonetaryAmount",
"value": 15650,
"currency": {
"@type": "Currency",
"code": "USD",
"symbol": "$"
}
},
"paymentTerms": {
"@type": "PaymentTerm",
"code": "NET_30",
"label": "Net 30 days",
"daysUntilDue": 30
},
"taxExempt": false,
"loyaltyTier": "Platinum",
"loyaltyPoints": 48765,
"loyaltyMemberSince": "2023-06-10",
"customerSegment": "Enterprise",
"referralCode": "REF-NWTECH-2023",
"salesRepresentative": {
"@type": "Employee",
"givenName": "Michael",
"familyName": "Chen",
"employeeId": "EMP-2024-0042",
"jobTitle": "Senior Sales Executive"
},
"accountManager": {
"@type": "Employee",
"givenName": "Sarah",
"familyName": "Williams",
"employeeId": "EMP-2024-0015",
"jobTitle": "Account Manager"
},
"pricingTier": "Volume",
"discountPercentage": 15,
"annualRevenueTier": "10M-100M",
"notes": "Key account. Quarterly business reviews scheduled. Prefers consolidated monthly invoicing.",
"tags": [
"enterprise",
"tech-industry",
"strategic-account",
"volume-buyer"
],
"externalReferences": [
{
"system": "Salesforce",
"externalId": "0061234567890ABC",
"syncedAt": "2024-10-20T10:00:00Z"
}
],
"dataQuality": {
"qualityScore": 98,
"lastVerifiedAt": "2024-10-01T00:00:00Z",
"isDuplicate": false
}
}Example 3
{
"@type": "Customer",
"customerNumber": "CLIENT-2024-00456",
"customerType": "individual",
"person": {
"@type": "Person",
"givenName": "Sophie",
"middleName": "Marie",
"familyName": "DUBOIS",
"gender": {
"@type": "Gender",
"code": "F",
"label": "Femme"
},
"birthDate": "1992-04-22",
"telecoms": [
{
"@type": "ContactPoint",
"system": "email",
"value": "sophie.dubois@email.fr",
"use": "home",
"rank": 1
},
{
"@type": "ContactPoint",
"system": "phone",
"value": "+33 6 12 34 56 78",
"use": "mobile"
}
]
},
"status": "active",
"registrationDate": "2024-03-10",
"firstPurchaseDate": "2024-03-15",
"lastPurchaseDate": "2024-10-25",
"totalOrders": 28,
"totalRevenue": {
"@type": "MonetaryAmount",
"value": 3845.8,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"averageOrderValue": {
"@type": "MonetaryAmount",
"value": 137.35,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"preferredCurrency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
},
"taxExempt": false,
"loyaltyTier": "Silver",
"loyaltyPoints": 785,
"loyaltyMemberSince": "2024-03-10",
"customerSegment": "Regular",
"referralCode": "REF-SOPHIE-2024",
"pricingTier": "Standard",
"discountPercentage": 0,
"notes": "Cliente fidèle. Apprécie les produits bio et locaux.",
"tags": [
"fidele",
"bio",
"local"
],
"metadata": {
"newsletterSubscribed": true,
"preferredDeliveryTime": "afternoon",
"ecoFriendlyPackaging": true
}
}Example 4
{
"@type": "Customer",
"customerNumber": "CLIENT-2023-01234",
"customerType": "business",
"organization": {
"@type": "Organization",
"name": "Innovatech France",
"legalName": "Innovatech France SAS",
"status": "active",
"identifier": [
{
"@type": "Identifier",
"system": "SIREN",
"value": "987654321",
"type": "registration",
"country": "FR",
"label": "Numéro SIREN"
},
{
"@type": "Identifier",
"system": "SIRET",
"value": "98765432100015",
"type": "registration",
"country": "FR",
"label": "Numéro SIRET"
},
{
"@type": "Identifier",
"system": "VAT",
"value": "FR98987654321",
"type": "tax",
"country": "FR",
"label": "Numéro TVA Intracommunautaire"
}
],
"address": [
{
"@type": "PostalAddress",
"use": "headquarters",
"label": "Siège Social",
"streetAddress": "15 Avenue des Champs-Élysées",
"addressLocality": "Paris",
"postalCode": "75008",
"addressCountry": "FR"
}
],
"numberOfEmployees": 280,
"organizationType": "SAS"
},
"status": "active",
"registrationDate": "2023-02-15",
"firstPurchaseDate": "2023-03-01",
"lastPurchaseDate": "2024-10-18",
"totalOrders": 96,
"totalRevenue": {
"@type": "MonetaryAmount",
"value": 285750,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"averageOrderValue": {
"@type": "MonetaryAmount",
"value": 2976.56,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"preferredCurrency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
},
"creditLimit": {
"@type": "MonetaryAmount",
"value": 75000,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"currentBalance": {
"@type": "MonetaryAmount",
"value": 8920,
"currency": {
"@type": "Currency",
"code": "EUR",
"symbol": "€"
}
},
"paymentTerms": {
"@type": "PaymentTerm",
"code": "NET_60",
"label": "Net 60 jours",
"daysUntilDue": 60
},
"taxExempt": false,
"loyaltyTier": "Platinum",
"loyaltyPoints": 28575,
"loyaltyMemberSince": "2023-02-15",
"customerSegment": "Compte Stratégique",
"referralCode": "REF-INNOVATECH-2023",
"salesRepresentative": {
"@type": "Employee",
"givenName": "Pierre",
"familyName": "MARTIN",
"employeeId": "EMP-2023-0028",
"jobTitle": "Responsable Commercial"
},
"accountManager": {
"@type": "Employee",
"givenName": "Marie",
"familyName": "BERNARD",
"employeeId": "EMP-2023-0012",
"jobTitle": "Gestionnaire de Compte"
},
"pricingTier": "Volume",
"discountPercentage": 12,
"annualRevenueTier": "10M-100M",
"notes": "Compte stratégique. Réunions trimestrielles. Préfère la facturation mensuelle consolidée.",
"tags": [
"entreprise",
"tech",
"compte-strategique",
"volume"
],
"metadata": {
"contractExpiryDate": "2025-02-28",
"annualReviewDate": "2024-12-15",
"preferredCarrier": "Chronopost",
"billingContact": "comptabilite@innovatech.fr"
}
}