Find your content:

Search form

You are here

How can I build an app for a company that has two very distinct types of customers?


I am working on building an app for a startup company on the platform, and I am struggling to find the best way to set up and distinguish between two very distinct customer types.

The customer types:

  1. Standard B2B type customers, which will purchase hardware and software and maintain an ongoing relationship with the company
  2. B2C type customers (generally will be many more of these than of the B2Bs) who purchase a service (similar to a loyalty program) from the company.

The company acts as a middleman between the two customer types, but sells products and services on both sides.

Any thoughts on the best way to set this up without using person-accounts (which I am forced to work with now at another company, and can't stand)?


Attribution to: jackerman09

Possible Suggestion/Solution #1

Maybe you could use "Record Types" to route your business process workflow to maintain a distinction between the type types of customers.

Attribution to: jordan.baucke

Possible Suggestion/Solution #2

I think this question is focused on how to structure the Account and Contact objects. You could create an enforced one-to-one Account-Contact model by using triggers to query the number of contacts for each B2C account, and to throw an error if more than one contact exists. You'll also want to enforce exactly one contact on every account edit (but not on create). Triggering the creation of a new contact for those accounts after insert would also be a good idea. Essentially, you'll need to use two Account record types, might need two contact record types, efficient triggers, and two Opportunity record types so you can use two sales processes.

Attribution to: DavidSchach

Possible Suggestion/Solution #3

It's not a very delicate tool, but you could float the idea of using an "Individual Client" type of master-account (what the actual account TBD). All B2C client/customers can belong to this master account. I've set some orgs up that way.

Benefits: easy to implement, easy to use. Drawbacks: not as elegant when it comes to reporting, metrics, etc.

If the business process warrants, you can also leverage record types and workflow rules to key off of whether the Contact/Account is B2B or B2C.

Attribution to: pdxjake

Possible Suggestion/Solution #4

I too would suggest having record types on the Account object - one for your B2C Accounts and one for the B2B Accounts. In this way, you could have separate page layouts and fields for each type of contact, but avoid having to use Person Accounts.

Attribution to: Shannon Dykes

Possible Suggestion/Solution #5

Whenever I start a new design with many implementation options I like to work backwards from what I want the end result to be and figure out the implementation based on that. The best way to set things up usually suggests itself. Here are a few questions to get you started.

  1. Will B2C customers use standard account functionality? (opportunities, contacts underneath them, etc.)
  2. When they search for and report on B2C and B2B customers will they want them to be completely separated (i.e. separate objects) or will they want them on the same reports/dashboards?
  3. Could a B2C customer ever convert to a B2B customer and vice-versa? This is much easier to do if you have them as recordtypes of account.
  4. Will a B2C customer always be related to a B2B account?

Attribution to: Greg Grinberg

Possible Suggestion/Solution #6

I would strongly advocate against going with one master account for many contacts model (B2C). We had a serious record locking issue with this implementation due to the way Salesforce locks the parent for each detail record update. Any update to the contact will lock the account record. So if you had many threads updating different contact records on the same account then will land into locking issues.

Here is an article from Salesforce that talks about the lock issue in detail

Attribution to: DCBoy

Possible Suggestion/Solution #7

Use standard Account and Contact object for the B2B side of things. And use Person Accounts (you will need to request to have these turned on, typically takes < 24 hours) for the B2C customers. Person accounts are an amalgamation of the Account and Contact records.

You can

Attribution to: David Gillen
This content is remixed from stackoverflow or stackexchange. Please visit

My Block Status

My Block Content