Customer

Configuration

Learn how to configure customer settings in Omnium, including identification, creation controls, address handling, consent management, and B2B features. This guide covers all customer-related configuration options for administrators and developers.

Customer settings control how customer records are created, validated, and managed throughout Omnium. These settings affect both B2C (private customers) and B2B (business customers) workflows.


Customer identification

These settings control how customers are uniquely identified and validated within the system.

PropertyTypeDefaultDescription
RequireUniqueCustomerEmailsboolfalseWhen enabled, the system enforces unique email addresses across all customers. Attempting to create or update a customer with a duplicate email will fail.
RequireUniqueCustomerPhoneNumbersboolfalseWhen enabled, the system enforces unique phone numbers across all customers. Useful when phone number is a primary identifier.
CustomerIdFieldstringnullUse an alternative field as the customer identifier. Valid values are Email or Phone. When set, the specified field's value is used as the customer ID instead of a system-generated ID.

Enabling unique email or phone number requirements may cause import failures if your existing customer data contains duplicates. Clean up duplicates before enabling these settings.

Sample

"CustomerSettings": {
  "RequireUniqueCustomerEmails": true,
  "RequireUniqueCustomerPhoneNumbers": false,
  "CustomerIdField": "Email"
}

Customer creation control

These settings control when and how customers are automatically created in Omnium.

PropertyTypeDefaultDescription
IsB2CGetOrCreateDisabledboolfalseWhen enabled, disables all automatic B2C (private) customer creation. Existing customers can still be retrieved, but new customers will not be created automatically.
IsB2BGetOrCreateDisabledboolfalseWhen enabled, disables all automatic B2B (business) customer creation. Existing customers can still be retrieved, but new customers will not be created automatically.
IsB2CGetOrCreateFromOrderDisabledboolfalseWhen enabled, prevents B2C customer creation specifically from order processing. Orders can still reference existing customers.
IsB2BGetOrCreateFromOrderDisabledboolfalseWhen enabled, prevents B2B customer creation specifically from order processing. Orders can still reference existing customers.

The "GetOrCreate" settings affect the workflow step that attempts to find or create a customer based on order data. Use the more specific "FromOrder" settings to disable customer creation only during order processing while allowing creation through other channels.

Sample

"CustomerSettings": {
  "IsB2CGetOrCreateDisabled": false,
  "IsB2BGetOrCreateDisabled": false,
  "IsB2CGetOrCreateFromOrderDisabled": true,
  "IsB2BGetOrCreateFromOrderDisabled": true
}

Address configuration

These settings control how customer addresses are validated and stored.

PropertyTypeDefaultDescription
RequiredAddressPropertiesstring[][]List of address field names that must be provided when creating or updating customer addresses. Common values include: Line1, City, PostalCode, CountryCode.
IsStreetNumberSeparatedboolfalseWhen enabled, the street number is stored in a separate field from the street name. Useful for integrations with systems that require separated address components.
UpdateCustomerOnEditShipmentAddressboolfalseWhen enabled, editing a shipment address on an order will also update the corresponding address on the customer record.

Available address properties

The following property names can be used in RequiredAddressProperties:

  • Line1 - Primary address line (street address)
  • Line2 - Secondary address line (apartment, suite, etc.)
  • Line3 - Additional address line
  • City - City name
  • PostalCode - Postal/ZIP code
  • CountryCode - ISO country code
  • State - State or region
  • StreetNumber - House/building number (when separated)

Sample

"CustomerSettings": {
  "RequiredAddressProperties": [
    "Line1",
    "City",
    "PostalCode",
    "CountryCode"
  ],
  "IsStreetNumberSeparated": true,
  "UpdateCustomerOnEditShipmentAddress": true
}

Access control

These settings control how access to customer records is restricted.

PropertyTypeDefaultDescription
RequireStoreIdsForAccessboolfalseWhen enabled, customers are only accessible to users with matching store assignments. Customers must have a StoreIds property containing the stores they belong to, and users can only view/edit customers assigned to their stores.

