Skip to main content

B2B and B2C data models

Propeller supports both B2B and B2C commerce through separate data models. Which REST API resources you use depends on whether you are managing business customers, individual consumers or both.

Key differences

AspectB2BB2C
Primary usersCompanies and their employeesIndividual consumers
Data structureHierarchical (companies → contacts)Flat (individual customers)
Pricing modelNegotiated, customer-specificStandard or customer-specific
User managementRole-based access controlIndividual accounts
Catalog accessRestricted, customer-specificPublic or customer-specific

B2B: companies and contacts

The B2B model is used in environments where a predefined set of customers is allowed access to a webshop or portal. The customer or debtor is a company with a unique debtorId. The contacts are persons within the organization, each with their own email address, telephone number and multiple different invoice, delivery and visiting addresses.

Company (organization)
├── Contact (employee/user)
├── Contact (employee/user)
└── Addresses

Companies contain:

  • Company information (name, tax number, contact details)
  • Organizational hierarchy (parent-child relationships)
  • Inherited settings and permissions
  • Budget and ordering restrictions
  • Address management

Contacts contain:

  • Personal information (name, email, phone)
  • Role-based permissions
  • Order history and preferences

B2B API usage

Create a company:

POST /v2/companies

{
"name": "Acme Corporation",
"taxNumber": "NL123456789B01",
"parent": { "sourceId": "PARENT_COMP", "source": "CRM" }
}

Create a contact within a company:

POST /v2/contacts

{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@acme.com",
"parent": { "sourceId": "ACME_CORP", "source": "CRM" }
}

Get company contacts:

GET /v2/companies/id/123?expands=contacts

B2C: customers

In B2C, there is no company hierarchy. Each buyer is a customer with their own account.

Customer (individual)
├── Personal information
└── Addresses

Customers contain:

  • Personal information (name, email, phone)
  • Order history and preferences
  • Multiple addresses (billing, shipping)
  • Account settings and preferences

B2C API usage

Create a customer:

POST /v2/customers

{
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@email.com",
"phone": "+1234567890"
}

Resource structure

ResourceB2BB2C
CompaniesPrimary organizational unitNot applicable
ContactsUsers within companiesNot applicable
CustomersNot applicablePrimary user unit
OrdersCompany/contact-basedCustomer-based

Integration patterns

B2B: ERP and CRM sync

Sync company data from ERP:

POST /v2/companies/bulk/sourceId

{
"companies": [
{
"sourceId": "ERP_COMP_001",
"source": "SAP_ERP",
"name": "Acme Corporation"
}
]
}

Sync contact data from CRM:

POST /v2/contacts/bulk/sourceId

{
"contacts": [
{
"sourceId": "CRM_CONTACT_001",
"source": "SALESFORCE",
"firstName": "John",
"lastName": "Doe",
"parent": { "sourceId": "ACME_CORP", "source": "CRM" }
}
]
}

B2C: e-commerce sync

Sync customer data from e-commerce platform:

POST /v2/customers/bulk/sourceId

{
"customers": [
{
"sourceId": "SHOP_CUSTOMER_001",
"source": "SHOPIFY",
"firstName": "Jane",
"lastName": "Smith"
}
]
}

Using both models together

Propeller supports using both B2B and B2C models in the same environment. You can use companies and contacts for your B2B operations and customers for your B2C operations simultaneously.

See also

  • Sources for tracking external system identifiers on companies, contacts and customers
  • Lookup Keys for referencing user resources by different identifiers
  • REST API Reference for the full endpoint specification