Store-based access control is useful for multi-store environments where customer data should be segregated by location. This setting affects both the UI and API access.

Sample

"CustomerSettings": {
  "RequireStoreIdsForAccess": true
}

Version tracking and statistics

These settings control customer record versioning and analytics data collection.

PropertyTypeDefaultDescription
TrackVersionsboolfalseWhen enabled, Omnium maintains a version history of customer records. Each update creates a new version, allowing you to view historical changes.
UseStatsCustomerQueuesboolfalseWhen enabled, customer records are copied to dedicated statistics queues for analytics processing. Enable this for advanced customer analytics and reporting.
ExportPrivateCustomersboolfalseWhen enabled, private customers are included in exports to external systems (e.g., ERP integrations).

Sample

"CustomerSettings": {
  "TrackVersions": true,
  "UseStatsCustomerQueues": true,
  "ExportPrivateCustomers": false
}

These settings configure customer consent types for GDPR compliance and marketing preferences.

PropertyTypeDefaultDescription
ConsentTypesarray[]Consent types available for B2C (private) customers. See Consent type object below.
BusinessConsentTypesarray[]Consent types available for B2B (business) customers. See Consent type object below.
FilterOnGlobalConsentsboolfalseWhen enabled, consent filtering applies at a global level rather than per-customer. Use this when consents should be managed centrally.
CopyConsentsToCustomerClubMemberboolfalseWhen enabled, consents from the customer record are automatically synchronized to the associated customer club membership.
PropertyTypeDescription
TypestringUnique identifier for the consent type (e.g., "EmailMarketing", "SMS", "ThirdParty")
ContentstringDescription or translation key for the consent
IsRequiredboolWhether this consent is mandatory for customer registration
IsFeaturedboolWhether this consent should be prominently displayed in the UI

Sample

"CustomerSettings": {
  "ConsentTypes": [
    {
      "Type": "EmailMarketing",
      "Content": "Consent_EmailMarketing",
      "IsRequired": false,
      "IsFeatured": true
    },
    {
      "Type": "SmsMarketing",
      "Content": "Consent_SmsMarketing",
      "IsRequired": false,
      "IsFeatured": true
    },
    {
      "Type": "ThirdPartySharing",
      "Content": "Consent_ThirdPartySharing",
      "IsRequired": false,
      "IsFeatured": false
    }
  ],
  "BusinessConsentTypes": [
    {
      "Type": "B2BNewsletter",
      "Content": "Consent_B2BNewsletter",
      "IsRequired": false,
      "IsFeatured": true
    }
  ],
  "FilterOnGlobalConsents": false,
  "CopyConsentsToCustomerClubMember": true
}

Phone number formatting

These settings control how phone numbers are validated and formatted for customers. Separate settings are available for private and business customers.

PropertyTypeDefaultDescription
PrivateCustomerPhoneFormatSettingsobjectnullPhone number formatting rules for B2C customers. See Phone format settings object below.
BusinessCustomerPhoneFormatSettingsobjectnullPhone number formatting rules for B2B customers. See Phone format settings object below.

Phone format settings object

PropertyTypeDescription
RequireCountryCodeboolWhen true, phone numbers must include a country code
RemoveCountryCodeboolWhen true, country codes are stripped from stored phone numbers
UsePlusInCountryCodeboolWhen true, country codes use the + prefix (e.g., +47)
UseZeroZeroInCountryCodeboolWhen true, country codes use 00 prefix instead of + (e.g., 0047)
DefaultCountryCodestringDefault country code applied when none is provided (e.g., "47" for Norway)
ExpectedPhoneNumberFormatsarrayValidation rules for phone numbers by country. See Phone format object below.

Phone format object

PropertyTypeDescription
CountryCodestringThe country code this format applies to (e.g., "47", "46")
MinExpectedNumberLengthintMinimum number of digits (excluding country code)
MaxExpectedNumberLengthintMaximum number of digits (excluding country code)

Sample

"CustomerSettings": {
  "PrivateCustomerPhoneFormatSettings": {
    "RequireCountryCode": true,
    "RemoveCountryCode": false,
    "UsePlusInCountryCode": true,
    "UseZeroZeroInCountryCode": false,
    "DefaultCountryCode": "47",
    "ExpectedPhoneNumberFormats": [
      {
        "CountryCode": "47",
        "MinExpectedNumberLength": 8,
        "MaxExpectedNumberLength": 8
      },
      {
        "CountryCode": "46",
        "MinExpectedNumberLength": 9,
        "MaxExpectedNumberLength": 10
      }
    ]
  },
  "BusinessCustomerPhoneFormatSettings": {
    "RequireCountryCode": true,
    "UsePlusInCountryCode": true,
    "DefaultCountryCode": "47",
    "ExpectedPhoneNumberFormats": [
      {
        "CountryCode": "47",
        "MinExpectedNumberLength": 8,
        "MaxExpectedNumberLength": 8
      }
    ]
  }
}

Customer relations (B2B)

These settings define relationship types between B2B customers, useful for complex corporate structures where one company may handle invoicing while another receives goods.

PropertyTypeDefaultDescription
RelationTypesarray[]Available relationship types between customers. See Customer relation object below.

Customer relation object

PropertyTypeDescription
NamestringDisplay name for the relationship type
IsInvoiceReceiverboolWhen true, related customers with this relationship receive invoices
IsGoodsReceiverboolWhen true, related customers with this relationship receive goods

Sample

"CustomerSettings": {
  "RelationTypes": [
    {
      "Name": "InvoiceCustomer",
      "IsInvoiceReceiver": true,
      "IsGoodsReceiver": false
    },
    {
      "Name": "DeliveryCustomer",
      "IsInvoiceReceiver": false,
      "IsGoodsReceiver": true
    },
    {
      "Name": "HeadquartersCustomer",
      "IsInvoiceReceiver": true,
      "IsGoodsReceiver": true
    }
  ]
}

Contact roles (B2B)

These settings define available roles for contacts within B2B customer organizations.

PropertyTypeDefaultDescription
ContactRoleTypesarray[]Available role types for B2B contacts. See Contact role object below.

Contact role object

PropertyTypeDescription
NamestringDisplay name for the contact role

Sample

"CustomerSettings": {
  "ContactRoleTypes": [
    { "Name": "Purchaser" },
    { "Name": "AccountsPayable" },
    { "Name": "TechnicalContact" },
    { "Name": "PrimaryContact" }
  ]
}

Customer categorization

These settings control how customers are categorized and displayed.

Tags

PropertyTypeDefaultDescription
TagSettingsarray[]Available tags for categorizing customers. See Tag object below.

Tag object

PropertyTypeDescription
NamestringTag identifier used in the system
TranslationKeystringTranslation key for displaying the tag in the UI

Default properties

PropertyTypeDefaultDescription
DefaultPropertiesarray[]Custom properties automatically added to new customer records. See Default property object below.

Default property object

PropertyTypeDescription
KeystringProperty name/identifier
ValuestringDefault value for the property
ValueTypestringData type (String, Number, Boolean, Date)
KeyGroupstringOptional grouping for organizing properties
ValueOptionsstring[]Predefined options for dropdown selection
IsCustomValueOptionAllowedboolAllow custom values outside the predefined options
IsMultiSelectEnabledboolAllow selecting multiple values
ReadOnlyboolMake the property read-only after creation

Highlighted external IDs

PropertyTypeDefaultDescription
HighlightedExternalIdsstring[][]External ID types to display prominently on customer records

Customer facets

PropertyTypeDefaultDescription
CustomerFacetsarray[]Filterable facets for customer search. See Facet object below.

Facet object

PropertyTypeDescription
NamestringFacet name/identifier
TypestringFacet type (determines how values are aggregated)
IsCustomPropertyboolWhen true, fetches facet values from the properties list even if a matching field name exists

Sample

"CustomerSettings": {
  "TagSettings": [
    { "Name": "VIP", "TranslationKey": "CustomerTag_VIP" },
    { "Name": "Wholesale", "TranslationKey": "CustomerTag_Wholesale" },
    { "Name": "NewCustomer", "TranslationKey": "CustomerTag_New" }
  ],
  "DefaultProperties": [
    {
      "Key": "CustomerSegment",
      "Value": "",
      "ValueType": "String",
      "ValueOptions": ["Retail", "Wholesale", "Enterprise"],
      "IsCustomValueOptionAllowed": false,
      "IsMultiSelectEnabled": false,
      "ReadOnly": false
    },
    {
      "Key": "PreferredContactMethod",
      "Value": "Email",
      "ValueType": "String",
      "ValueOptions": ["Email", "Phone", "SMS"],
      "IsCustomValueOptionAllowed": false
    }
  ],
  "HighlightedExternalIds": [
    "ERPCustomerId",
    "LoyaltyProgramId"
  ],
  "CustomerFacets": [
    { "Name": "CustomerSegment", "Type": "keyword", "IsCustomProperty": true },
    { "Name": "CountryCode", "Type": "keyword", "IsCustomProperty": false }
  ]
}

Loyalty integration

PropertyTypeDefaultDescription
UseExternalBonusPointsProviderboolfalseWhen enabled, bonus points are managed by an external loyalty system instead of Omnium's built-in customer club. Use this when integrating with third-party loyalty platforms.

When using an external bonus points provider, ensure the appropriate connector is configured to synchronize points data between systems.

Sample

"CustomerSettings": {
  "UseExternalBonusPointsProvider": true
}

PunchOut settings (B2B)

PunchOut settings configure B2B procurement integrations using OCI (Open Catalog Interface) or cXML protocols. These settings enable e-procurement systems to "punch out" to Omnium for catalog browsing and cart creation.

PropertyTypeDefaultDescription
PunchOutSettingsobjectnullConfiguration for B2B PunchOut/OCI integration. See PunchOut settings object below.

PunchOut settings object

PropertyTypeDescription
UnitConversionListsarrayNamed lists for converting between ISO unit codes and OCI unit codes. See Unit conversion list object below.

Unit conversion list object

PropertyTypeDescription
UnitConversionListNamestringDisplay name for the conversion list
UnitConversionListIdstringUnique identifier for the conversion list (assigned to specific B2B customers)
UnitConversionsarrayList of unit code mappings. See Unit conversion object below.

Unit conversion object

PropertyTypeDescription
IsoCodestringStandard ISO unit code (e.g., "PCE", "KGM", "MTR")
OciCodestringOCI/cXML unit code used by the procurement system (e.g., "EA", "KG", "M")

Different procurement systems may use different unit codes. Create separate conversion lists for each customer or procurement system with specific mapping requirements.

Sample

"CustomerSettings": {
  "PunchOutSettings": {
    "UnitConversionLists": [
      {
        "UnitConversionListName": "SAP Standard",
        "UnitConversionListId": "sap-standard",
        "UnitConversions": [
          { "IsoCode": "PCE", "OciCode": "EA" },
          { "IsoCode": "KGM", "OciCode": "KG" },
          { "IsoCode": "MTR", "OciCode": "M" },
          { "IsoCode": "LTR", "OciCode": "L" }
        ]
      },
      {
        "UnitConversionListName": "Oracle Procurement",
        "UnitConversionListId": "oracle-procurement",
        "UnitConversions": [
          { "IsoCode": "PCE", "OciCode": "Each" },
          { "IsoCode": "KGM", "OciCode": "Kilogram" },
          { "IsoCode": "MTR", "OciCode": "Meter" }
        ]
      }
    ]
  }
}

Complete configuration example

Below is a comprehensive example showing all customer settings configured together:

{
  "CustomerSettings": {
    "RequireUniqueCustomerEmails": true,
    "RequireUniqueCustomerPhoneNumbers": false,
    "CustomerIdField": null,
 
    "IsB2CGetOrCreateDisabled": false,
    "IsB2BGetOrCreateDisabled": false,
    "IsB2CGetOrCreateFromOrderDisabled": false,
    "IsB2BGetOrCreateFromOrderDisabled": false,
 
    "RequiredAddressProperties": [
      "Line1",
      "City",
      "PostalCode",
      "CountryCode"
    ],
    "IsStreetNumberSeparated": false,
    "UpdateCustomerOnEditShipmentAddress": true,
 
    "RequireStoreIdsForAccess": false,
 
    "TrackVersions": true,
    "UseStatsCustomerQueues": true,
    "ExportPrivateCustomers": false,
 
    "ConsentTypes": [
      {
        "Type": "EmailMarketing",
        "Content": "Consent_EmailMarketing",
        "IsRequired": false,
        "IsFeatured": true
      },
      {
        "Type": "SmsMarketing",
        "Content": "Consent_SmsMarketing",
        "IsRequired": false,
        "IsFeatured": true
      }
    ],
    "BusinessConsentTypes": [
      {
        "Type": "B2BNewsletter",
        "Content": "Consent_B2BNewsletter",
        "IsRequired": false,
        "IsFeatured": true
      }
    ],
    "FilterOnGlobalConsents": false,
    "CopyConsentsToCustomerClubMember": true,
 
    "PrivateCustomerPhoneFormatSettings": {
      "RequireCountryCode": true,
      "RemoveCountryCode": false,
      "UsePlusInCountryCode": true,
      "UseZeroZeroInCountryCode": false,
      "DefaultCountryCode": "47",
      "ExpectedPhoneNumberFormats": [
        {
          "CountryCode": "47",
          "MinExpectedNumberLength": 8,
          "MaxExpectedNumberLength": 8
        }
      ]
    },
    "BusinessCustomerPhoneFormatSettings": {
      "RequireCountryCode": true,
      "UsePlusInCountryCode": true,
      "DefaultCountryCode": "47",
      "ExpectedPhoneNumberFormats": [
        {
          "CountryCode": "47",
          "MinExpectedNumberLength": 8,
          "MaxExpectedNumberLength": 8
        }
      ]
    },
 
    "RelationTypes": [
      {
        "Name": "InvoiceCustomer",
        "IsInvoiceReceiver": true,
        "IsGoodsReceiver": false
      },
      {
        "Name": "DeliveryCustomer",
        "IsInvoiceReceiver": false,
        "IsGoodsReceiver": true
      }
    ],
 
    "ContactRoleTypes": [
      { "Name": "Purchaser" },
      { "Name": "AccountsPayable" },
      { "Name": "TechnicalContact" }
    ],
 
    "TagSettings": [
      { "Name": "VIP", "TranslationKey": "CustomerTag_VIP" },
      { "Name": "Wholesale", "TranslationKey": "CustomerTag_Wholesale" }
    ],
 
    "DefaultProperties": [
      {
        "Key": "CustomerSegment",
        "Value": "",
        "ValueType": "String",
        "ValueOptions": ["Retail", "Wholesale", "Enterprise"],
        "IsCustomValueOptionAllowed": false,
        "IsMultiSelectEnabled": false,
        "ReadOnly": false
      }
    ],
 
    "HighlightedExternalIds": [
      "ERPCustomerId",
      "LoyaltyProgramId"
    ],
 
    "CustomerFacets": [
      { "Name": "CustomerSegment", "Type": "keyword", "IsCustomProperty": true }
    ],
 
    "UseExternalBonusPointsProvider": false,
 
    "PunchOutSettings": {
      "UnitConversionLists": [
        {
          "UnitConversionListName": "Standard Units",
          "UnitConversionListId": "standard",
          "UnitConversions": [
            { "IsoCode": "PCE", "OciCode": "EA" },
            { "IsoCode": "KGM", "OciCode": "KG" }
          ]
        }
      ]
    }
  }
}